zoukankan      html  css  js  c++  java
  • 2018京东实习生招聘在线笔试知识点总结

    1,Linux下查看文件内容的命令

    cat     由第一行开始显示内容,并将所有内容输出
    tac     从最后一行倒序显示内容,并将所有内容输出
    more    根据窗口大小,一页一页的现实文件内容
    less    和more类似,但其优点可以往前翻页,而且进行可以搜索字符
    head    只显示头几行
    tail    只显示最后几行
    nl      类似于cat -n,显示时输出行号
    tailf   类似于tail -f 
    tailf logfile 动态跟踪日志文件logfile,最初的时候打印文件的最后10行内容。

    2 ,JVM:Xmx是java的一个选项,用来设置你的应用程序能够使用的最大内存数(看好,致使你的应用程序,不是整个jvm),如果你的程序要花很大内存的话,那就需要修改缺省的设置,比如配置tomcat的时候,如果流量啊程序啊都很大的话就需要加大这个值了,不过有一点是要记住的,不要大得超过你的机器的内存,那样你的机器会受不了的,到时候就死翘翘了。

    Xms是另一个设置内存的参数,用它来设置程序初始化的时候内存栈的大小,增加这个值的话你的程序的启动性能会得到提高。不过同样有前面的限制,以及受到xmx的限制

    3,进程的三态模型:

     4,java创建一个对象的几种方法:

      4.1.使用new关键字这是最常见也是最简单的创建对象的方式了。通过这种方式,我们可以调用任意的构造函数(无参的和带参数的)。

    Employee emp1 = new Employee();
    0: new           #19          // class org/programming/mitra/exercises/Employee
    3: dup
    4: invokespecial #21          // Method org/programming/mitra/exercises/Employee."":()V

      4.2.使用Class类的newInstance方法
    我们也可以使用Class类的newInstance方法创建对象。这个newInstance方法调用无参的构造函数创建对象。我们可以通过下面方式调用newInstance方法创建对象:

    Employee emp2 = (Employee) Class.forName("org.programming.mitra.exercises.Employee").newInstance();
    或者
    
    Employee emp2 = Employee.class.newInstance();
    51: invokevirtual    #70    // Method java/lang/Class.newInstance:()Ljava/lang/Object;

      4.3,使用Constructor类的newInstance方法
    和Class类的newInstance方法很像, java.lang.reflect.Constructor类里也有一个newInstance方法可以创建对象。我们可以通过这个newInstance方法调用有参数的和私有的构造函数。

    Constructor<Employee> constructor = Employee.class.getConstructor();
    Employee emp3 = constructor.newInstance();
    111: invokevirtual  #80  // Method java/lang/reflect/Constructor.newInstance:([Ljava/lang/Object;)Ljava/lang/Object;

    这两种newInstance方法就是大家所说的反射。事实上Class的newInstance方法内部调用Constructor的newInstance方法。这也是众多框架,如Spring、Hibernate、Struts等使用后者的原因。想了解这两个newInstance方法的区别,请看这篇Creating objects through Reflection in Java with Example.

      4.4.使用clone方法
    无论何时我们调用一个对象的clone方法,jvm就会创建一个新的对象,将前面对象的内容全部拷贝进去。用clone方法创建对象并不会调用任何构造函数。

    要使用clone方法,我们需要先实现Cloneable接口并实现其定义的clone方法。

    Employee emp4 = (Employee) emp3.clone();
    162: invokevirtual #87  // Method org/programming/mitra/exercises/Employee.clone ()Ljava/lang/Object;

      4.5.使用反序列化
    当我们序列化和反序列化一个对象,jvm会给我们创建一个单独的对象。在反序列化时,jvm创建对象并不会调用任何构造函数。
    为了反序列化一个对象,我们需要让我们的类实现Serializable接口

    ObjectInputStream in = new ObjectInputStream(new FileInputStream("data.obj"));
    Employee emp5 = (Employee) in.readObject();
    261: invokevirtual  #118   // Method java/io/ObjectInputStream.readObject:()Ljava/lang/Object;

    5,HashSet和HashMap的区别

    6,StringBuffer是线程安全,而StringBuilder是线程不安全的

    hashtable是线程安全的,hashmap不是线程安全的

    7,try{ //执行的代码,其中可能有异常。一旦发现异常,则立即跳到catch执行。否则不会执行catch里面的内容 }

    catch { //除非try里面执行代码发生了异常,否则这里的代码不会执行 }

    finally { //不管什么情况都会执行,包括try catch 里面用了return ,可以理解为只要执行了try或者catch,就一定会执行 finally }

    8,单例模式 

    9,TCP/IP各层协议

  • 相关阅读:
    [HAOI2009] 毛毛虫
    [NOI2015]品酒大会
    SDOI2016 生成魔咒
    [POJ2406]字符串的幂
    [SPOJ705]不同的子串
    快速幂和矩阵快速幂
    对于最近的一些日常总结by520(17.10.18)
    思维训练
    趣味性的高智商(贼有意思)的题(坑)
    C++手动开O2优化
  • 原文地址:https://www.cnblogs.com/yfz1552800131/p/8763152.html
Copyright © 2011-2022 走看看