1. 程式人生 > >Java開發 2019秋招 面經整理

Java開發 2019秋招 面經整理

從7月底開始,到10月中旬獲得offer

進入面試流程的包括位元組跳動、招銀科技、百度、Keep、華為、花旗、京東、有贊、去哪兒、拼多多、okcoin,收到的offer有華為、招銀、有贊、去哪兒,其他有一面涼、二面涼以及HR面涼等等。

面試中遇到的問題整理如下,僅供參考

計算機網路

  1. TCP、UDP在哪一層?它們之間有什麼差別,哪一個傳輸效率更高,為什麼?分別用於什麼場景?
  2. HTTP和HTTPS的差別,在哪一層?HTTPS怎麼保證安全,伺服器怎麼把證書給客戶端?
  3. 計算機網路五層結構每層做什麼,分別介紹一下
  4. IPV4和IPV6區別
  5. 網路層資料包的頭部有哪些
  6. TCP中的timewait
  7. TCP三次握手,四次揮手流程,其中的狀態
  8. TCP過期時間
  9. TCP頭部有哪些
  10. IP報文頭部資訊
  11. HTTPS的證書在哪裡下載
  12. 在瀏覽器中輸入www.xxx.com的過程
  13. POST和GET的區別
  14. HTTP狀態碼500的含義,其他狀態碼瞭解麼
  15. HTTP怎麼建立長連線
  16. TCP read函式
  17. 怎麼建立程序
  18. TCP包大小
  19. UDP,1兆大小的資料可以直接傳輸麼
  20. IP包大小
  21. HTTP1.1和HTTP2的特點
  22. TCP怎麼保持可靠的

作業系統

  1. 程序和執行緒的差別
  2. 執行緒可以用到程序的哪些資源
  3. 程序的哪些資源可以被執行緒共享
  4. 作業系統會分配給程序哪些資源
  5. 死鎖產生的原因,怎麼預防
  6. 程序的幾個狀態
  7. Linux中程序間通訊的機制,更詳細說明一下
  8. 作業系統用於解決什麼問題

資料庫

  1. 聚簇索引和非聚簇索引
  2. MySQL的索引原理
  3. B+樹和B樹的區別
  4. B樹在什麼場景下用
  5. 內連線和外連線的區別
  6. 資料庫建立索引在哪些欄位建立
  7. 事務的基本特性,詳細解釋一下
  8. 介紹一下索引,索引的優點缺點,為什麼加了索引之後新增、更新、刪除會變慢?如果更新非索引欄位,速度會受到影響麼?
  9. MySQL主從複製怎麼做的

Java基礎

  1. HashMap和HashTable的區別
  2. HashMap是怎麼實現的
  3. HashTable底層是怎麼實現執行緒安全的
  4. Java中的型別轉換,什麼情況顯示轉換,什麼情況隱式轉換
  5. 泛型的好處
  6. 建立執行緒的幾種方式,常用哪種
  7. 執行緒的幾個狀態,什麼情況下會到那些狀態
  8. run()和start()的區別
  9. sleep()和wait()的區別
  10. 垃圾回收的機制,優缺點分析
  11. Java中的基本型別和引用型別,基本型別和引用型別在記憶體分配中的區別
  12. ==和equals()的區別
  13. StringBuilder和StringBuffer的區別
  14. Synchronized和Lock那個快
  15. Java基本型別,基本資料結構
  16. String和StringBuilder
  17. Session和Cookie的區別
  18. 多執行緒訪問會產生的問題
  19. 樂觀鎖和悲觀鎖的實現機制
  20. Java的GC機制,停止複製演算法用在什麼場景下
  21. Java中的閉包什麼意思
  22. 怎麼把byte轉string
  23. 怎麼加鎖
  24. volatile關鍵字解釋一下
  25. int轉byte詳細說明
  26. 跨平臺怎麼轉
  27. 原子性操作
  28. 32為虛擬機器和64位虛擬機器中int的範圍有什麼不同
  29. 兩個物件不同,有沒有可能有相同的hashcode,兩個物件相同,會不會有不同的hashcode
  30. a=a+b和a+=b的區別
  31. i++會不會有執行緒安全問題
  32. int+float最後什麼型別
  33. 3*0.1==0.3成立麼,為什麼
  34. public、protected和private的區別
  35. Java中有哪些異常型別
  36. final 修飾方法的含義
  37. try catch return finally的執行順序
  38. Set中的內容可以重複麼
  39. 怎麼跳出while迴圈
  40. Java的類載入器
  41. 類載入器載入一個類的過程有哪些
  42. 新建一個物件時怎麼分配記憶體
  43. HashMap為什麼在資料較多時用紅黑樹而不是連結串列
  44. 快排和堆排序,什麼情況下用快排,陣列比較有序的情況下用什麼排序
  45. 程式執行慢,怎麼排查
  46. 紅黑樹的特點
  47. 陣列和連結串列的區別,刪除陣列的最後一位和刪除連結串列的最後一位哪個更快,為什麼?
  48. Synchronized是怎麼實現的
  49. 餓漢單例模式是執行緒安全的麼,怎麼實現的
  50. HashMap的key要求,類可以作為key麼
  51. Java怎麼儲存小數點後1000位的小數
  52. 怎麼實現快取,應該使用什麼資料結構
  53. 為什麼有自旋鎖
  54. 執行緒越多越好麼,為什麼
  55. IO多路複用
  56. HashMap內部某個位置節點數目多了為什麼用紅黑樹,為什麼不用二叉搜尋樹

