面試時被問技術棧底層 , 機智小夥反秀面試官一臉

前言

​ 每逢金九銀十 , 像做者這樣的IT碼農, 會按奈住心裏對 996 和 產品經理 的一萬種髒話, 偷偷將手中的簡歷更新, 投往互聯網各公司的HR手中 , 這時IT論壇裏也熱鬧起來了, 各類大廠內推和求內推的帖子被頂的火熱. 有些幸運的 碼農拿到了些大廠的 面試邀請, 想着大廠入職後誘人的福利, 翻倍的薪資, 很多年輕的碼農不知不覺流下了口水, 興奮的徹夜難眠...前端


​ 講個事, 我有個哥們叫張大胖也是 Java碼農, 上個月去某大廠面完試 , 去以前神采奕奕 的和我說 "這個崗位的最低薪資就是他如今薪水的兩倍 , 笑着說: 等着哥們到時候進某廠了, 給你內推, 一塊兒寫Bug." 這個星期五 張大胖喊我下班來他家吃羊肉火鍋, 一上桌看着大胖整我的垂頭喪氣的, 臉上寫滿了惆悵, 我趕忙給他把酒滿上, 招呼他吃菜, 酒過三巡, 我問張大胖 "上個月面的咋樣啊 ?" 他這時面露說道: "我TM就面箇中級工程師,去了先讓我作一堆看不懂的算法題, 而後來一個禿頭老大哥來面我, 聽說都工做十多年了, 沒等我把項目邏輯講完就拿着簡歷追問我技術棧底層實現, 用了什麼設計思想 balabala, 我硬撐着把肚子裏的那點貨倒騰出來, 又被連環追問,感受人都傻了, 哥們最近真倒黴能力被碾壓了!" 我說: "你在簡歷中專業技能欄裏寫的啥?" 大胖用手機把他的簡歷發給我了, 專業技能欄足足寫了 10行, 前面都寫着精通. 我說 "這麼多技術你都懂原理嗎? " 張大胖擺了擺手, "都是項目裏用過的,用完早就忘了, 嘆了口氣又說 我啥時候才能和你同樣吊打面試官, 薪資翻倍啊!" 我喝了口酒笑着說 "我也就比你多作了點功課,來大胖我幫你分析分析!"面試

看看張大胖的技術棧.

  1. 精通Java基礎知識以及設計模式 , 熟練應用阿里官方Java代碼規範標準編寫優質Java代碼。
  2. 精通微信小程序項目, 以及微信公衆號等相關微信生態開發集成。
  3. 精通JavaScript編程、Vue.js框架以及WebPack等前端技術,掌握iView, Vue-Route, TypeScript,ECharts。
  4. 深刻研究Spring相關源碼, 業餘擁抱開源社區貢獻代碼, 並長期保持刷LeetCode的習慣。
  5. 精通Elastic Stack (ELK) 大數據生態 中的Elasticsearch, Logstash, Kibana, Filebeat進行數據挖掘。
  6. 精通SpringBoot, Spring, Mybatis, Hibernate, OSGI等框架的核心思想及開發JavaEE項目流程。
  7. 精通Oracle , MySQL的數據庫的設計維護。非關係型的數據庫中,對於Neo4j的使用較爲熟練。
  8. 精通Dubbo RPC遠程通訊技術, Kafka消息隊列, Guava本地緩存, 瞭解SpringCloud微服務等。
  9. 精通爬蟲技術(HttpClient + Jsoup), 瞭解反爬與反反爬技術。
  10. 精通Intellij IDEA , VS Code開發工具,熟悉Git/SVN 版本控制工具, Maven依賴管理工具。

大胖被面試官KO的真相

我曾經也是做爲過面試官,親歷過從約面試到發Offer的全過程, 負責任的講, 公司給你發麪試邀請的這個環節, 實際上是由於你的簡歷獲得了HR + 你將來上司的初步認同, 認爲你的簡歷技能與當前職位匹配, 面試這個環節本質則是考察面試者與職位匹配度的高低, 基本的框架 CRUD 搬磚問題誰都會回答, 怎麼能考察出面試者的真實水平, 從而優中選優呢?算法

  • 大廠考察研發工程師都須要寫算法題, 考察面試者的基礎編程能力.
  • 關於你的項目是什麼個業務邏輯, 面試官一點都不關心, 面試官關注的是你對技術的追求, 是否深刻了解項目中的技術原理, 是否有自學能力.
  • 不要順着面試官的意思來, 在本身深刻的技術上, 要主動講源碼, 講思想, 挑逗面試官的好奇心, 從而抱得Offer歸.
  • 一切的一切, 都說明一個問題, 面試前必定要作好秀面試官一臉的功課, 讓他抓着你的手求你明天來上班 , 而不是最後被面試官吊一頓,回家等通知, 面試的過程, 要變被動爲主動, 是你選擇Offer而不是Offer選擇你.

