主頁 > 軟體設計 > 二本的我三戰面試官,從容應對HR,看我如何通過社招識訓今日頭條Java工程師Offer!

二本的我三戰面試官,從容應對HR,看我如何通過社招識訓今日頭條Java工程師Offer!

2021-04-02 11:24:51 軟體設計

對于很多沒有學歷優勢的人來說,面試大廠是非常困難的,這對我而言,也是一樣,出身于二本,原本以為就三點一線的生活度過一生,直到生活上的變故,才讓我有了新的想法和目標,因此我這個二本渣渣也奮斗了起來,竟拿下了今日頭條Java工程師Offer,今天分享這波面經,主要是希望能夠激勵到同樣被學歷所困擾的技術人,能夠對職業生涯和技術規劃有一個參考價值,感謝!

一、面試今日頭條Java工程師難在哪?(面試難點)

(1)難在“心態”

首先需要克服的第一關,實際上就是自己的心態,因為我是二本出身,base比較低,所以面試今日頭條本就是一件沒太大底氣的事情,更何況是高級開發崗,所以心里就更容易沒底,因此,在準備面試之前,調整心態這件事情就做了很久,所以難在“心態”一點也沒錯,心態沒調整好,面試幾乎是沒戲的,

(2)難在“要求”

其次就是要求,所謂的要求實際上就是阿里對崗位的任職要求,也就是作為開發人員,你掌握了多少技術堆疊?

首先,你簡歷上寫的肯定要會,其次就是你要擁有一些亮點,也就是說對某個技術有深入的了解,這樣才能給面試官耳目一新的感覺,

那么,面試今日頭條Java工程師,需要掌握多少呢?

  • Java集合:HashMap和ConcurrentHashMap,平時最好有讀一些原始碼,最好知道每個引數為什么設定成這么大?有什么好處?
  • JUC包肯定要學,即使平時的編程根本不用,也必須得會,至少要知道aba,cas,aqs,unsafe,volatile,sync,以及常見的各種lock,死鎖,執行緒池引數等,也必須要明白自旋,阻塞,死鎖和它如何去定位,oom如何定位問題,cpu過高如何定位等基本的操作,你可以沒有生產除錯經驗,但不代表你可以不會top,jps,jstack,jmap這些可能會問的東西,以及可能衍生的jmm模型和mesi協議等,
  • 大廠必問JVM:垃圾回收演算法,垃圾收集器、JVM記憶體模型,每個區域用途,各種oom的種類,jvm調優經驗,類加載程序,雙親委派等,
  • Spring就得抽空看原始碼了,一般會問到bean的生命周期,如何解決回圈依賴,實作事務原理,動態代理原理等,
  • Dubbo也是必須問的,設計框架,負載均衡,
  • Redis更要多懂一點,單執行緒模型,aof,rdb,rewrite,主從,cluster,哪些型別?包含一些快取常見的問題擊穿、穿透、雪崩、資料一致性等,
  • Mysql,事務,鎖,索引,b+樹,主從這些你必須會
  • Mq ,我用的rocketmq,你得知道為什么用,重復消費,順序訊息,事務訊息,高可用,訊息丟失,擠壓場景,整個訊息發送消費的流程,讀過原始碼更佳,更好吹
  • Netty的話,零拷貝,bio,nio,aio,架構設計怎么樣子的?用過看過更好
  • 演算法,建議去刷題,我運氣好,簡單的演算法讓我碰到了,一些快排,堆排,二叉樹相關的,鏈表反轉,成環,環節點,跳樓梯等常規的簡單演算法建議刷刷,雙指標,dp,遞回這些還是多找找感覺,大資料記憶體有限的場景的統計,有時間一些middle可以去試試,手寫紅黑樹你要是可以,那我估計演算法你穩了,
  • 網路,http,tcp,https,udp,7層網路協議等,最好結合自己理解,背,你都要背下來,
  • 還有就是一些分布式事務實作,架構實作,比如搶紅包,高并發下單等常規的場景設計,你來設計,你怎么去設計?多找一些大牛或者上網自己查,幫你看看有哪些漏洞,有哪些解決方案?業界有哪些好的中間件?

