一份來自一月寒冬互聯網一線的面經(附面試題)

1.背景:

由於公司變更,lz不得不出來看看機會, 面試的崗位主要是後端,歷經三週,面了北京大大小小的幾家公司,最後收穫了滿意的offer。html

本身也成長收穫了很多, 謹以筆記,本身能夠往後回憶,也但願能幫助到最近寒冬下須要找工做的同窗,在文章的後面會附上一點當心得和建議。java

 

2.level

我是16年本科畢業, 算上實習接近2年半-3年的工做經歷吧,一直作java後端。  本身定位大概能到p6+的水平。有大廠經驗,本科211, 因此面試機會整體來講仍是挺多的。python

 

3.過程

大概是從元旦事後開始寫簡歷,投簡歷,從7號開始陸陸續續面了若干公司, 有好有壞,以表格形式記錄以下,以我面試的時間排序。mysql

聲明:雖然博客沒有什麼人看,可是若是您認爲記錄有不實或者傷害到下述公司名譽啥的, 直接聯繫我刪除便可。git

有朋友建議我省掉公司名,我就用某代替吧。github

公司 部門  渠道  結果  感覺(辦公環境,面試難度,感覺)
 

某信銀行面試

 

DevOpsredis

Boss

 4+0,拿到offer.算法

(4技術面 0hr面,下同)spring

 某信的位置和辦公環境都很不錯,位於安貞門。

面試官人很nice,沒有多餘的操做, 而且友好地幫我倒了一杯水。

主要針對簡歷中的項目,以及java基礎進行面試。

難度也是按部就班, 說實話由於是第一家面試, 我確實不少地方沒有準備好,可是仍是感謝面試官給我機會。

感覺:以前感受銀行可能比較水, 可是感受各方面都挺與時俱進的, 待遇和人文也頗有競爭力。 某信應該有大幾百人的研發團隊,各方面應該都不輸於D輪的互聯網公司。 整體是比較讚的。

 某動    Boss  線上筆試

 3道Codility,英文,大概3h限時, 我應該1h就寫完了,用例跑通我就提交了,可是隻有一道題ac。(很奇怪,也沒有錯誤用例的提示,和LeetCode有些不同)

 而後hr仍是讓我去面試, 我拒絕了,多是我當時已經對這家公司沒有太大興趣了。

某見科技    Boss 筆試+面試

一家AI創業公司, 看jd介紹不錯就去了。 最後發現是在一個很偏,有點破的創業園,裏面環境有點像家鄉的網吧。

筆試3道很簡單的題, 面試也沒什麼深度,面試官說實話感受水平比較通常。

整體技術和互聯網差異很大, 我當時也是抱着練手的態度過去。 因此也沒下文了。

 某vo  金融 Boss   視頻面試

 1面視頻面,難度按部就班,兩位面試官提問。 面試官說次日hr聯繫我,結果也沒聯繫。我也沒問了。

主要是由於某vo在深圳,我在北京,可能我也不是很想換城市,後面投的都是在北京了。

 某團  --  Boss 3+0 拿到offer 

某團的環境感受就是標準的互聯網風格,

面試官也很務實友好, 難度按部就班,二面會問一些底層,併發的理解。

某團不管是從技術沉澱仍是我面試團隊的潛力, 都是我很心儀的。

很幸運也給了我一個不錯的定級和待遇。

 某米  某品  Boss 2面撤了

 說實話,我開始是不想投某米的,可是考慮到我是湖北人,可能回武漢。

可是!!!我面試以前應該在脈脈上搜一搜這個部門的。

這個部門位於清河一個挺偏的地方, 周圍彷彿回到了18縣小鄉鎮。

面試官也是low爆炸了,一面面試官穿了一個脫鞋,讓我在樓下等了20min,前臺態度也很差。

