寫在之前
疫情原因,被困家裡,但是依舊阻擋不了我面試的步伐,基本上最近一個月不是電話就是視頻面試。雖然失敗很多,但是也收穫不少。雖然,我的面試經歷和一些麵霸和收割機的大神相比絕不算豐富,但我的這些經歷應該能代表很大一部分人的心路歷程:
從無憂無慮也無知的狀態,然後遭遇挫敗,跌入低谷,連續數天的黑暗,慢慢調整,逼著自己不能鬆懈,看到改變,收穫肯定,分享經歷。經歷不知道到多少次電話面、視頻面,然後這是我最直觀的感受:
offer = 心態 * (實力 + 面試技巧 + 秘籍) + 緣分運氣
我就從左到右說起吧。。。。。。
![offer = 心態 X (實力 + 面試技巧 + 秘籍) + 緣分運氣](http://p2.ttnews.xyz/loading.gif)
01 心態
其實每個階段的改變,也都是心態轉變的過程,所以首先要說的一點,就是心態。在上面這種公式裡,心態作為一個因子存在。沒錯,心態可以影響你面試的準備,筆試的狀態,實力的發揮,可以影響一個面試過程的方方面面。心態崩了,就只剩運氣了,offer估計也就走遠了。
那怎麼調整自己的心態呢?
- 第一,要正視自己的能力。不輕視,不高估。
- 第二,不要總給自己消極的暗示,心態差了積極調整。
- 第三,對於身邊的同學,多交流,不比較。
對自己的水平有個很清楚的認識,並選擇自己合適的公司,好好準備自己的筆試、面試,不怕失敗,但保證每次面試都有收穫和提高,那滿意的offer早晚會來。
02 實力
這裡說的實力指的是硬實力,也就是技術上的真實積累(當然產品崗的就是對於產品相關知識的積累),而其實呢,軟實力在面試過程中也尤為重要(有時候真的要更重要),主要是指和麵試官的溝通,對一個問題的闡述方式和表達方式,邏輯思維能力以及的價值觀和為人等。
那麼,實力包含哪些方面呢?(我也只是腦子裡過了一遍,肯定有遺漏的,大家自己補全就行了,畢竟每個人的知識覆蓋範圍也不同)
2.1 基礎知識
2.1.1 算法和數據結構
- 數組、鏈表、二叉樹、隊列、棧的各種操作(性能,場景)
- 二分查找和各種變種的二分查找
- 各類排序算法以及複雜度分析(快排、歸併、堆)
- 各類算法題(手寫)
- 理解並可以分析時間和空間複雜度。
- 動態規劃(筆試回回有。。)、貪心。、
- 紅黑樹、AVL樹、Hash樹、Tire樹、B樹、B+樹。
- 圖算法(比較少,也就兩個最短路徑算法理解吧)
2.1.2 計算機網絡
- OSI7層模型(TCP4層)
- 每層的協議
- url到頁面的過程 HTTP
- http/https 1.0、1.1、2.0 get/post 以及冪等性
- http 協議頭相關 網絡攻擊(CSRF、XSS)
- TCP/IP 三次握手、四次揮手
- 擁塞控制(過程、閾值)
- 流量控制與滑動窗口
- TCP與UDP比較 子網劃分(一般只有筆試有)
- DDos攻擊 (B)IO/NIO/AIO 三者原理,各個語言是怎麼實現的
- Netty
- Linux內核select poll epoll
2.1.3 數據庫(最多的還是mysql,Nosql有redis)
- 索引(包括分類及優化方式,失效條件,底層結構)
- sql語法(join,union,子查詢,having,group by)
- 引擎對比(InnoDB,MyISAM)
- 數據庫的鎖(行鎖,表鎖,頁級鎖,意向鎖,讀鎖,寫鎖,悲觀鎖,樂觀鎖,以及加鎖的select sql方式)
- 隔離級別,依次解決的問題(髒讀、不可重複讀、幻讀)
- 事務的ACID B樹、B+樹 優化(explain,慢查詢,show profile)
- 數據庫的範式。
- 分庫分表,主從複製,讀寫分離。
- Nosql相關(redis和mem***d區別之類的,如果你熟悉redis,redis還有一堆要問的)
2.1.4 操作系統
- 進程通信IPC(幾種方式),與線程區別
- OS的幾種策略(頁面置換,進程調度等,每個裡面有幾種算法)
- 互斥與死鎖相關的 linux常用命令(問的時候都會給具體某一個場景)
- Linux內核相關(select、poll、epoll)
2.1.5 編程語言(這裡只說Java)
- Java基礎(面向對象、四個特性、重載重寫、static和final等等很多東西)
- 集合(HashMap、ConcurrentHashMap、各種List,最好結合源碼看)
- 併發和多線程(線程池、SYNC和Lock鎖機制、線程通信、volatile、ThreadLocal、CyclicBarrier、Atom包、CountDownLatch、AQS、CAS原理等等)
- JVM(內存模型、GC垃圾回收,包括分代,GC算法,收集器、類加載和雙親委派、JVM調優,內存洩漏和內存溢出)
- IO/NIO相關 反射和***、異常、Java8相關、序列化 設計模式(常用的,jdk中有的)
- Web相關(servlet、cookie/session、Spring
、Mybatis、Tomcat、Hibernate等) - 看jdk源碼
2.2 項目經理
這個每個人的項目不同,覆蓋的技術也不一樣,所以不能統一去說。 這裡的技巧呢,在下面也會詳細說明。 無非是找到自己項目中的亮點,簡歷上敘述的簡練並且吸引眼球,同時自己要很熟悉這個點(畢竟可以提前準備) 最好自己多練,就像有個劇本或者稿子一樣,保證面試中可以很熟練通俗地講出,並且讓人聽著很舒服。
2.3 其他擴展技能(這個方方面面太多了,全部掌握基本上不可能,只是作為大家其他時間擴充技能的參考)
2.3.1 分佈式架構:(瞭解原理就行,如果真的有實踐經驗更好)
- CAP原理和BASE理論。 Nosql與KV存儲(redis,hbase,mongodb,mem***d等)
- 服務化理論(包括服務發現、治理等,zookeeper、etcd、springcloud微服務、)
- 負載均衡(原理、cdn、一致性hash)
- RPC框架(包括整體的一些框架理論,通信的netty,序列化協議thrift,protobuff等)
- 消息隊列(原理、kafka,activeMQ,rocketMQ)
- 分佈式存儲系統(GFS、HDFS、fastDFS)、存儲模型(skipList、LSM等)
- 分佈式事務、分佈式鎖等
2.3.2 腳本語言:(只是作為橫向擴充,一般問到linux也會問問shell腳本)
- python
- php
- shell
- golang
- ...
2.3.3 大數據與數據分析:
- hadoop生態圈(hive、hbase、hdfs、zookeeper、storm、kafka)
- spark體系
- 語言:python、R、scala 搜索引擎與技術
2.3.4 機器學習算法
- 模型和算法很多。不細說了,如果很熟練就去投算法,國內很多公司都算法崗都很稀缺,其他崗可以大概瞭解下理論。
2.3.5 其他工具的理論和使用
- 這個更多了,問的多的比如git、docker、maven/gradle、Jenkins等等,自己需要的話選擇性地去學。
03 技巧(面試中的技巧和經驗)
- 好好對著自己寫的簡歷一行一行看一遍,這都是你挖的坑,是準備給面試官作為切入點交流的,並不是自己往裡跳的。(對每一行都要有足夠了解和把握)
- 面試過程不要緊張,尤其是前幾次,建議先從小公司入手鍛鍊下面試經驗(參考我之後自身的反面教
- 面試方式不同,側重點不同(無非是電話、視頻、現場三種)
- 學會平等交流,別把自己身段放的太低
- 回答問題的時候不要一口氣把知道的全部說完,然後還毫無條理。學會一個知識點由淺入深講解給面試官,並且留有餘地給他進一步去問。 如果真的不巧聊到不擅長的地方,學會轉移話題
- 如果真的被問到不會的,就直接說你不會(說你不會、說你不會,我再補充兩遍),或者禮貌地說這方面可能我還要多學習。面試一定要真誠
- 問到有什麼offer就直接說,不要藏著掖著,也不要把更好的offer(比如bat的)講的非常誘人,一副bat我都拿到了的樣子(面試官會心想,那你還來面試我們幹什麼)
04 秘籍
注意注意:下面分享的這些個秘籍,若是有需求,私信我 “秘籍” 即可免費獲取!!
4.1 分佈式
![offer = 心態 X (實力 + 面試技巧 + 秘籍) + 緣分運氣](http://p2.ttnews.xyz/loading.gif)
4.2 微服務
4.3 開源框架
4.4 性能優化
4.5 MySQL
4.6 JVM
4.7 Spring全家桶(Spring+Boot+Cloud+MVC)
4.8 Redis
4.9 併發編程
4.10 大廠面試真題
4.11 算法
4.12 其他(java核心知識整理【包含30個分類】、java面試寶典)
05 緣分和運氣
關於這一點只有一句:平時多做好事,熱愛生活。
其實都知道面試要講緣分,講運氣,但人往往可以在很順利地通過面試之後說句運氣好運氣好,卻很難在努力準備卻失敗的經歷之後保持平靜。
但不管能不能轉運是不是本命年有沒有緣分,努力和收穫的關係總是多年不變的真理。
所以,講心態,講實力,講方法。足矣。
總結起來offer = 心態 * (實力 + 面試技巧 + 秘籍) + 緣分運氣
實力與技巧都可培養,秘籍我這裡就有,若是需要便可免費分享給你,
轉發+私信關鍵詞 “秘籍” 就可免費領取我的這些學習筆記啦!!!
閱讀更多 追逐仰望星空 的文章