1. 程式人生 > >2018年Java大企業面試問題

2018年Java大企業面試問題

  • Cvte提前批

  • 阿里內推

  • 便利蜂內推

  • 小米內推

  • 金山wps內推

  • 多益網路

  • 拼多多學霸批

  • 搜狗校招

  • 塗鴉移動

  • 中國電信it研發中心

  • 中興

  • 華為

  • 蘇寧內推

  • 美團內推

  • 百度

  • 騰訊

  • 招商銀行信用卡

  • 招銀網路科技

  • 網易

  • Vivo

Cvte提前批

一面(電話)

  1. 自我介紹

  2. 介紹你的專案

  3. 加密解密瞭解麼?幾種演算法,講一下你瞭解的

  4. 多執行緒瞭解麼?什麼是執行緒安全?

  5. 說一個你最熟悉的設計模式

  6. 講一下你專案中用到了哪些設計模式

  7. Java的hashmap的原理

  8. Hashmap的執行緒安全性,什麼是執行緒安全的?如何實現執行緒安全

二面(視訊)

  1. 自我介紹

  2. 介紹專案

  3. Mysql的資料庫引擎,區別特點

  4. 設計模式瞭解?講一下最熟悉的

  5. 寫一個單例模式,答主寫的是雙檢查鎖單例,問了為什麼用Volatile,synchronize移到方法最外面會怎麼樣?

  6. 單例模式在你專案裡哪些應用?

  7. 資料連線池

  8. 對高負載有了解麼

  9. 你意向的技術方向是哪塊?(答主回答的高併發,然後面試官說他是做高負載的)

  10. 對高併發有了解麼?

阿里內推

一面(電話)

  1. 聽說你有部落格,部落格裡大概有什麼內容?

  2. 專案介紹,最複雜的表

  3. Hashmap的原理

  4. Hashmap為什麼大小是2的冪次

  5. 介紹一下紅黑樹

  6. Arraylist的原理

  7. 場景題:設計判斷論文抄襲的系統

  8. 堆排序的原理

  9. 抽象工廠和工廠方法模式的區別

  10. 工廠模式的思想

  11. object類你知道的方法

  12. 哪裡用到了工廠模式

  13. Forward和redirect的區別

二面(視訊)

1,  自我介紹
2,  專案介紹
3,  專案架構
4,  專案難點
5,  Synchronize關鍵字為什麼jdk1.5後效率提高了
6,  執行緒池的使用時的注意事項
7,  Spring中autowire和resourse關鍵字的區別
8,  Hashmap的原理
9,  Hashmap的大小為什麼指定為2的冪次
10, 講一下執行緒狀態轉移圖
11, 訊息隊列了解麼
12, 分散式瞭解麼

便利蜂內推

一面(電話)

  1. 自我介紹

  2. 專案介紹

  3. volatile和synchronized

  4. 來個演算法題:一個無序陣列,其中一個數字出現的次數大於其他數字之和,求這個數字 (主元素)

  5. 答完再來一個:一個數組,有正有負,不改變順序的情況下,求和最大的最長子序列

  6. 專案用到什麼資料庫?隔離級別?每個隔離級別各做了什麼

  7. 資料庫的索引?mysql不同引擎索引的區別

  8. 垃圾回收演算法的過程

  9. 你瞭解的垃圾收集器? Cms收集器的過程

  10. 怎樣進入老年代?

  11. 平時用到了什麼設計模式?

  12. 講一下你最熟的兩個設計模式

  13. 用過什麼系統?shell寫過指令碼嗎?

小米內推

一面(電話)

  1. 自我介紹

  2. 看你最近部落格寫的是redis,介紹redis和mysql的區別

  3. Redis的應用場景

  4. Hashmap的原理

  5. Hashmap中jdk1.8之後做了哪些優化

  6. 垃圾回收的過程

  7. Jvm的引數設定

  8. 專案中的優化

金山wps內推

一面(電話)

  1. 自我介紹

  2. 專案介紹

  3. 對Java的面向物件的理解

  4. 對java多執行緒的理解

  5. 資料庫的索引

  6. 資料庫的隔離級別

  7. 設計模式的理解

  8. 講幾個設計模式

  9. 對演算法有什麼瞭解?答主先回答了動態規劃,解釋了一下dp的思想

  10. 快排的思想講一下

二面(電話)

  1. 自我介紹

  2. 專案介紹

  3. Tcp怎麼保證可靠傳輸(中間穿插了好多小問題)

  4. Tcp的擁塞控制

  5. 讓你設計一個即時聊天的系統

  6. 支付寶轉賬,是如何實現,幾個小時通知轉賬成功的(面試官想讓回答長連線,答主一直沒get到點)

  7. 解釋一下長連線