而後居然去了一個茶吧檯面試。不過一面面試官整體態度還行。(某米不提供飲水,面試官帶我去飲料機買了瓶汽水,固然是我自費,從某米出來我就有了帶水的習慣了。)

二面簡直是個活寶,上來站着問,你懂hashmap嗎, 我簡單答了一下數組+鏈表,而後按理應該往碰撞,或者併發的方向繼續問, 結果坐下,抖腿,問什麼抓包的原理,而後扯的亂七八糟的。 最後憋了一分鐘吧,出了一個很無聊的題(LeetCode第十題)。 我實在不想浪費彼此時間,就直接走了。

某米自己在我心中仍是個挺有態度的公司,和雷某總也是老鄉。  哎,真是刷新了個人三觀。

 某脈  效能  Boss  2+1

 某脈我以爲公司和產品同樣nice, 位於768,環境很安靜。

hr笑的很開心,面試官也頗有禮節。

他們主後端是用python, java主要作一些離線和效能的工做。

由於第一天3面面試官不在, hr讓我次日過去, 可是因爲面試過程當中瞭解到是去作效能平臺,財務平臺。

秉着發展的考慮,我仍是拒絕了。 

可是我仍是推薦某脈, 小而美。

 某某跳動  某告  獵頭  3+1,拿到offer

 面完某米以後,我以爲我不能在小公司上面浪費時間,同時也有了某團的offer。

因而我把其他的面試都取消了,只剩下了某條和某裏。

某條辦公環境,位置都很好。 每層都有食堂(請我吃了一頓,很好吃)

同窗們給我最大的感覺是 年輕,有活力,友好。 還有就是真的忙。

我身邊已經有陸陸續續很多同事選擇了某條了。

面試難度其實沒有傳說中的那麼難, 不至於手寫紅黑樹,可是基本的數據結構和算法要熟悉,每一面都會寫算法。

hr感受也很盡心盡責。

某某巴巴 某學 Boss 3+1

某巴巴的面試整體有點失望,首先hr沒預定會議室,致使在休息區面試。 也沒有茶水,雖然我自帶了。

而後是辦公區處處都是屏幕,循環着某雲的創業視頻。

三面面試中規中矩。

某學原本就不是我投的部門(我投的u某c,不知道咋流過去了,而後讓我面試,我也想試一試吧,而後hr說我某蟻簡歷沒過,可我壓根沒投過)

某裏最難的是hr面,  一個hr非要充小心裏學家,問你人生高潮是啥, 很是沒有禮貌,說話直接打斷,也沒什麼信用,感受這羣hr把某裏搞得烏煙瘴氣。   特別是hr套路不少, 面完了說沒有hc,hc要審批(那你喊我來幹嗎) ,而後我有很優秀的同事面過了 (其實也一直拖着沒給offer),我說有人拿offer了 ,hr又說人家面的早。讓我感受她就是在刷kpi啥的。

反正這個部門我是不建議去了, 周圍拿到某學offer的同事也打算拒了再看看。

某馬遜 物流倉儲 Boss 還沒面  

 

4.總結及建議

1.必定要提早準備好,刷必定量的題,特別是如今各大公司都有本身的招聘系統,若是一面就掛了,可能直接就拉黑,後續面試就更難了。

2.關於刷題,大概刷完劍指offer上面的經典題, 或者leetcode前100道應該就夠了,我建議有選擇的刷,主攻排序,鏈表,大文件處理這些面試高頻的,也有意義的。

3.關於練手,我以爲不要有太大的內心負擔, 你去通常公司面試,對於公司多是一種匹配,可是對我的但是一次很好的自我認知檢討的機會,甚至會改變後續的不少結果。

咱們結合對行業的瞭解,以下公司能夠說小而美(其實也是大獨角獸了),自己就值得加入,面試也有不少收穫: 某輔導,某脈,某探,瓜某,某vo互聯網。

固然拿大廠的邊緣部門練手也何嘗不可,就是有風險有記錄。

