面经搜集
頭條學長分享
從開始面試 到現在已經大半年了 和大家分享一下研發崗的簡歷審查和面試考察點:
一、研發崗呢 大家都還是希望要科班的學生(計算機 & 軟件)的 , 如果不是科班的同學, 會關注項目經驗和崗位的匹配程度, 以及學習能力和潛力 (是否有技術博客, 對知識點是否會主動深挖) 簡歷中關于項目的描述是會重點看的,如果對項目的背景,目標,結果有好的描述的(STAR原則:,即Situation(情景)、Task(任務)、Action(行動)和Result(結果)), 這樣是會加分的,對項目有描述和技術架構的, 在后面面試的時候會重點考察技能,判斷候選人在項目里的真實性和參與度。然后是大家寫的技能樹的部分,除了希望對技術的描述準確之外, 描述是否有體系性的思維也是非常重要的。
二. 說完簡歷 然后說說面試時候的考察要點
-
- 1. 心態 : 對待問題是否會深究, 是否有較強的自驅力, 有虛心學習強者的心態
- 2. 溝通 : 是否誠實, 不夸大, 表達流暢, 準確
- 3. 抗壓 : 不輕易放棄 (我一般會針對候選同學不是很熟悉的領域, 連續追問, 看是否主動思考, 持續思考, 不輕易放棄)
?
?
以下內容來自njustlcx的頭條面經
作者:njustlcx
鏈接:https://www.nowcoder.com/discuss/159228
來源:牛客網
Java有哪些常用的線程池
之前還沒來得及準備線程池,哭暈,直接回復不太了解,第一個問題就這么告終,實在有點過意不去。Java基礎太薄弱了。
哪些同步的方式,就是加鎖
用synchronized關鍵字加鎖,還有分段鎖。
追問,怎么理解分段鎖?
之前只顧記概念了,沒能好好理解。瞎胡說一通,說不是對整個數據段加鎖,而是一段一段的加鎖(面試官內心應該是奔潰的),性能比synchronized關鍵字好。
追問,知道哪些數據結構是用分段鎖的嗎?
回答只知道ConcurrentHashMap。
追問,那它是怎么實現分段鎖的,了解過嗎?
回答沒有。
除了這個還有沒有別的數據結構用分段鎖?
回答不是很清楚。
synchronized知道怎么用嗎?
之前沒怎么用過,回答在方法或變量前面使用。面試官內心應該很崩潰了。
知不知道鎖的可重用是一個什么樣的概念?
這個真沒了解過。
數據庫里面的索引了解嗎,可以談談它的結構嗎
hash索引和B+樹索引,如果查詢單條記錄的話,hash索引比較方便。查詢多條記錄的話B+樹索引能夠提高查詢效率。
追問:B+樹和B樹什么區別?
回答:這個好像答反了,哭暈
為什么使用索引查詢會變快呢?
回答:本身數據庫的結構是按頁存儲,不同的頁之間構成一個循環鏈表,頁里面的記錄也是單鏈表。如果不用索引并且數據量比較大的話,查詢效率低。如果用B+樹balabala,說的有點語無倫次。最主要原因還是對B+樹沒那么了解。
知道聚簇索引嗎?
回答:聚簇索引也叫聚集索引。是以主鍵為索引的。
追問:主鍵索引和普通的索引有什么區別
回答:以主鍵索引查詢沒有回表的操作,普通索引的話好像沒有回表的操作。
追問:為什么主鍵索引就不需要回表呢,根本原因是啥?
回答:好像是數據庫里面是以主鍵存儲的。面試官:大致是這個意思
講一下tcp三次握手四次揮手
三次握手主要是為了通信雙方建立一個可靠的通信信道。第一次握手balabala,第二次balabala,第三次balabala。
四次揮手balabala
追問:為什么握手要三次,改成兩次行不行?
回答:沒理解面試官的意思,答偏了。直接說的兩次握手的話接收端無法確認自己是不是發送成功,發送端是不是成功接收。
追問:兩次的話斷開會有什么問題?
我的回答還是建立在三次握手的基礎之上來思考的,沒有拋開三次握手的概念。
算法題,二叉樹的序列化與反序列化
昨天基友剛答過這題,今天又來了。早上還瞄過一眼,感覺應該不會再出現吧,但沒想到還是出現了。用的是前序遍歷的方式對二叉樹進行序列化,反序列化的時候感覺也挺順利的,但后面執行出現了一個bug,好像是有個遞歸的出口沒考慮到,網頁上寫代碼又不像用IDE,還可以debug,一時半會沒找到原因,期間還問了面試官StringBuilder在哪個包下。。。再加上遇到問題解決不了,有點緊張,卡了很久。最后讓我回頭再調試。還是不能太依賴于IDE,要學會在沒有IDE的情況下寫代碼。
問我有沒有什么想問的
我問了三個問題
平時工作如果忙的話,怎么學習自己的東西
會做技術分享,每個月都有人會做技術分享,一個組內,每個人按月份分享。學東西的話在工作中遇到一些問題,解決了也能夠學到一些東西。
怎么學習源碼,有什么策略
一般遇到問題會去源碼那邊跟一下,如果單純學源碼的話,最好按模塊來看,架構是什么樣子的。最好是能夠跑起來,debug看一些數據。
像我們在校學生,平時接觸不到生產上的數據和業務場景,如何提升自己
找實習是最好的,或者自己接項目,做老師的項目。
?
以下內容來自小啾啾的小嘰嘰的頭條面經
作者:小啾啾的小嘰嘰
鏈接:https://www.nowcoder.com/discuss/158930
來源:牛客網
一面
1、一上來就是問項目,有意思的或者說是有難度的(項目簡歷上寫了一堆,含金量都不高)?
A:我就挑了個有意思,一個學校助手小程序,也不知道重點說什么,就把功能和實現方法說了,其實蠻 low 的。
2、HTTP 請求方法?
A:我說5個嘛(其實有8個),說到最后還忘了一個,尷尬。
追問:Post 和 Put 的區別?
A:只說了 POST 的作用,也是一知半解,沒有說清楚。PUT 不知道,哎。
3、Cookie 和 Session 的區別?
A:說了一些基本的區別。
追問:跨域問題?
A:記得看過,結果也不知道說什么了,硬是說了 Session 共享。
HashMap 和 HashTable 的區別?
A:emmmmm... 不會 Java,只會 System.out.println()
7、數據庫索引結構了解嗎?
A:B+ 樹,還有哈希
追問:B+ 樹和 B 樹的區別?
A:腦子里有 B+ 樹結構,看到哪里說哪里
追問:聚集索引?
A:以主鍵為索引的索引,大概就記得這點。還挖坑說了非聚集索引,說到回表時被問為什么會回表,因為有非主鍵字段,然后額,有點說不清楚了。
8、來做個題吧,二叉樹的序列化和反序列化
(Leetcode 原題)一開始還沒搞明白啥意思,光前序或者中序或者后序是不唯一的,后來才明白就是字符串的編解碼。
要實現兩個方法,中序 + 前序 或者 中序 + 后序能唯一確定一個二叉樹,序列化就遍歷結果相接,反序列化就倒推。
面試官提示的時候還說了層序,我就默默的開始想怎么層序,面試官又提示用特殊字符節點代替空節點,emmmm,好吧,開始寫吧。尷尬的是居然不知道咋層序了,知道是用列表存節點遍歷,硬是寫不好(太菜了)。自己越想越亂,而且耳麥里時不時嘈雜,腦子一片空白,亂了亂了。好不容易層序完,反層序又亂了,總之整個過程就很亂,寫的時候還發現序列化的結果有問題(代替所有空節點,形成滿二叉樹,而我卻寫成了只把葉子節點替換了)。
整個過程耗時一個小時,不知道面試官怎么這么有耐心的,尷尬,總之自己是真的菜。
9、還有什么想問的嗎?
先問面試官的在哪個部門工作;字節某個產品的服務請求響應處理是不是按地區劃分(其實我也不知道怎么問);怎么處理海量數據的(幾萬臺主機的集群)
作者:小啾啾的小嘰嘰
鏈接:https://www.nowcoder.com/discuss/158930
來源:牛客網
6、難度比較大的項目?
A:來來來,計量你來,畢竟你是永遠結束不了的項目。亂說一通,就這樣吧
7、做題了,根據用戶閱讀文章的情況(article_id, user_id, ...)統計閱讀量 Top5 的文章
A:第一反應,map 來統計嘛,Python 里字典嘛,然后找統計數最大的五個嘛
追問:程序跑的時候 map 在內存吧,內存很小咋辦?
A:redis,本身就是個 map,能存很多數據嘛(redis 也不清楚底層,也不知道咋存的)
追問:從數據結構上優化?
A:想了許久,額,五個變量存五個最大的。。。尷尬了,意識到想偏了,我想的居然成了找 TOP5 的 article_id,我怕不是個智障。要是要找也是找統計數,那樣還是沒有解決內存放不下 map。
追問:你說的五個變量也可以,。。。
A:被我打斷了,說自己跑偏了。然后就莫名其妙的跑到了 TOP K 問題,最后我就以最大堆結束了這個尷尬的話題。
追問:說一下建堆的邏輯?
A:兩種方法,balabalabala,嗯,就這樣。
一開始說是場景題,也不知道是場景題還是算法題,最后也沒有寫代碼。
8、下一題,滑動窗口,面經里有很多說過
A:最后是要得到滑動窗口最大值集合,想了個方法,說了一通。
追問:那你能實現一下嗎?
A:可以(其實我想說不能)。反反復復調整了幾次代碼結構,邏輯應該沒問題,就讓面試官看了(不用運行,因為題目也是面試官現場描述的,不然可能有問題),然后就給面試說了下詳細思路。
追問:你的算法復雜度怎么樣?
A:最差情況,數組倒序,復雜度 O(n^2),好弱。然后就結束了。
9、你接觸過哪些技術?
A:也不知道說什么。SqlServer?Mysql?Mongodb?Django?Flask?。。。
追問:你現在在關注什么技術?
A:Docker、redis、。。。尷尬,我在學什么,好弱。
?
以下來自yy要加油的頭條面經
鏈接:https://www.nowcoder.com/discuss/158034
來源:牛客網
崗位:后臺研發 時間:一個小時 1.自我介紹 2.介紹一下自己做的比較好的一個項目 3.java中int和Integer的區別,為什么有了int還要有設計Integer 4.java中hashmap的實現原理,講解一下哈希函數 5.手寫算法:判斷一個數是否為二叉樹的路徑節點值之和 6.操作系統中線程和進程的區別- 一個進程是不是可以創建無限數量的線程
- 線程的數量會受到什么限制
- 線程在內存中會占用什么資源
- 講解udp的校驗和
- 講解tcp的校驗和
- tcp的四次揮手過程
- 如果服務器中含有大量一直處于close_wait的tcp連接,是為什么?
以下來自T.G.的頭條面經
一面
-
單鏈表的反轉,不用遞歸的方法。
-
有序數組存在某個值,查找這個值的下標,有則輸出,無則輸出-1
-
說說你的項目
-
我挑的CTF
-
然后你說阿里巴巴的druid連接池對數據連接有安全,請問下為什么
-
然后你是信安專業的么 -- 說下自己的經歷
-
你說你學Java的,靜態變量的初始化和存在哪里說一下
-
Java并發相關,線程通信
-
說下JVM中堆和棧的區別
-
tcp/ip了解么,說下tcp的三次和四次握手
-
tcp和udp的區別和各自的應用
-
http和https的區別,https加密的過程
-
Linux了解么,MySQL了解么,redis了解么
-
hash表中的沖突是什么產生的,用什么解決方法
-
在信安方面自己做過最自豪的事情
-
有什么問題想問我的
附上我的簡歷,感覺面試官是圍繞著我簡歷中寫的來問的,所以結合簡歷來看問題比較實際點吧。
https://tugohost.github.io/resume/
以下來自SyndromePolynomial的頭條面經
來源:牛客網一面,比較基礎 1. 自我介紹 2. 實習經歷 3. HashMap 4. 堆排,建堆的時間復雜度,O(n),為什么是這個,我忘了公式怎么推的了 5. 完全二叉樹和滿二叉樹的概念和區別 6. 數據庫:事務的概念,索引,B+樹講了一下。可能我回答的太不規范,然后也說了自己忘了數據庫的知識了,于是就沒往下問 7. TCP 和 UDP 的區別,為什么是3次握手,4次揮手。4次揮手就是為了等待由一方還沒傳完,才有四次。 8. 編程題:建堆過程 9. 編程題:最小棧:在O(1)的時間復雜度內返回棧的最小元素。思路:兩個棧,一個棧模擬普通的push、pop,getMin() 操作,一個棧用于存儲最小值序列。 10. ArrayList和LinkedList的區別
二面: 1. JUC聽過嗎,java.util.concurrent的縮寫。。。哭了,我說沒聽過,能不能不要什么都用縮寫啊。。。。 2. 知道哪些垃圾回收器,CMS的優勢在哪。。。哎,真的是看過就忘啊。。。。 3. 不可變類,機制,實現原理。完全不知道。 4. 紅黑樹的特性,面試官說紅黑樹不是二叉搜索樹,我懷疑人生了。 5. 編程題:數組中除了兩個數,其他樹都出現偶數次,找出這兩個只出現一次的數。二面我就答上來這一道題,哭惹 6. 編程題:二叉樹轉雙端鏈表,半個小時沒寫出來,,, 哎,,自己真是太弱了啊,太弱了
轉載于:https://www.cnblogs.com/greatLong/p/10562418.html
總結
- 上一篇: (原创)7-1 银行业务队列简单模拟 (
- 下一篇: NumPy学习笔记(一)