3.5年面試總結
今年(9102)行情不好,在boss直聘上看到的招聘其中有一半以上在一週內都是未讀,讀了的有一半都沒有回覆,要了簡歷好大一部分也沒了後續。
個人情況:自己定位是未到高級;當前薪資:11k,目標15k,底線14k。
座標:成都
技術問題
領域 | 問題分類: | 詳細內容 |
java基礎 | concurrentHashMap and hashMap and hashTable |
數據結構,紅黑樹只被問過一次,熟悉下它的五個特點就行了 hashMap 1.7和1.8差別 concurrentHashMap put過程,涉及到初始化,helpTransfer,擴容,數據添加,treefy等 |
線程和鎖 |
線程的狀態,各個行爲下分別是什麼狀態 wait 和 sleep的區別 Lock 和 sync 的區別 鎖升級 * 3 |
|
AQS |
實現原理 CountDownLatch的用法等,熟悉可以回答底層源碼 |
|
線程池 |
線程池的核心參數用法 主要有幾種線程池,瞭解的比較多可以回覆下底層原理 |
|
jvm |
內存構造,回收算法,常用配置 oom問題排查 如何優化,在某個場景下如何優化,比如新老比例3:1 類加載機制如何,雙親委派模型 如何定位cpu問題 |
|
java框架 | spring |
bean生命週期 容器啓動的過程 onRefresh方法以及內部的 finishBeanFactoryInitialization 以及 invokeBeanFactoryPostProcessors beanFactoryPostProcessor 和 beanPostProcessor |
spring mvc |
啓動 請求執行流程,一般自己會多說參數解析,因爲這塊有研究過 |
|
mybatis |
#和$的差別 sql查詢的流程 插件的實現原理 |
|
數據庫 | redis |
redis常用數據類型 底層數據結構 持久化, 數據過期策略 主從 sentinel 和 集羣 原理 緩存擊穿與雪崩發生場景及解決方案 |
mysql |
常用的優化方法 某些場景下索引如何創建(主要考慮複合索引,最左匹配原則) explain主要看哪些內容 b樹和b+樹的區別,爲什麼innodb用b+而不是b樹,二叉樹 hash索引和b+樹索引差別 主從延遲怎麼解決 |
|
其他 | 算法 |
實現 解析運算表達式(一次) 優先級隊列的使用場景,當場回答有點蒙,後面反應過來是它的數據結構 散列,即HashMap |
設計模式 |
在項目中使用過的設計模式,場景說明 隨便提個設計模式問是否瞭解,常問的是觀察者/單例 |
|
分佈式 |
分佈式事務,cap 和 base 分佈式主鍵生成策略,見推特snow flake, 美團leaf |
|
項目 | 做過的複雜的項目;怎麼優化的項目 | |
系統設計 | 用例圖,流程圖,類圖設計訂單系統/簡單系統 | |
docker | 由於自己寫了瞭解,很多都會問這個,回答只會基本使用,然後給的建議就是深入學習。。 | |
其他 | 自我定位,周圍同事的評價; 寫代碼時候注意些什麼,有什麼是不能有的,有什麼是一定要有的。; | |
被問一次的問題 | rabbitMq (rabbitMq只被問過一次,也許是的確沒什麼人用) | 死信 生產者消費者如何消息防重 和其他消息隊列對比的優缺點,rabbitMq主要問題是:不支持消息堆積! |
其他 | UDP協議;servlet生命週期 |
面試公司彙總
- 三月:中非網(一面掛)
- 四月:滴普科技(13k * (13-15)),嗨學網(一面掛),某國企(14k * 12+10),某國企(hr面掛)
- 五月:鐵皮人(14k * 14),G7(一面掛),oppo(二面掛),客如雲(14k * (12-16))
- 六月:神話傳媒(一面掛),致遠軟件(wait)
面試官的建議
有些還是不錯的面試官給的建議,當然不是所有面試官都給了建議,有些給的offer,有些是兩週內給答覆 = =,
個人理解,一個好的面試官應該能夠引導回答,不滿足需求時可以給一些較好的建議,緣分一場。
面試官 | 建議 | 響應 |
致遠軟件 | 計算機組成原理較重要,需要有 | 這個其實和以前的leader,現在在美團做leader,得到的答覆是當需要的時候可以深入底層學習,所以一直放着 |
管理經驗需要提前準備 | 當時沒反駁,或許這個在成爲一個小leader之前,不用太考慮 | |
需要有長期的規劃 | ||
神話傳媒 | 深入學習docker | 這個還要考慮一下,有很多都可以深入學習,但是具體能不能給自己的職業生涯和以後的工作帶來價值? |
對springboot的看法,表示高級開發應該有深入的見解 | springboot就曾用過4個月,沒有什麼深入看法啊,後面積累吧! | |
oppo二面 | 給的建議是增加業務敏感性,因爲談到了營銷工具這個功能,它沒有效果統計,還問到了數據挖掘,矇蔽 | 的確業務的敏感性太差,總覺得需求都是產品定,其實不是,自己可以有更好得建議, 也需要考慮兼容,擴展,數據報表,效果統計之類得東西 |
oppo一面 | 深入jvm,docker等,認爲很多方面都有學到,但缺乏一些深度。 | jvm其實還是有些深入的,自己表述的是沒有機會接觸生產環境,而且工作中遇到問題,被直接加內存處理了!! |
中非網(18k崗位) | 提高系統邊界的感知,如何減少系統間的耦合(讓做一個下單系統) | 這個也很重要,微服務盛行,如何劃分邊界很重要 |
總結 |
需要有短長期的規劃,很多事情需要提前規劃。 需要增加業務敏感性,思考如何把業務做的更好,業界有沒有更好的解決方案。 需要加強系統邊界劃分的思考,減少耦合。 |
其他問題
找工作看重什麼
薪資;穩定性;業務發展,部門盈利的模式是什麼;薪資成長性;技術氛圍
職業規劃
想走技術,希望能在兩年內做個小組長,那這也必須要去個穩定的公司,如果頻繁變動,去另一家公司也只有當小弟的份,周圍太多這樣的同事。
和同事相比,怎麼樣
這個問題比較難,往好了說容易給人一種吹逼的假象,往低了說又會讓人覺得不自信,自己一開始也沒回答好,思考後覺得這樣回答或許更好
其實大家能在一家公司,在能力上差異是有,但不會特別大,這個有時候也很難辨別誰強誰弱多少,在以前看到一篇文章,
說能力的強弱就是解決問題的能力,如果遇到一個問題能很快解決,或者說能通過其他途徑有效的解決,那麼這就是能力的體現,
這的根本其實就是基礎技術能力怎麼樣,對業務的瞭解怎麼樣,對工具的瞭解怎麼樣等等。
當被一個小問題卡住了,面試官提示了結果,而你本來是知道的,怎麼辦?
有時候由於溝通問題,常常回答不上一些簡單問題,比如上次就被問到“spring 怎麼開啓註解掃描”,
沒想到他問的是component-scan,當面試官給了答案之後自己也沒做什麼表示。
面試結束後想,當時應該補充一下它的用法,還可以配置的屬性(includeFilter,excludeFilter之類的)等,
避免給人一種這麼簡單都不知道的感覺 = =
還有被問“在工作中使用過什麼設計模式”回答了用過工廠方法,策略等,
然後再被問"單例模式用過嗎",我居然只回答了說在工作中其實還沒有用過,就沒有後續了,
其實自己是知道幾種實現方式的,回答工作中沒有用過,給人的感覺就是“這個我不太熟悉,您問下一個問題吧。。。”
當自己回答正確,面試官卻堅持說沒有答對,怎麼應對?
之前去一家國企二面,其中問了“StringBuilder 和 StringBuffer 的區別”自己其實是正確回答了的,
面試官一直否定,質疑基礎不牢,他的意見是“如果在單線程環境下,沒有線程競爭,那不是用StringBuffer也沒毛病,
就沒有用StringBuilder的機會?”,
當時沒有拿出有力的證據來推翻對方,或許說出sync的實現原理就可以了,但是沒忘這方面想。。