固然也有一些黑名單,面試官迷之自信,態度傲慢,技術淺顯, 建議你們面試前脈脈一下。。

最後一棒子打死,感受位於清河的公司,可能都不太利於我的生活和發展。

4.關於基礎,我在下面附上一些前輩整理好的url。必定要夯實打撈。

5.關於面試禮儀,我以爲面試禮儀是衡量雙方的重要標準, 面試者要注重本身的儀表整潔,談吐禮貌天然。 能夠從公司面試官的行爲判斷出公司的大致人員素質,我我的比較看重公司行政或者面試官是否能給瓶礦泉水或者倒杯水,我認爲這是尊重一個面試者的基本表現,雖而後來我都是本身帶水。 我面試中就某米和某裏沒有提供(而且某裏某學是飯點約去面試,也無論飯,餓着肚子從5點面到9點多),而後就是雙方是否守時,我通常提早20分鐘到,提早10分鐘給hr打個電話。 

6.關於面試難度,我以爲正常應該是圍繞簡歷和基礎按部就班,一上來手撕紅黑樹,給個hard基本要dp的,或許不是真心想招人的。 

固然,即便難點也不要慌, 表達好本身的思考過程,展示本身一個綜合的素質 ,即便錯了也不會被一票否認。

7.關於面試技巧, 以前看了有的前輩說盡可能把面試官往本身熟悉的領域帶,有一點道理, 可是我沒有刻意這樣操做過, 不會的通常思考一下,直接說不肯定/沒研究過/不會,而後說一個可能的原理,若是合理我認爲也能體現一種技術功底和應變能力。

其餘的想到在整理吧。

 

 

5.面試題+基礎

各家的面試題其實都大同小異, 掌握基礎和原理,走到哪都不怕。

 基礎

leetcode上有一些總結,star數很是高了。貼上url

https://github.com/CyC2018/CS-Notes

https://github.com/Snailclimb/JavaGuide

這兩個大概只是個提綱,若是是高級職位,深度可能不夠,具體的還得看書。

另外強烈推薦 http://www.iocoder.cn/ 芋道,個人面試題不少都是從上面找的。平時對提升也有幫助。

 

 reids

redis的話,我推薦《Redis深度歷險:核心原理和應用實踐》 和《redis設計與實現》

 

  • 知道redis嗎,redis是如何作持久化的
  • 介紹下redis的特色,redis的基本數據結構,數據持久化方式,主從之間如何同步;
  • 致使redis性能瓶頸的操做
  • redis有哪些接口
  • Redis的實現模式;
  • redis爲何這麼快?

 

 

java-core

基礎的話主要看源碼吧, collection和juc裏面的。 而後就是《java編程思想》和《java核心技術 卷1.2》(有不少過期的章節直接跳過便可) 

  • 1、List 和 Set 的區別
  • 2、HashSet 是如何保證不重複的
  • 3、HashMap 是線程安全的嗎,爲何不是線程安全的(最好畫圖說明多線程環境下不安全)?
  • 4、HashMap 的擴容過程
  • 5、HashMap 1.7 與 1.8 區別,說明 1.8 作了哪些優化,如何優化的?
  • 6、final finally finalize
  • 7、強引用 、軟引用、 弱引用、虛引用
  • 8、Java反射
  • 9、Arrays.sort 實現原理和 Collection 實現原理
  • 10、LinkedHashMap的應用11、cloneable接口實現原理
  • 12、異常分類以及處理機制
  • 13、wait和sleep的區別
  • 14、數組在內存中如何分配

 

 

java-併發