Python

  1. 生成器和迭代器
  2. Python的程序、執行緒、協程

Redis

  1. MySQL和redis的區別
  2. Redis的持久化
  3. RDB怎麼不影響主程序的
  4. Redis和MongoDB的區別
  5. 瞭解Redis的儲存機制麼

軟體工程

  1. 軟體工程的幾個階段
  2. 面向物件特徵,分別解釋,重點是多型性
  3. 介面和類的區別
  4. 構造方法和一般方法的區別

手寫程式碼

  1. 兩個連結串列求交叉節點
  2. 給定長度為n的陣列,給定k,求出其中出現次數大於n/k的
  3. 手寫兩個執行緒,一個傳送訊息,一個接收訊息
  4. 給定字串,找出第一個只出現一次的字元
  5. 手寫單例模式
  6. 傳入一個數組,把陣列中的元素轉為單鏈表
  7. 反轉單鏈表
  8. 傳入一個數組,如果一個元素為0,則對應行和列都置位0
  9. 最大連續子陣列和
  10. 找出出現次數大於陣列長度一半的數字
  11. m行n列,從左上角到右下角有多少種走法
  12. 求兩個字串的最長公共子字串
  13. 氣泡排序以及斐波那契的遞迴版本
  14. 快排
  15. 實現一個棧,有push和pop方法,還有可以獲取最小值O(1)
  16. 兩個字串a 和 b ,判斷下b 是不是 a 打亂順序後的結果。比如 a 是   113 ,b是 311 ,那麼b是a打亂後的結果。寫個方法,引數是2個字串,如果滿足條件返回ture,否則返回false

手寫SQL語句:

  1. 表 名: t ,欄位 :姓名 課程 分數  。寫sql 語句,找出平均分大於80分的課程。

場景

  1. 分散式資料庫,需要從多個數據庫讀取資料並整合,怎麼實現
  2. 100G的一個檔案,每一行都是Long型別的資料,然後系統記憶體1G,怎麼進行排序,需要多少次IO操作,怎麼可以減少IO操作次數

其他

  1. js和C#、Java這些語言的區別
  2. C#和Java的區別
  3. C#、Java和C、C++的區別
  4. C# 和Java中的值傳遞和引用傳遞的區別
  5. C# 索引器
  6. C#委託
  7. 怎麼儲存使用者狀態
  8. c#中的垃圾回收和java的垃圾回收
  9. 前端怎麼跨域
  10. 前端行縮排怎麼做,怎麼獲取另一個函式中的區域性變數,閉包用於那些情況
  11. 快排最壞情況複雜度
  12. 堆排序 調整堆的複雜度
  13. HTML5瞭解哪些
  14. JQuery中的Ajax內部怎麼實現的
  15. Ajax跨域怎麼做
  16. 講一下線性迴歸
  17. CNN是用於做什麼的
  18. 你看了哪些書
  19. 深度學習瞭解哪些,跟上面那個問題相關

 

Linux這塊也需要了解,但是我自己瞭解的比較少,emmmmm