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各層協議

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM