面试笔记:面经-瓜子
生活随笔
收集整理的這篇文章主要介紹了
面试笔记:面经-瓜子
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 一、自我介紹
- 二、簡歷相關
- 2.1 React Native
- 2.2 印象最深的項目
- 三、Java后臺
- 3.1 線程創建
- 3.2 Java異步實現方式
- 3.3 JVM內存
- 3.4 Java GC
- 3.5 TCP和UDP
- 四、代碼題
- 4.1 反轉鏈表
一、自我介紹
個人背景、項目經歷、實習經歷。
二、簡歷相關
2.1 React Native
2.2 印象最深的項目
三、Java后臺
3.1 線程創建
- 繼承Thread類并重寫該類的run()方法。
- 實現Runnable接口創建線程重寫run()方法。
- 創建Callable接口的實現類并實現call()方法,然后創建該實現類的實例(從java8開始可以直接使用Lambda表達式創建Callable對象)。
3.2 Java異步實現方式
- JDK1.8之前的Future
JDK并發包里的Future代表了未來的某個結果,向線程池中提交任務的時候會返回該對象,可以通過future獲得執行的結果,但是JDK1.8之前的Future有點雞肋,并不能實現真正的異步,需要阻塞的獲取結果,或者不斷的輪詢。 - JDK1.8之后的Future
JDK1.8中提供了lambda表達式,使得Java向函數式語言又靠近了一步。借助JDK原生的CompletableFuture可以實現異步的操作,同時結合lambda表達式大大簡化了代碼量。 - Spring的異步方法
先把longTimeMethod封裝到Spring的異步方法中,這個異步方法的返回值是Future的實例。這個方法一定要寫在Spring管理的類中,注意注解@Async。
3.3 JVM內存
JVM內存區域主要分為:
- 線程私有區域:程序計數器、虛擬機棧、本地方法區。
- 線程共享區域:JAVA堆、方法區。
- 直接內存。
3.4 Java GC
- 如何確定垃圾
(1)引用計數法:通過引用計數來判斷一個對象是否可以回收。即一個對象如果沒有任何與之關聯的引用, 即他們的引用計數都不為0,則說明對象不太可能再被用到,那么這個對象就是可回收對象。
(2)可達性分析:為了解決引用計數法的循環引用問題,Java使用了可達性分析的方法。通過一系列的GC roots對象作為起點搜索。如果在GC roots和一個對象之間沒有可達路徑,則稱該對象是不可達的。不可達對象經過兩次標記為可回收對象,則將面臨回收。 - 垃圾收集算法
(1)標記清除算法:分為兩個階段,標記階段標記需要回收的對象,清除階段回收對象占用的空間。
(2)復制算法:按內存容量將內存劃分為等大小的兩塊。每次只使用其中一塊,當這一塊內存滿后將尚存活的對象復制到另一塊上去,把已使用的內存清掉。
(3)標記整理算法:標記階段和標記清除算法相同,標記后不是清理對象,而是將存活對象移向內存的一端。然后清除端邊界外的對象。
(4)分代收集算法:新生代采用復制算法,老年代采用標記復制算法
3.5 TCP和UDP
- TCP提供面向連接的、可靠的數據流傳輸;
UDP提供的是非面向連接的、不可靠的數據流傳輸。 - TCP傳輸單位稱為TCP報文段;
UDP傳輸單位稱為用戶數據報。 - TCP注重數據安全性;
UDP數據傳輸快,因為不需要連接等待,少了許多操作,但是其安全性一般。
四、代碼題
4.1 反轉鏈表
public static class Node {public int data;public Node next;public Node(int data) {this.data = data;} }public static Node reverseList(Node node) {Node pre = null, next = null;while (node != null) {next = node.next;node.next = pre;pre = node;node = next;}return pre; }總結
以上是生活随笔為你收集整理的面试笔记:面经-瓜子的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用opencv+python识别七段数
- 下一篇: 乐华娱乐IPO搁浅:王一博是旗下艺人 C