這個春招估計也要介紹了吧,本身投的公司也很少吧,投簡歷的時候,若是你提早批和正常網申都投的話,可能會得到兩次筆試/面試的機會,我投了兩次騰訊,不過,兩次都在二面掛了,特別是第二次二面,我真的決定本身太他媽傻了。做爲一個新人,談談我面試過程當中犯過的一些錯吧,或許對你也有點收穫。前端
騰訊提早批的面試應該是一個月前就開始的,我第一個投的公司就是騰訊了,人生的第一次筆試和麪試也獻給了騰訊。先說下筆試吧,筆試是 5 道編程題,我的以爲,騰訊的筆試題比較簡單吧,也就是說,得到騰訊的面試機會應該算是不難的吧,5 道我好像是作出了 3道 + 一道90%測試用例經過 + 一道也是百分之幾十來着的,忘了。java
最後的結論就是,我的感受騰訊筆試不怎麼難,投了以後得到面試的機會應該很是大,個人簡歷背景是沒有任何亮點的,沒有啥比賽,沒拿過啥獎,非211/985,普普統統。這裏建議秋招有興趣的必定要投一下,萬一面試也過了呢,好像我據說騰訊技術研發是 2輪技術 + 一輪HR面,萬一2輪技術面過了拿offer機會仍是挺大。面試
固然,我據說前端的 HR 面是綜合面,據說比比前面的兩輪還難還難過。redis
一面是視頻面,人生第一次面試,能夠說我是很緊張的,一面我徹底就是個小白啥套路也不懂,面試官問啥我答啥,徹底不會引導,面試完後我感受本身是真的傻,主要是問了一下問題:算法
一、瀏覽器輸入一個地址回車以後都發生了啥?spring
這個能夠說是很是高頻的面試題了,我以爲本身這方面還能夠,壓抑本身的緊張,好好詳細秀一波,然而,因爲我事先並無去準備過這個問題,而這個問題又涉及到不少步驟,因此我在邏輯上講非很是很是很差,卡住了好幾下,最後無論三七二十一,就說關鍵詞了:有DNS轉換啊,ip網絡尋址啊,三次揮手啊,可能還有NAT地址轉換啊,還有ARP啊。sql
可能平時看我文章的人會發現,我是喜歡把這些技術一點點推出來,有邏輯着連起來的,這樣說出來會特別舒服,不過我此次面試的時候,連不起來的,歸根到底就是,沒有準備,頭腦以爲本身都懂,可是不意味着講的出來,因此我在這裏是建議各位,對於那些高頻的面試題,本身最後嘗試着口頭去表述一下,或者文字書寫一下,要是你來回答,你會怎麼說?編程
二、TCP 和 UTP 有什麼區別?windows
我在回答這道題的時候,也是很是簡單着回答他們的區別,例如一個面向鏈接一個非面向鏈接,一個可靠一個非可靠,很是簡單就答完的。瀏覽器
不過這道題是一個高頻題目,按上面的那個回答,就算回答出來,我以爲也是一點優點都沒有。由於這些簡單的區別,99%的人都懂,我以爲咱們應該再往深刻回答,例如TCP有流量控制,擁塞控制,面向流以及基於這些區別,他們的使用場景等等。
不過我並無回答,不是我不知道,而是我想僞裝不說,等着他來問,由於我據說面試官都會一直往深問到你不會爲止,然而現實是他並無問,換話題了。感受本身錯過了一些表現的機會。
這裏我想說的就是:若是你知道,你能夠多說一點,千萬別像我這麼傻,等着別人來問。
三、寫個快速排序
和算法有關的,我以爲本身還好,寫的雖然不是特別快,但感受本身寫的還好,不管是從代碼的排版(由於這個通常都是在筆記本寫的,不可能給你IDE),以及代碼的簡便程度,我以爲都不錯,這裏我想說的就是,本身平時寫代碼的時候,必定要注意排版,別總是依靠IDE給你一鍵排版。
雖然我已經寫出來了,不過他以後讓我說下快速排序的步驟,我老實說了,不過我以爲,這些題都太簡單,若是面試官的很基礎,你也答的很基礎,我以爲沒啥優點,對於快速排序,我原本想補充的,例如對中軸的選擇問題,與其餘排序算法的一些比較,應用場景等,不過,我是想着等他來問我......
按照我這樣寫文章的話,估計得上萬字,我下面簡便說下就好了。若是大家感興趣我這麼囉嗦的話,下次我再來吐槽說說我回答的不夠好的地方。
四、一條SQL執行的很慢的緣由?(以前寫過文章,建議看看)
五、MySQL有哪些存儲引擎以及他們之間的區別(我其餘引擎忘了名字叫啥)
六、如何查看SQL語句的執行狀態,知道這條命令嗎?(我當時MySQL其實幾乎沒學,不少都不知道)
七、qq用的是tcp仍是udp(兩種都有涉及)
八、說說jvm內存模型(其實並無JVM內存模型,只有Java內存模型以及JVM內存結構,你要問清楚是哪一個再答)
九、JVM內存結構中有棧堆等,爲啥要用棧這種數據結構?(主要是操做簡便,快速)
十、說說垃圾回收?(老年代,新生代,永生代的區別等,各自使用的回收算法,新生代又分eden和survivor區等)
十一、說說aop和ioc
十二、大體看過哪些書?有逛技術論壇的習慣嗎?說幾個你常見的技術博客平臺?有去逛過國外的技術博客嗎?看的懂文檔嗎?
整體上一面比較簡單,面試官沒有深刻問,不過問的很廣,這裏問一些,那裏問一下。感受本身答的還好,也順利過了。第一次面試收穫仍是挺大。
一、對於懂的必定要多說,能夠延伸,只要面試官不打斷你的回答。
二、對於高頻面試題,必定要本身模擬說一下,並且這些題通常不難,必定要多延伸,否則沒啥優點。
三、感受之後面試不那麼緊張了,也就這麼回事。
幾天後收到複試通知,二面是電話面,二面操做系統和Linux問的有點多,我二面感受本身就掛在Linux上,我Linux不大懂,被問了好幾個個基礎的問題都不懂,本身也是醉了,感受本身應該和麪試官說一下我Linux還沒學😹。操做系統不少細節也忘了,說說二面的面試題吧。
一、說下四次揮手,何時會出現time_wait狀態?(我扯了一下,面試結束後,發現本身弄錯了,真想給本身一巴掌,主要是,其實我對三次握手和四次揮手沒去準備過,雖然看過挺多文章,可是具體的沒記住,涼涼)
二、紅黑樹知道嗎?說說,爲啥有了平衡樹還須要紅黑樹?(平衡樹太嚴格,插入很容易打破平衡,常常須要調整,而紅黑樹是一種折中方案......)
三、紅黑樹是如何保證查找效率不會過低下的?(我後面再寫一篇關於紅黑樹,B+樹,平衡樹這些的文章吧,如今先給出這些遇到過的面試題)
四、紅黑樹在調整的時候,不是會用到左旋右旋嗎?說說會不會出現無限左旋右旋的狀況,若是不會,那最多旋轉幾回?
五、爲何索引能加快查找效率?
六、說說B+樹是怎麼分裂、合併的,知道具體步驟邏輯嗎?
七、你項目用到redis,知道跳躍表嗎?說說他是怎麼實現的,查找時間複雜度?
數據結構這部分我以爲本身答的還行,幾乎都答出來的,不過下面的Linux和操做系統有點慘,怪本身沒準備,不過面試就是一個查漏補缺的過程吧。
八、Linux的proc目錄有啥用?(忘了,,,,)
九、怎麼查看端口的狀態?(有條啥命令來着的,忘了)
十、怎麼查看某個進程的狀態?(也忘了,呵呵,,,,,)
我簡歷上是寫着熟悉Linux經常使用命令,然而一個也沒答出來,尷尬啊,其實我會用的是那些 ls, cp, mkdir, tar等經常使用命令,對於線程、網絡相關的都不會,感受危險了,這麼基礎的問題都不會。
十一、說說什麼是進程,進程包括哪些數據?進程切換的過程是怎麼樣的?
十二、若是想要讓多個線程執行到某個點,都達到以後再繼續執行,能夠用java的那些類來實現?(CountDownLatch和CyclicBarrier這兩個)
1三、什麼是反射?反射有啥用?
1四、說說垃圾回收,jvm是如何知道這個對象能夠回收的?計數法有啥問題?若是咱們想要指定某種垃圾回收算法,該怎麼設置?
15說說aop(這個問的刁難了,我該說的都說),他說,那我也能夠經過本身配置文件來實現這種切面啊,爲啥就要用AOP呢?(他問的問題就至關於,我用servlet也能使用實現一個網站啊,爲啥要用spring這些框架呢?我當時應該要吹一波spring中AOP帶來的好處的,不過我沒說,感受本身應該吹一下的)
1五、接着是問了我那個高併發秒殺系統的項目,說了裏面的線程安全問題,而後我這個項目早忘光了,本身也沒準備,代碼我不是本身敲的,直接看視頻的。本身沒作過什麼項目,就充當了,結果面試官問了一下線程的問題,我一直沒get到點,搞的本身也好懵,最後才知道他說的是啥,不過項目這塊答的也很差,主要本身也沒動手弄過,又是去年快速看視頻學的。
整體上,二面除了Linux答的很是很是很差,還有四次揮手說錯了,線程包括哪些數聽說的也不全以外,以及項目感受有點被認識不是我作的以後,其它感受還好。不過。一個多星期後,結果出來,掛了。
不過我也不意外,知道本身有不少須要補的,面試有時運氣很差,可能連續問到好幾個很差的,估計就得掛了,不過這沒方法,最好的作法就是面試事後把本身不足的補上來。
常規網申的筆試題中是20道選擇題+3道編程題,過幾天就收到面試通知了,有了前面兩次以後的面試經驗以後,也瞭解到騰訊是特別喜歡問操做系統+計算機網絡+Linux的,因而我把這方面的高頻面試題都好好準備了,Linux 進程等相關都準備了,操做系統也大體準備了,下面說說此次涉及到的面試題。
一、說說網絡創建鏈接以後是怎麼關閉的(其實就是四次揮手,我詳細說了,以前寫過文章)。若是出現大量time_wait 狀態的鏈接是怎麼回事?(我說了第四次揮手出現了丟包、超時等),假如不會出現丟包、超時等,網絡很是流暢呢?(說了短鏈接致使的)那怎麼解決?(我說了限制最大鏈接,用隊列來緩衝),問我還有其餘方法嗎?(我不大知道,好像面試官不大滿意個人回答。不過最好的作法應該是修改 time_wait 等待的最大之間,把時間改小一點)。
二、說說IO阻塞與非阻塞是什麼?各自有啥好處?知道多路複用嗎?瞭解過 select 嗎?說說他與 epoll 的區別。
我知道的也不是很深刻,就常規答法,他問啥就答啥。這裏我要說一下,我以爲不少人可能混淆了阻塞、非阻塞與異步、同步的概念。我實話,我以爲本身已經理解了,結果我看了好幾篇文章,發現本身反而不懂了,懵了,總以爲缺了點什麼影響我對阻塞非阻塞與異步同步的理解,說實話,我看了大概有10篇文章,有80%我以爲都沒有說清楚阻塞非阻塞與異步同步的本質區別。這會影響你對同步阻塞,同步非阻塞,異步阻塞,異步非阻塞的理解。有時間我再來寫一篇文章說說他們的區別,相信看了你就必定懂了。
三、知道樂觀鎖嗎?說說他們適合應用的情景。
四、說說自適應鎖,與其餘鎖相比,他的優缺點,什麼狀況下你以爲能夠用自適應鎖?(以前寫過幾種鎖的文章,不懂的建議看)
五、你平時開發是在Linux上開發的嗎?(我靠,Linux上開發??那不是得對Linux上很熟悉?我雖然準備了Linux面試相關,但是這Linux上開發壓根沒體驗過啊,我立刻慫了,立刻說沒有,而且還加了我對Linux不熟,這門課剛學沒幾天。以後他就不問了Linux了,而後接下來我就扎心了)
六、那你平時就是在windows下開發了,那若是你平時項目要上線,這個項目的性能忽然不好,你是怎麼定位問題的?(我靠,在下歷來沒有上線過項目,連用心寫過項目都沒有,這下完,我遲疑了一會),他補充說,例如你能夠經過觀察你電腦的cup, 內存,IO 的指標來進行行定位,能夠分析下嗎?(能夠打開任務管理器來查看cup等的運行狀況,而後.....其實我沒有上線過項目,也沒有這樣的經歷),他說沒事,假如遇到這種狀況你會怎麼分析?(我下面說一下我是怎麼扯的)
心想,扎心了,其實我不大知道究竟要分析啥,好吧無論三七二十一了,而後我開始扯了:
一、若是cup一直很高而其餘地方內存,IO很低的話,那頗有可能項目裏面有某些東西在瘋狂運行,但卻沒啥用,頗有可能就是本身設計了樂觀鎖,但競爭的線程太多,致使一直作無用功。
二、若是磁盤操做很高,但cup很低,這是意味着項目一直在作IO操做,頗有多是SQL語句寫的很差,致使掃描了大量的磁盤,而後我就針對SQL語句的問題開始扯了,例如沒有用上索引啊,選錯索引啊,扯了一大堆,哈哈。(心想,舒服,恰好寫過sql語句執行的很慢的緣由有哪些)。
七、說說進程與線程的區別?進程有哪些通訊方式,(我說了共享內存,消息隊列,管道,信號量,套接字,信號驅動),他問還有嗎?(我說其餘的不知道了),描述下這些具體的通訊方式(我有些具體的給忘了,大體描述了幾個)
八、說說快速排序的思想,刪除單鏈表倒數第二個節點,你會怎麼作?
九、瞭解MySQL事務嗎?說說ACID是啥(我靠,我對事務的隔離理解還強,研究過隔離是如何實現的,然而,,,我忽然短路,ACID的D忘了啥,就像你高中那會對一首古詩背的很熟,而後忽然就忘了哪句,內心有點扎心),那你具體說說ACID是啥(原子性是,,,隔離性是,,,,一致性?????,我靠,我以爲本身對這四大特性很理解,感受看名字就知道是啥了,而後說到一致性的時候,我本身的心中產生了疑問,感受本身並無真正意義上理解了一致性,而後我沒說出來)
心中那個苦,一致性都沒說出來,其實我是能夠說出來的,可是我總以爲缺了點什麼,就像你看了幾篇文章以爲本身懂了,結果讓你在看幾篇文章,你感受本身有點醒悟了,而後忽然發現本身並無真正意義上的懂,我查了好多篇文章,呵呵,千篇一概,都不能解答個人疑惑,說實話,別以爲本身懂了,其實你根本就沒有懂,最後是懵逼了很久,才以爲本身應該是懂了,有時間也要寫一篇事務的四大特性的文章。
說實話,網上的不少文章,真的是千篇一概,當你產生了疑惑,很難找到解答,由於你會發現,這幾篇說的都是同樣的,那個你感受特別重要的疑惑都沒有說到。好吧,不吐槽了,等下要被大佬門懟我寫的文章了。
一面大體說了這麼多,有些忘了。比起提早批一面,我以爲本身在表述上好多了,也會扯了,這裏我想跟你們說的就是,問題就那些,必定要搞懂,延伸,要理解,該背的要背,例如進程有哪些通訊方式。若是要面試騰訊的時候,計算機網絡、操做系統,Linux這些底層的,要學好,儘管你是面試 java 崗位的,可能他一個 Java 的問題都不問的。
二面我應該就是個傻逼吧,本身給本身挖坑了,最近這些題一直在刷題,複習基礎,對於數據結構,算法題,Java,操做系統什麼的,本身也想看看有哪些不足,而後他一開始就叫我介紹項目。
一、說說你作的項目。
其實這期間我爲了應付之後的面試弄過作過一個項目,不過還沒弄好。而後我以前不是說了本身有個很水的高併發秒殺系統項目嗎?我本身也沒啥項目經驗,而後我以爲高併發也是很牛逼的樣子,就打算用它了,簡歷上也寫了。不過這個項目我本身沒實操過,看視頻的,很短,幾個小時而已,用到了redis等,不過我已經準備了不少redis相關的知識了,怎麼優化的也準備好了。
現實是,呵呵,我被懟的體無完膚。
優化之一就是經過減小事務持有鎖的時間來優化的,例如咱們秒殺一個物品的話,若是減庫存和插入訂單兩個操做都成功的話,表明秒殺成功,這兩個操做會在一個事務裏完成。問題來了,是先減庫存呢?仍是先插入訂單呢?
我說了先插入訂單在減庫存可以減小事務鎖的持有時間,而後我就被面試官懟死了,以下:
面試官:你以爲你這個優化有用嗎?
我:有啊,能夠減小鎖的持有時間(確實能夠減小鎖的持有時間)
面試官:那你說說提升了多少併發量?
我:這個,,沒測試過(我是看視頻的,本身也沒有這樣的測試工具,有點尷尬,連測試過都沒有??)
面試官:那你說說這條事務執行須要多少時間
我:我,,好像忘了具體數據,大概是0.00幾秒吧。
面試官:你本身都說0.00幾秒了,這麼短期,你以爲你的這個優化,用處大嗎?有數據來支撐下嗎?
我:,,,,,(真的本身給本身挖坑了,早知道隨便介紹下就行了,不主動說本身的優化了過程了,畢竟本身沒實操過)
面試官:你這個系統能扛多少併發量?
我:...沒測試過(我以爲,面試官以爲這個項目是假的了,可能以爲我是從網上隨便找的,而後來應付面試的,我以爲本身涼了,欺騙但是很是嚴重的)。
面試官:那你說說,完成一條請求用了多少時間(測試最大的併發量可能須要相應的工具,他可能爲了再次確認個人真僞,故意是一條請求的?這樣就不須要工具了)
我:.....沒測試過(好吧,個人心已涼)
面試官:好吧,就說到這裏,你用過lowJS嗎?
我:啊??lowJS,什麼鬼東西?並且他的聲音有點小,我再次確認,是指lowJS嗎?他說是,我說沒據說過(後來才知道,他說的是Node.js,,,,,,麻痹,,,)。
面試官:你還有啥問題要問的?
呵呵,,,已經涼了,此次面試真的是本身給本身挖坑,面試官確定是知道我項目是僞造的,這是很是嚴重的事情,而後這個面試大概是持續了10幾分鐘,其餘的面試官的也沒問了。想找給人吐槽下本身。
而後,明天就查到掛的信息了,以前二面是一個星期多才查到掛了,此次是十二個小時以後就收到掛了,我也知道10000%掛的了。此刻須要一波安慰!!
總結就是一首涼涼送給本身,還有就是有一些建議,固然,這也是我本身給本身的建義。
一、高頻面試題,別停留於表面,你們都懂,說的很表面沒啥優點。
二、別覺得本身懂了,若是能夠,最好本身嘗試描述一下,你可能會描述的很沒有邏輯。
三、好好準備一個項目吧,必定要本身腳踏實地作一下, 別像我,被懟的體無完膚。
四、框架真的問的不多,好好打基礎,數據結構與算法,計算機網絡,操做系統,Linux 進程等相關的命令。
五、面試的第一關是筆試,通常都是編程題,建議要刷刷題,否則面試的機會都沒有。
先寫到這裏了,後面會寫一下面試相關的題,建議最後看,雖然你看過相關文章了,但看個人,可能你也可以有新的收穫!還有就是祝各位大佬面試順序,很差的運氣我來幫大家包攬就好了(留下了委屈的眼淚)
最後推薦下個人公衆號:苦逼的碼農,主要分享一下技術文章、面試題、算法題,各類工具、視頻資源等,裏面已有100多篇原創文章,期待各路英雄來交流。(歡迎掃右上角的二維碼關注哦)