我推薦《java併發編程藝術》 我以爲比 《java併發編程實戰》更好理解一點。

 

  • 一、synchronized 的實現原理以及鎖優化?
  • 二、volatile 的實現原理?
  • 三、Java 的信號燈?
  • 四、synchronized 在靜態方法和普通方法的區別?
  • 五、怎麼實現全部線程在等待某個事件的發生纔會去執行?
  • 六、CAS?CAS 有什麼缺陷,如何解決?
  • 七、synchronized 和 lock 有什麼區別?
  • 八、Hashtable 是怎麼加鎖的
  • 九、HashMap 的併發問題?
  • 十、ConcurrenHashMap 介紹?1.8 中爲何要用紅黑樹?
  • 十一、AQS
  • 十二、如何檢測死鎖?怎麼預防死鎖?
  • 1三、Java 內存模型?
  • 1四、如何保證多線程下 i++ 結果正確?
  • 1五、線程池的種類,區別和使用場景?
  • 1六、分析線程池的實現原理和線程的調度過程?
  • 1七、線程池如何調優,最大數目如何確認?
  • 1八、ThreadLocal原理,用的時候須要注意什麼?
  • 1九、CountDownLatch 和 CyclicBarrier 的用法,以及相互之間的差異?
  • 20、LockSupport工具
  • 2一、Condition接口及其實現原理
  • 2二、Fork/Join框架的理解
  • 2三、分段鎖的原理,鎖力度減少的思考
  • 2四、八種阻塞隊列以及各個阻塞隊列的特性
  • 單機上一個線程池正在處理服務,若是突然斷電了怎麼辦(正在處理和阻塞隊列裏的請求怎麼處理)?
  • 爲何要使用線程池?
  • 線程池有什麼做用?
  • 說說幾種常見的線程池及使用場景。
  • 線程池都有哪幾種工做隊列?
  • 怎麼理解無界隊列和有界隊列?
  • 線程池中的幾種重要的參數及流程說明。

 

JVM

JVM應該就一本《深刻理解JVM虛擬機》 就夠了, 可是我買的版本比較老,1.8之後內存區域作了一些改動,本身的得知道。

 

  • 一、詳細jvm內存模型
  • 二、講講什麼狀況下回出現內存溢出,內存泄漏?
  • 三、說說Java線程棧
  • 四、JVM 年輕代到年老代的晉升過程的判斷條件是什麼呢?
  • 五、JVM 出現 fullGC 很頻繁,怎麼去線上排查問題?
  • 六、類加載爲何要使用雙親委派模式,有沒有什麼場景是打破了這個模式?
  • 七、類的實例化順序
  • 八、JVM垃圾回收機制,什麼時候觸發MinorGC等操做
  • 九、JVM 中一次完整的 GC 流程(從 ygc 到 fgc)是怎樣的
  • 十、各類回收器,各自優缺點,重點CMS、G1
  • 十一、各類回收算法
  • 十二、OOM錯誤,stackoverflow錯誤,permgen space錯誤
  • 說一下對jvm的理解,jvm的組成部分,各個部分的存儲內容以及常見的jvm的問題排查步驟。
  • JVM熟不熟悉?簡單說說類加載過程,裏面執行的那些操做?
  • JVM方法區存儲內容 是否會動態擴展 是否會出現內存溢出 出現的緣由有哪些。
  • 介紹介紹CMS
  • 介紹介紹G1。
  • 爲何jdk8用metaspace數據結構用來替代perm
  • 簡單談談堆外內存以及你的理解和認識。
  • JVM的內存模型的理解,threadlocal使用場景及注意事項?
  • JVM老年代和新生代的比例?
  • jstack,jmap,jutil分別的意義?如何線上排查JVM的相關問題?
  • Java虛擬機中,數據類型能夠分爲哪幾類?
  • 怎麼理解棧、堆?堆中存什麼?棧中存什麼?
  • 爲何要把堆和棧區分出來呢?棧中不是也能夠存儲數據嗎?
  • Java中,什麼是是棧的起始點,同是也是程序的起始點?
  • 爲何不把基本類型放堆中呢?
  • Java中的參數傳遞時傳值呢?仍是傳引用?
  • Java中有沒有指針的概念?
  • Java中,棧的大小經過什麼參數來設置?
  • 一個空Object對象的佔多大空間?
  • 對象引用類型分爲哪幾類?
  • 講一講垃圾回收算法。
  • 如何解決內存碎片的問題?
  • 如何解決同時存在的對象建立和對象回收問題?
  • 講一講內存分代及生命週期。
  • 什麼狀況下觸發垃圾回收?
  • 如何選擇合適的垃圾收集算法?
  • JVM中最大堆大小有沒有限制?
  • 堆大小經過什麼參數設置?
  • JVM有哪三種垃圾回收器?
  • 吞吐量優先選擇什麼垃圾回收器?響應時間優先呢?
  • 如何進行JVM調優?有哪些方法?
  • 如何理解內存泄漏問題?有哪些狀況會致使內存泄露?如何解決?

 

 