二、今日頭條Java工程師面試真題(共三面)

一面

  1. 寫一個題,找一個無序陣列的中位數
  2. 寫了個快排,然后讓我找到無序陣列第k大的一個數,我說先排序再找,實際上可以用快排的partition函式,
  3. 快排的時間復雜度,最壞情況呢,最好情況呢,堆排序的時間復雜度呢,建堆的復雜度是多少,nlgn,
  4. 作業系統了解么,Linux和windows
  5. 說說Linux的磁盤管理,一臉懵逼
  6. Linux有哪些行程通信方式,五大件
  7. Linux的共享記憶體如何實作,大概說了一下,
  8. 共享記憶體實作的具體步驟,我說沒用過
  9. socket網路編程,說一下TCP的三次握手和四次揮手,中間網路不好,面試官都沒聽清楚,很尷尬
  10. 跳過網路,問了專案的一些東西
  11. 問我如何把docker講的很清楚,我從物理機,虛擬機到容器具體實作稍微說了下,
  12. 問我cgroup在linux的具體實作,不會,
  13. 多執行緒用過哪些,chm和countdownlatch在實習用過

二面

  1. 自我介紹
  2. Java的集合類哪些是執行緒安全
  3. 分別說說這些集合類,hashmap怎么實作的,扯了很多
  4. MySQL索引的實作,innodb的索引,b 樹索引是怎么實作的,為什么用b 樹做索引節點,一個節點存了多少資料,怎么規定大小,與磁盤頁對應,
  5. MySQL的事務隔離級別,分別解決什么問題,
  6. Redis了解么,如果Redis有1億個key,使用keys命令是否會影響線上服務,我說會,因為是單執行緒模型,可以部署多個節點,
  7. 問我知不知道有一條命令可以實作上面這個功能,不知道
  8. Redis的持久化方式,aod和rdb,具體怎么實作,追加日志和備份檔案,底層實作原理的話知道么,不清楚,
  9. Redis的list是怎么實作的,我說用ziplist quicklist實作的,ziplist壓縮空間,quicklist實作鏈表,
  10. sortedset怎么實作的,使用dict skiplist實作的,問我skiplist的資料結構,大概說了下是個實作簡單的快速查詢結構,
  11. 了解什么訊息佇列,rmq和kafka,沒細問
  12. 寫題時間到,第一題:寫一個層序遍歷,
  13. 第二題:寫一個插入樹節點到一顆排序樹的插入方法,使用遞回方式找到插入位置即可,
  14. 第三題:一個有向圖用鄰接矩陣表示,并且是有權圖,現在問怎么判斷圖中有沒有環,

我說直接dfs走到原點即為有環,剛開始寫的時候我又問了一嘴是不是只要找到一個就行,面試官說是的,然后我說這樣應該用bfs,有一次訪問到原節點就是有環了,
面試官問我不用遞回能不能做這個題,其實我都還沒開始寫,然后我就說沒有思路,他提示我拓撲圖,我沒明白拓撲圖能帶來什么好處,現在一想,好像當訪問程序中找不到下一個節點時就說明有環,做一個訪問標記應該就可以,

  1. 第四題:一個二叉樹,找到二叉樹中最長的一條路徑,

我先用求樹高的方式求出了根節點的左右子樹高度,加起來便是,
然后面試官提示需要考慮某個子樹深度特別大的情況,于是我用遍歷的方式重繪最大值,用上面那個方法遍歷完整個樹即可,
面試官說復雜度比較高,但是由于時間問題就說結束了,

三面

  1. 介紹一下專案
  2. 你談到的并發技術,chm和countdownlatch怎么使用的
  3. 為什么要這么處理,使用執行緒池是不是也可以,我說也可以
  4. 作業系統的行程通信方式,僵尸行程和孤兒行程是什么,如何避免僵尸行程,我說讓父行程顯示通知,那父行程怎么知道子行程結束了,答不會,
  5. 計算機網路TCP和UDP有什么區別,為什么迅雷下載是基于UDP的,

