java研發面經:滴滴、美團、網易、58趕集等

    今年秋招個人面試大體結束了,差很少把提供北京java崗位的互聯網公司大都投一遍,也得到了幾個面試機會,在這兒把面經都和大夥兒分享一下吧。
一、滴滴
    滴滴面試安排是若是你經過了一面,那麼就優先安排後面的面試,因此致使還沒一面的人就得一直苦等。那會兒我是下午一點去的,大概到了快4點才進行一面,後面就嗖嗖嗖地過關斬將到了hr面,也算是運氣不錯吧。
交叉1面
垃圾回收算法
(代碼)01矩陣,相鄰的1是一個島嶼,找出全部島嶼數(遞歸解決)
有關注過開源社區嗎,都看過哪些源碼
AtomicInteger實現原理(CAS自旋)
synchronized和reentrantLock區別
介紹spring的IOC和AOP,分別如何實現(classloader、動態代理)
redis如何處理分佈式服務器併發形成的不一致(自己就是單線程序列化的隔離級別),若是數據庫不提供隔離呢
OSGi的機制(由於簡歷寫了)
交叉2面
2個雞蛋,100高的樓,最少的次數測出雞蛋碎掉的臨界層,沒碎的雞蛋能夠反覆用(沒作出,應該是14次,網上有解法)
大量字符串找出數量最多的K個,考慮內存放得下和放不下兩種狀況
解釋mysql索引、b樹,爲啥不用平衡二叉樹、紅黑樹(磁盤和內存的存儲方式不一樣)
垃圾回收算法,爲何要分代處理
跳錶(不熟,沒繼續)
IO(不熟,沒繼續)
epoll(不熟,沒繼續)
一致性hash
zookeeper如何同步配置(不熟,沒繼續)
講下java鎖的原理
ConcurrentHashMap原理
BOSS面
(代碼)最長迴文子串
GC停頓緣由,如何下降停頓
JVM如何調優、參數怎麼調
如何用工具分析jvm狀態(visualVM看堆中對象的分配,對象間的引用、是否有內存泄漏,jstack看線程狀態、是否死鎖等等)
進程和線程區別
epoll和select區別(不熟,沒繼續)
解釋mysql索引、b樹
hr面
五個詞來描述本身
長期的計劃
興趣愛好
指望薪水
對崗位的要求
已經拿到的offer
   hr告訴我滴滴主要的事業部用的是c和php,進來後發現公司內已經逐漸在用golang替代二者了,可是使用java的部門也有很多。
java崗面
(代碼)含Double數據的list,找出最長連續遞增序列的長度(連續遞增比較簡單,看你代碼質量)
找出最長遞增子序列的長度,說思路(dp算法,複雜度O(n))
mysql中int的最大填充長度(我記得是255,後來查了也是255,但被告知是錯的……),varchar不一樣編碼下的存儲字符個數
寫SQL,多表鏈接查昨天的第二多的值
js題,考察閉包

二、美團
    美團的面試安排在下午,不用早起真好~ 等候區就在1樓,工做人員供了麪包和一次性杯子,旁邊就是運動區,有跑步機、乒乓球桌、桌上足球及一些運動器材,感受環境仍是很不錯的(此處應該吐槽下京東,場面極其混亂)。
       面試一共三輪,會有工做人員叫名字讓你進去面試,就是中間的等待有點久。每輪經過的話就會留下來接着下一面,沒過的話工做人員會告訴你「很抱歉,你今天的面試已經結束了」,特別是在漫長的等待中,周圍的人一個個被「很抱歉」,那個心理壓力可不是通常大。而後就是所有的面試通過,大概整理了下,發現運氣還不錯,均可以答得上來。面試問題只是參照,面試官會根據你的簡從來問針對性的問題,而你也能夠引導他來問你擅長的領域,固然有些基礎的東西仍是必須瞭解的,好比jvm、spring框架、持久化框架、數據庫之類的。
一面
介紹實習經歷,講項目
解釋https (先公私鑰加密,再對稱加密) 爲何不直接公私鑰
jvm中類加載過程,解釋雙親委派加載,及類是在哪一個加載器加載的
傳值、傳引用 傳入對象引用,指向一個new的對象,問主函數裏的會變嗎
找出數組中最多的那個數,除了hashset還有沒其餘方法(只想到蒙特卡羅法)
(代碼)輸入合法的數字字符串,輸出貨幣字符,就是每隔3位加個逗號,考慮邊界處理
(代碼)有1-10 10個數,和一個數sum,計算用10個數連加獲得sum有多少種系數組合(遞歸)
二面
自我介紹,講項目
spring中bean加載機制,bean生成的具體步驟
ioc注入的方式
spring什麼時候建立applicationContext(web.xml中使用listener)
listener是監聽哪一個事件(ServletContext建立事件)
springMVC流程具體敘述下
synchronized和reentrantLock的區別,synchronized用在代碼快、方法、靜態方法時鎖的都是什麼
介紹ConcurrentHashMap原理,用的是哪一種鎖,segment有沒可能增大(不會,只會增大每一個segment中的entry數組)
如何實現高效的同步鏈表
(代碼)層次遍歷二叉樹,偶數層輸出逆序輸出(隊列,用一個標記記錄每一層的結束,統一輸出當前層)
三面
介紹實習經歷,講項目
(代碼)給定一個字符串,寫出全部可能的全排列(遞歸)
剩下的就是問一下hr面的問題:
怎麼理解踏實,你在項目中哪兒體現到了
最近最有成就感的事
你的優勢 缺點
最近在看的技術
是否寫過其餘我的興趣的小項目
寫技術博客嗎,github呢
我的職位目標
    三面的面試官仍是很nice的,最後的部門好像也是由三面的來挑。面試結束次日就讓簽了兩方,待遇也沒得談。