Spring

spring的話,感受如今問的少了, spring cloud會問的比較多, 應該算在微服務/分佈式的知識點裏面。

  • 1、BeanFactory 和 FactoryBean
  • 2、Spring IOC 的理解,其初始化過程?
  • 3、BeanFactory 和 ApplicationContext
  • 4、Spring Bean 的生命週期,如何被管理的?
  • 5、Spring Bean 的加載過程是怎樣的?
  • 6、若是要你實現Spring AOP,請問怎麼實現?
  • 7、若是要你實現Spring IOC,你會注意哪些問題?
  • 8、Spring 是如何管理事務的,事務管理機制?
  • 9、Spring 的不一樣事務傳播行爲有哪些,幹什麼用的?
  • 10、Spring 中用到了那些設計模式?
  • 11、Spring MVC 的工做原理?
  • 12、Spring 循環注入的原理?
  • 13、Spring AOP的理解,各個術語,他們是怎麼相互工做的?
  • 14、Spring 如何保證 Controller 併發的安全?

 

Netty

 我不會

 

分佈式相關

主要考察對cap和base的理解吧, 我沒有系統學習過,主要靠平時的積累。

  • 一、Dubbo的底層實現原理和機制
  • 二、描述一個服務從發佈到被消費的詳細過程
  • 三、分佈式系統怎麼作服務治理
  • 四、接口的冪等性的概念
  • 五、消息中間件如何解決消息丟失問題
  • 六、Dubbo的服務請求失敗怎麼處理
  • 七、重連機制會不會形成錯誤
  • 八、對分佈式事務的理解
  • 九、如何實現負載均衡,有哪些算法能夠實現?
  • 十、Zookeeper的用途,選舉的原理是什麼?
  • 十一、數據的垂直拆分水平拆分。
  • 十二、zookeeper原理和適用場景
  • 1三、zookeeper watch機制
  • 1四、redis/zk節點宕機如何處理
  • 1五、分佈式集羣下如何作到惟一序列號
  • 1六、如何作一個分佈式鎖
  • 1七、用過哪些MQ,怎麼用的,和其餘mq比較有什麼優缺點,MQ的鏈接是線程安全的嗎
  • 1八、MQ系統的數據如何保證不丟失
  • 1九、列舉出你能想到的數據庫分庫分表策略;分庫分表後,如何解決全表查詢的問題
  • 20、zookeeper的選舉策略
  • 2一、全局ID

 

 

mysql:

《Mysql技術內幕-innodb存儲引擎》就夠了。

  • mysql索引的實現原理
  • Innodb中,什麼是彙集索引,非彙集索引,他們是什麼關係
  • 插入一條記錄時,彙集索引和非彙集索引是如何修改的
  • 創建索引的標準是什麼
  • 查看 SQL 是否是使用了索引?(有什麼工具)
  • SQL 索引的順序,字段的順序
  • MySQL 分頁查詢語句,mysql分頁有什麼優化

 

 

原文出處:https://www.cnblogs.com/novaCN/p/10328380.html

相關文章
相關標籤/搜索