多益網路

一面(視訊)

  1. 自我介紹

  2. 對面向物件的理解

  3. 介紹多型

  4. Java新建執行緒有哪幾種方式

  5. 執行緒池的作用

  6. 看過框架原始碼麼

拼多多學霸批

一面(現場面)

  1. 自我介紹

  2. 專案介紹

  3. 手撕演算法:一棵二叉排序樹,給定一個數,找到與給定數差值最小的數

  4. 場景題:設計一個系統,解決搶購時所需要的大量的短連結的功能,如何保證高併發,如何設計短連結

二面(現場面)

  1. 程式碼量多少

  2. 給了一張紙,各種名詞,會的寫出來

  3. 然後給它解釋那些會的

  4. 設計題:設計一個系統,記錄qq使用者前一天的登入狀態,提供16g記憶體和2tb的硬碟,要做到查詢指定qq號的前一天的登入狀態,快速查詢O(1)複雜度

搜狗校招

一面(現場):

  1. 自我介紹

  2. 專案介紹

  3. 手撕演算法:兩個排序的陣列A和B分別含有m和n個數,找到兩個排序陣列的中位數,答主用的二分,時間複雜度為O(log (m+n))。結果面試官不滿意,讓用歸併的思想做,時間複雜度其實更高了

  4. 介紹網路程式設計

塗鴉移動

一面(現場)

  1. 自我介紹

  2. 專案介紹

  3. 資料庫的索引原理

  4. 索引使用的注意事項

  5. 資料庫的引擎

  6. Java垃圾回收機制

  7. Java的finalize,finally,final三個關鍵字的區別和應用場景

  8. String類可以被繼承麼
    手撕演算法:假設你是一個專業的竊賊,準備沿著一條街打劫房屋。每個房子都存放著特定金額的錢。你面臨的唯一約束條件是:相鄰的房子裝著相互聯絡的防盜系統,且 當相鄰的兩個房子同一天被打劫時,該系統會自動報警。
    給定一個非負整數列表,表示每個房子中存放的錢, 算一算,如果今晚去打劫,你最多可以得到多少錢 在不觸動報警裝置的情況下。

二面(電話)

  1. 自我介紹

  2. 對遊戲的瞭解

  3. 專案介紹

  4. 演算法題:給一個整數陣列,找到兩個數使得他們的和等於一個給定的數 target。

  5. 紅黑樹

  6. Redis的應用

中國電信it研發中心

一面(現場)

  1. 自我介紹

  2. 專案介紹

  3. 專案裡用的什麼伺服器

  4. 自己寫一個tomcat伺服器,你會怎麼寫

  5. 分散式伺服器會出現哪些問題

  6. 怎麼解決session一致性快取的問題

  7. Redis的優勢和特點

  8. 一千萬使用者併發搶購,怎麼設計

  9. 如果成功的使用者有10萬,redis存不下怎麼處理

  10. 你專案中的難點

二面(現場)

  1. 自我介紹

  2. 專案介紹

  3. 介紹spring中的熟悉的註解

  4. 讓你實現autowire註解的功能你會如何實現

  5. Redis和mysql的區別

  6. Redis的持久化有哪些方式,具體原理

中興

專業面(現場)

  1. 自我介紹

  2. 專案介紹

  3. 你瞭解的設計模式,講兩個

  4. Java collection類,集合,講兩個你瞭解的,說實現原理

  5. Java執行緒池的作用

  6. 你覺得你在你實驗室處於什麼水平

綜合面試(現場)

說好的綜合面試純聊天呢?
1.  自我介紹
2.  專案介紹
3.  說一下你知道的設計模式
4.  畫一個策略模式的uml圖
5.  Java多執行緒的理解
6.  記憶體屏障是什麼
7.  資料庫索引
8.  專案中的優化
9.  然後開始聊人生
10. 你的缺點,你最不喜歡什麼樣的人,你的家庭等等

華為

一面(現場)

  1. 自我介紹

  2. 專案介紹

  3. 專案架構

  4. 專案一個完整的執行流程(由於我是搞java的,而面試官是搞c的,所以全程尬聊)

  5. 專案優化

二面(現場)

  1. 自我介紹

  2. 專案介紹

  3. 怎麼管理專案進度

  4. 平常的愛好

  5. 感覺面試官也不是搞java的,所以又是一陣尬聊

蘇寧內推