我說FTP是基于TCP,而迅雷是p2p不需要TCP那么可靠的傳輸保證,他說不對,我說是不是因為要建立連接,開銷比較大,他說不對,我說p2p的發送節點很多,所以不是那么需要各種傳輸保證,他說不對,我說TCP會自動分包而TCP可以自己定義資料長度,,他還是說不對,最后他說算了,我們問下一個吧,

  1. 作業系統的死鎖必要條件,如何避免死鎖,
  2. 寫一個LRU的快取,需要完成超時淘汰和LRU淘汰,

我說用lhm行不行,他說用linkedlist和hashmap可以,于是我就寫了put和get函式,進行了隊頭隊尾操作,他說get復雜度會不會太高,我瞎掰了半天沒找到辦法,他說那就這樣吧,今天面試到這,

HR面

  1. 興趣愛好
  2. 三年到五年的職業規劃
  3. 意向公司和城市
  4. 作業經歷和識訓
  5. 作業中最大的困難
  6. 為什么換公司
  7. 你的缺點和優點
  8. 你覺得你比其他人優秀的地方說三個
  9. 為什么想來我們部門
  10. 巴拉巴拉

三、拿下今日頭條Java工程師offer前,我做了些什么?

(1)準備簡歷

簡歷是門面,更是敲門磚,能否拿到大廠的面試機會,就要看自己的簡歷如何,拋開學歷意外,大廠最看重簡歷是否有亮點,因此我們對簡歷內容要有準備,對自己的突出點,包括技術、個性上的亮點,要練習表達,避免臨時組織語言,

(2)提升技能

實際上我有個今日頭條作業的朋友很早之前就向我透露過,很多人認為大廠看重學歷,但實際情況并不完全是,在今日頭條只以能力論英雄,所以,在日常生活中,通過不斷地學習,提升自己的能力,努力去拉近自己與目標值的距離,這是很有必要的,也是未來的必然趨勢,

關于我是如何提升我的技術堆疊的:

① 閱讀實戰檔案包括一些原始碼筆記和技術筆記

全部資源獲取方式已放在文末!

② 猛刷面試題

全部資源獲取方式已放在文末!

做個總結

很多學歷不太好的人,可能對自己沒有太大的信心,實際上任何事情都有“奇跡”發生,而這個“奇跡”關鍵還是要靠自己去創造,無論你是小白菜鳥,還是技術大牛,日常都不能夠落下學習這件事情,一旦落后下來,就容易遭到淘汰,做一個有深度,有廣度的程式員,趕緊學習起來吧!

以上我的經歷希望能夠給大家帶來幫助,另外自己手頭上的資料整理均可免費分享,需要這些資料的朋友一鍵三連后掃描👇二維碼添加小助理, 即可獲得免費領取方式,

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/271606.html

標籤:其他

上一篇:Spring Boot開發之使用JustAuth組件實作第三方登錄(QQ、微博等)