如何幫助張大胖反秀面試官一臉

  • 平常刷LeetCode, 若是想進大廠, 算法與數據結構不能丟.
  • 必須將寫在簡歷上的技術棧底層搞懂個七七八八,能住唬人.
  • 儘可能聊面試官感興趣的話題, 將自身經歷與職位要求上靠, 提升匹配度,
  • 將面試時被問到回答的不滿意的問題,記錄成下面的問答式面試題集.
  • 平常必須閱讀源碼, 好比 Spring IOC 理解等 (面試必問) , 面試問到 IOC, 就是你反殺面試官的開始 , 23333.

如何幫助張大胖反秀面試官一臉

  • 平常刷LeetCode, 若是想進大廠, 算法與數據結構不能丟.
  • 必須將寫在簡歷上的技術棧底層搞懂個七七八八,能住唬人.
  • 儘可能聊面試官感興趣的話題, 將自身經歷與職位要求上靠, 提升匹配度,
  • 將面試時被問到回答的不滿意的問題,記錄成下面的問答式面試題集.
  • 平常必須閱讀源碼, 好比 Spring IOC 理解等 (面試必問) , 面試問到 IOC, 就是你反殺面試官的開始 , 23333.

講講張大胖被問倒的面試底層面試題集

1.ES的倒排索引的底層?

ElasticSearch引擎把文檔數據寫入到倒排索引(Inverted Index)的數據結構中,倒排索引創建的是分詞(Term)和文檔(Document)之間的映射關係,在倒排索引中,數據是面向詞(Term)而不是面向文檔的數據庫

一個倒排索引由文檔中全部不重複詞的列表構成,對於其中每一個詞,有一個包含它的文檔列表 示例: 對如下三個文檔去除停用詞後構造倒排索引編程

倒排索引-查詢過程

查詢包含「搜索引擎」的文檔小程序

經過倒排索引得到「搜索引擎」對應的文檔id列表,有1,3 經過正排索引查詢1和3的完整內容 返回最終結果 倒排索引-組成微信小程序

  • 單詞詞典(Term Dictionary)
  • 倒排列表(Posting List)
  • 單詞詞典(Term Dictionary)
  • 單詞詞典的實現通常用B+樹,B+樹構造的可視化過程網址:B+ Tree Visualization

倒排列表(Posting List)設計模式

倒排列表記錄了單詞對應的文檔集合,有倒排索引項(Posting)組成 倒排索引項主要包含以下信息: 1.文檔id用於獲取原始信息 2.單詞頻率(TF,Term Frequency),記錄該單詞在該文檔中出現的次數,用於後續相關性算分 3.位置(Posting),記錄單詞在文檔中的分詞位置(多個),用於作詞語搜索(Phrase Query) 4.偏移(Offset),記錄單詞在文檔的開始和結束位置,用於高亮顯示緩存

B+樹內部結點存索引,葉子結點存數據,這裏的 單詞詞典就是B+樹索引,倒排列表就是數據,整合在一塊兒後以下所示微信

ES存儲的是一個JSON格式的文檔,其中包含多個字段,每一個字段會有本身的倒排索引

倒排索引的結構

  • 包含這個關鍵詞的document list
  • 包含這個關鍵詞的全部document的數量:IDF(inverse document frequency)
  • 這個關鍵詞在每一個document中出現的次數:TF(term frequency)
  • 這個關鍵詞在這個document中的次序
  • 每一個document的長度:length norm
  • 包含這個關鍵詞的全部document的平均長度

倒排索引不可變的好處

  • 不須要鎖,提高併發能力,避免鎖的問題
  • 數據不變,一直保存在OS Cache中,只要Cache內存足夠
  • filter cache一直駐留在內存,由於數據不變
  • 能夠壓縮,節省CPU和Io開銷

關注 20K+ 訂閱號便可助力月入 20K+ , 相關文章.

面試時被問技術棧底層 , 機智小夥反秀面試官一臉

相關文章
相關標籤/搜索