一面(現場)

  1. 自我介紹

  2. 專案介紹

  3. 面過哪些公司了

  4. 有哪些offer了

  5. 聊到多益,於是開始聊最近微博上很火的多益老闆

  6. 得出結論,我和麵試官都覺得多益老闆三觀有問題,但做遊戲就是要偏執的人

  7. 你部落格主要哪方面的

  8. 多執行緒併發包瞭解麼

  9. 講一下countDownLatch

蘇寧聊了20分鐘八卦就面完了,一輪技術面

美團內推

一面(電話)

  1. 自我介紹

  2. 專案介紹

  3. Redis介紹

  4. 瞭解redis原始碼麼

  5. 瞭解redis叢集麼

  6. Hashmap的原理

  7. hashmap容量為什麼是2的冪次

  8. hashset的原始碼

  9. object類你知道的方法

  10. hashcode和equals

  11. 你重寫過hashcode和equals麼,要注意什麼

  12. 假設現在一個學生類,有學號和姓名,我現在hashcode方法重寫的時候,只將學號參與計算,會出現什麼情況?

  13. 往set裡面put一個學生物件,然後將這個學生物件的學號改了,再put進去,可以放進set麼?並講出為什麼

  14. Redis的持久化?有哪些方式,原理是什麼?

  15. 講一下穩定的排序演算法和不穩定的排序演算法

  16. 講一下快速排序的思想

二面(現場)

  1. 自我介紹

  2. 講一下資料的acid

  3. 什麼是一致性

  4. 什麼是隔離性

  5. Mysql的隔離級別

  6. 每個隔離級別是如何解決

  7. Mysql要加上nextkey鎖,語句該怎麼寫

  8. Java的記憶體模型,垃圾回收

  9. 執行緒池的引數

  10. 每個引數解釋一遍

  11. 然後面試官設定了每個引數,給了是個執行緒,讓描述出完整的執行緒池執行的流程

  12. Nio和IO有什麼區別

  13. Nio和aio的區別

  14. Spring的aop怎麼實現

  15. Spring的aop有哪些實現方式

  16. 動態代理的實現方式和區別

  17. Linux瞭解麼

  18. 怎麼檢視系統負載

  19. Cpu load的引數如果為4,描述一下現在系統處於什麼情況

  20. Linux,查詢磁碟上最大的檔案的命令

  21. Linux,如何檢視系統日誌檔案

  22. 手撕演算法:leeetcode原題 22,Generate Parentheses,給定 n 對括號,請寫一個函式以將其生成新的括號組合,並返回所有組合結果。

三面(現場)

三面沒怎麼問技術,問了很多技術管理方面的問題

  1. 自我介紹

  2. 專案介紹

  3. 怎麼管理專案成員

  4. 當意見不一致時,如何溝通並說服開發成員,並舉個例子

  5. 怎麼保證專案的進度

  6. 資料庫的索引原理

  7. 非聚簇索引和聚簇索引

  8. 索引的使用注意事項

  9. 聯合索引

  10. 從底層解釋最左匹配原則

  11. Mysql對聯合索引有優化麼?會自動調整順序麼?哪個版本開始優化?

  12. Redis的應用

  13. Redis的持久化的方式和原理

  14. 技術選型,一個新技術和一個穩定的舊技術,你會怎麼選擇,選擇的考慮有哪些

  15. 說你印象最深的美團點評技術團隊的三篇部落格

  16. 最近在學什麼新技術

  17. 你是怎麼去接觸一門新技術的

  18. 會看哪些書

  19. 怎麼選擇要看的書

百度

一面(現場)

  1. 自我介紹

  2. Java中的多型

  3. Object類下的方法

  4. Finalize的作用和使用場景

  5. Hashcode和equals

  6. 為什麼要同時重寫hashcode和equals

  7. 不同時重寫會出現哪些問題

  8. Hashmap的原理

  9. Hashmap如何變執行緒安全,每種方式的優缺點

  10. 垃圾回收機制

  11. Jvm的引數你知道的說一下

  12. 設計模式瞭解的說一下啊

  13. 手撕一個單例模式

  14. 快速排序的思想講一下

  15. 給個數組,模擬快排的過程

  16. 手寫快排

  17. 設計題,一個圖書館管理系統,資料庫怎麼設計,需求自己定

二面(現場)

  1. 自我介紹

  2. 專案介紹

  3. Redis的特點

  4. 分散式事務瞭解麼

  5. 反爬蟲的機制,有哪些方式

  6. 手撕演算法:反轉單鏈表

  7. 手撕演算法:實現類似微博子結構的資料結構,輸入一系列父子關係,輸出一個類似微博評論的父子結構圖

  8. 手寫java多執行緒

  9. 手寫java的soeket程式設計,服務端和客戶端

  10. 程序間的通訊方式

  11. 手撕演算法: 爬樓梯,寫出狀態轉移方程

  12. 智力題:時針分針什麼時候重合