下一篇:【鴻蒙學院】鴻蒙(HarmonyOS)IDE迎來重大更新,新特性足以讓你尖叫!

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 面試突擊第一季,第二季,第三季

    第一季必考 https://www.bilibili.com/video/BV1FE411y79Y?from=search&seid=15921726601957489746 第二季分布式 https://www.bilibili.com/video/BV13f4y127ee/?spm_id_fro ......

    uj5u.com 2020-09-10 05:35:24 more
  • 第三單元作業總結

    1.前言 這應該是本學期最后一次寫作業總結了吧。總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得了如何利用工具以及資料。雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。 2.作業程序總結 相比前兩個單元,此單 ......

    uj5u.com 2020-09-10 05:35:41 more
  • 北航OO(2020)第四單元博客作業暨課程總結博客

    北航OO(2020)第四單元博客作業暨課程總結博客 本單元作業的架構設計 在本單元中,由于UML圖具有比較清晰的樹形結構,因此我對其中需要進行查詢操作的元素進行了包裝,在樹的父節點中存盤所有孩子的參考。考慮到性能問題,我采用了快取機制,一次查詢后盡可能快取已經遍歷過的資訊,以減少遍歷次數。 本單元我 ......

    uj5u.com 2020-09-10 05:35:48 more
  • BUAA_OO_第四單元

    一、UML決議器設計 ? 先看下題目:第四單元實作一個基于JDK 8帶有效性檢查的UML(Unified Modeling Language)類圖,順序圖,狀態圖分析器 MyUmlInteraction,實際上我們要建立一個有向圖模型,UML中的物件(元素)可能與同級元素連接,也可與低級元素相連形成 ......

    uj5u.com 2020-09-10 05:35:54 more
  • 6.1邏輯運算子

    邏輯運算子 1. && 短路與 運算式1 && 運算式2 01.運算式1為true并且運算式2也為true 整體回傳為true 02.運算式1為false,將不會執行運算式2 整體回傳為false 03.只要有一個運算式為false 整體回傳為false 2. || 短路或 運算式1 || 運算式2 ......

    uj5u.com 2020-09-10 05:35:56 more
  • BUAAOO 第四單元 & 課程總結

    1. 第四單元:StarUml檔案決議 本單元采用了圖模型決議UML。 UML檔案可以抽象為圖、子圖、邊的邏輯結構。 在實作中,圖的節點包括類、介面、屬性,子圖包括狀態圖、順序圖等。 采用了三次遍歷UML元素的方法建圖,第一遍遍歷建點,第二、三次遍歷設定屬性、連邊,實作圖物件的初始化。這里借鑒了一些 ......

    uj5u.com 2020-09-10 05:36:06 more
  • 談談我對C# 多型的理解

    面向物件三要素:封裝、繼承、多型。 封裝和繼承,這兩個比較好理解,但要理解多型的話,可就稍微有點難度了。今天,我們就來講講多型的理解。 我們應該經常會看到面試題目:請談談對多型的理解。 其實呢,多型非常簡單,就一句話:呼叫同一種方法產生了不同的結果。 具體實作方式有三種。 一、多載 多載很簡單。 p ......

    uj5u.com 2020-09-10 05:36:09 more
  • Python 資料驅動工具:DDT

    背景 python 的unittest 沒有自帶資料驅動功能。 所以如果使用unittest,同時又想使用資料驅動,那么就可以使用DDT來完成。 DDT是 “Data-Driven Tests”的縮寫。 資料:http://ddt.readthedocs.io/en/latest/ 使用方法 dd. ......

    uj5u.com 2020-09-10 05:36:13 more
  • Python里面的xlrd模塊詳解

    那我就一下面積個問題對xlrd模塊進行學習一下: 1.什么是xlrd模塊? 2.為什么使用xlrd模塊? 3.怎樣使用xlrd模塊? 1.什么是xlrd模塊? ?python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。 今天就先來說一下xl ......

    uj5u.com 2020-09-10 05:36:28 more
  • 當我們創建HashMap時,底層到底做了什么?

    jdk1.7中的底層實作程序(底層基于陣列+鏈表) 在我們new HashMap()時,底層創建了默認長度為16的一維陣列Entry[ ] table。當我們呼叫map.put(key1,value1)方法向HashMap里添加資料的時候: 首先,呼叫key1所在類的hashCode()計算key1 ......

    uj5u.com 2020-09-10 05:36:38 more
最新发布
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:20:47 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:20:25 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:20:17 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:20:10 more
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:19:44 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:19:07 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:18:57 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:18:49 more
  • 05單件模式

    #經典的單件模式 public class Singleton { private static Singleton uniqueInstance; //一個靜態變數持有Singleton類的唯一實體。 // 其他有用的實體變數寫在這里 //構造器宣告為私有,只有Singleton可以實體化這個類! ......

    uj5u.com 2023-04-19 08:42:51 more
  • 【架構與設計】常見微服務分層架構的區別和落地實踐

    軟體工程的方方面面都遵循一個最基本的道理:沒有銀彈,架構分層模型更是如此,每一種都有各自優缺點,所以請根據不同的業務場景,并遵循簡單、可演進這兩個重要的架構原則選擇合適的架構分層模型即可。 ......

    uj5u.com 2023-04-19 08:42:41 more