三、網易
   面試等待時間趕超了滴滴,上午10點等到下午兩點纔剛開始一面。hr面結束都5點多了,正遇上下班高峯期,公交又堵了很久,回去後感受渾身都已經無力了。
一面
介紹了下阿里的實習項目,問了下對SOA和OSGi的認識,以及之間的關係
項目中遇到的最難忘的問題,如何解決的(網上搜索、問經驗豐富的、斷點調試跟進源碼、技術論壇發帖)
問了擅長的java領域,針對性提問(jvm、容器、併發)
介紹jvm內存機制(把各個內存區域做用、回收算法、收集器分類通通說了一遍)
建立線程方式(實現runnable接口、集成Thread、線程池)
java都有哪些加鎖方式(synchronized、ReentrantLock、共享鎖、讀寫鎖等)
想讓全部線程都等到一個時刻同時執行有哪些方法(介紹了下CountDownLatch和CyclicBarrier)
volatile的做用(使變量對全部線程可見,同時禁止指令重排序)
都用過哪些java容器,LinkedList都通常都在何時用到(常常插入刪除時、實現隊列和棧時)
介紹ConcurrentHashMap(分段加鎖,幾乎每一個面試都問這個。。。)
Object裏頭都有哪些方法,着重問了clone(深複製仍是淺複製)、finalize(通常在何時用,回收時必定能被運行)
二面
問題和一面差很少,不少重複的就不說了
如何管理線程(介紹了各類線程池的實現)
如何讓線程A等待線程B結束後再執行(join、單線程池),還反問單線程池真的能夠嗎,因此大體和他介紹了下阻塞隊列的機制
如何優化jvm參數(堆大小、xmx通常和xms設成同樣大、永久代大小、收集器選擇、收集器參數、新生代對象年齡閾值等)
hr面
不多見的男hr,性格溫和,談起來很輕鬆愉快
介紹全部的項目
對在阿里的實習如何評價,對mentor如何評價
在阿里有沒什麼讓你比較可惜的地方(內部論壇資源很是豐富,都是大牛的知識帖,後悔看得太少)
喜歡何種風格的領導,是嚴格的技術型仍是寬鬆的管理型
你的職業規劃,轉管理仍是一直技術
喜歡的興趣愛好
針對我寫到的旅遊又問了,去哪兒旅遊過,一般都是如何準備一次旅行的(查各類攻略、作旅行計劃,叫上小夥伴),是否寫遊記呢(不多),對寫遊記的人如何評價(爲他們點贊~)
最近在看什麼書籍呢(各類技術類書籍)
是否能提早來實習
已經拿到的offer
目標薪資

四、58趕集
  58就在798旁邊,面試完後特意去在寒風中感覺了下藝術氣息。簽到的時候能夠看到本身筆試的分數,貌似是按分數排的面試順序。不想更加糾結因此放棄了二面。
一面
終於遇到一位年輕且頭髮還算茂密的面試官了,還蠻熱情的
閒扯了下項目
介紹spring的IOC和AOP,容器的概念(本質就是applicationContext管理了classloader)
bean的建立過程
手寫TCP三次握手(最好把狀態也寫出來),每次請求的序號是如何變化的
TCP如何控制擁塞(擁塞窗口、慢開始、擁塞避免、快重傳、快恢復)
(代碼)N個男生,N個女生,給出全部排列方式,其知足在任意i處(範圍在[0,2n-1]),0-i的女生數都大於男生數(遞歸實現)
知道哪些排序算法,介紹一下快排

五、京東    在某天晚上忽然收到次日早上去京東面試的通知,並且用的仍是電話語音,9月22日讀成九點二二 是什麼鬼!面試現場比較混亂,一邊的人在排着隊,一邊是有負責人出來循環播放「XXX在嗎」……當天只安排一輪面試,大約等了一小時才見到面試官,面試官貌似是作管理的,技術性問題很少。介紹完項目後提出了一些場景問你如何解決,如何實現分佈式,通常在哪兒用redis等等,面試過程很短一下就結束了。回去後半夜又收二面通知,又是那個電話語音,我當時的心裏是崩潰的……可是面試時間和美團的衝突了,而且根本找不到hr聯繫方式,京東的面試就在此止步了。     還有幾家公司的面試,要麼不大合適,要麼就是跪了,就不細說了。但願大夥兒都能找到滿意的工做,特別是到了校招後期,心態可能會變化比較大,能夠來場說走就走的短途旅行緩解下壓力,不要過於苛求本身,祝一切順利!
相關文章
相關標籤/搜索