三面(現場)

由於三面面試官不懂java,我不熟c加加,所以全程尬聊

  1. 自我介紹

  2. 專案介紹

  3. 手撕演算法:給定一個數字三角形,找到從頂部到底部的最小路徑和。每一步可以移動到下面一行的相鄰數字上。

  4.  

  5. 然後繼續在這個問題上擴充套件

  6. 求出最短那條的路徑

  7. 遞迴求出所有的路徑

  8. 設計模式講一下熟悉的

  9. 會不會濫用設計模式

  10. 多執行緒條件變數為什麼要在while體裡

  11. 你遇到什麼挫折

騰訊

一面(現場)

  1. 自我介紹

  2. 專案介紹

  3. Hibernate的作用,你的理解

  4. 多執行緒的理解,如何保證執行緒安全

  5. mysql資料庫的引擎和區別

  6. 場景題:千萬使用者搶購,如何處理高併發,並且有一個連結,指向前一天搶購成功的使用者,如何設計這個系統和資料庫

  7. 如果後臺處理搶購請求的伺服器,每次最多承受200的負載,系統該怎麼設計

  8. 手撕演算法:最小公倍數和最大公約數

二面

  1. 自我介紹

  2. 專案介紹

  3. 專案裡一個完整請求的流程

  4. 專案的優化

  5. Hibernate和mybatis的區別

  6. 為什麼用ssh框架

  7. Mysql的容災備份

  8. Redis和memcache 的區別

  9. 為什麼選擇redis

  10. Java的full gc

  11. Full gc會導致什麼問題

招商銀行信用卡

一面

  1. 自我介紹

  2. 分散式事務

  3. 設計模式

  4. 訪問者模式

  5. 裝飾者模式

  6. 有哪些offer

  7. 為什麼還來我們這

招銀網路科技

一面

  1. 自我介紹

  2. 寫一個兩個有序連結串列合併成一個有序連結串列

  3. 死鎖是什麼呢

  4. 怎麼解決死鎖

  5. http請求流程

  6. 為什麼負載均衡

  7. 怎麼實現負載均衡

  8. 資料庫掛了怎麼辦?除了熱備份還有什麼方法

  9. 講講你對spring的理解,不要把ioc和aop背給我聽

二面

  1. 自我介紹

  2. 專案介紹

  3. 演算法:找出兩個陣列相等的數,不能用其他資料結構

  4. 演算法:給定一個數字,一個數組,找出陣列中相加等於這兩個數的和,不能用資料結構

  5. 演算法:如何判斷一個樹是不是另一顆樹的子樹

  6. 如何解決併發訪問的錯誤

網易

一面(現場)

  1. 自我介紹

  2. 專案介紹

  3. I++操作怎麼保證執行緒安全

  4. 場景題:設計一個下單系統,下單成功後可以給使用者發優惠券

  5. 接上面場景題:伺服器掛了,優惠券還沒發怎麼辦

  6. 資料庫掛了怎麼怎麼辦

  7. 怎麼保證一致性

  8. 分散式事務知道麼

  9. 介紹分散式事務

  10. 你的職業規劃

二面

  1. 自我介紹

  2. 專案介紹

  3. Nio的原理

  4. Channel和buffer

  5. directBuffer和buffer的區別

  6. nio和aio的區別

  7. 鎖的實現原理

  8. 怎麼解決快取和主存的一致性問題

  9. 快取還沒更新到主存,伺服器掛了怎麼辦

  10. 資料庫掛了怎麼辦

Vivo

一面

  1. 自我介紹

  2. 專案介紹

  3. Hibernate的batch有數量限制麼

  4. Jquery用過麼

  5. Extjs的優缺點

  6. 有沒有擴充套件過extjs

  7. 讀寫鎖

  8. 什麼時候用讀鎖

  9. 什麼時候用寫鎖

  10. Cas的原理,使用場景

  11. 資料庫的瓶頸

 

附錄面試知識圖

併發多執行緒

加解密

設計模式

資料結構和演算法

Java知識、集合

資料庫引擎、索引、連線池、事物和讀寫鎖、ACID、瓶頸

訊息佇列

分散式、事物、分散式鎖、CAS

虛擬機器、記憶體模型、JVM配置和垃圾回收

Tomcat伺服器、Session一致性

HTTP協議和TCP協議

Spring、SpringBoot、SpringCloud

Redis、Mybatis、Socket、Netty、NIO

專案優化

Linux、Shell指令碼