你有提桶跑路的勇氣嗎?
本文轉(zhuǎn)載自微信公眾號「故里學(xué)Java」,作者故里。轉(zhuǎn)載本文請聯(lián)系故里學(xué)Java公眾號。
又是一天夜深人靜,老故里照常掏出電腦,給自己充一下電,剛好就看到了一個關(guān)于面試的課程,因為動了提桶的心思就看一下,感覺很有用,就結(jié)合自己的想法記錄下來。
(圖片來源:極客時間 每日一課《如何全面、高效地準(zhǔn)備技術(shù)面試》)
接下來,分三部分:面試前、面試中、面試后。
面試前
1、編程能力
編程能力是最重要的,對于開發(fā)人員來說,這是核心競爭力,也是面試官最看重的部分之一。如何更快速的提高自己的編程能力?
每個人有各自的方式,比如:刷算法題,報訓(xùn)練營、自己看源碼等等。先說說刷算法題,很多人喜歡刷力扣,保持著不錯的刷題數(shù)量,如果站在更高的層面上思考,這個題想考什么知識點?我對這些知識點的掌握程度?這個知識點還可以怎么來考?相信在堅持刷題一段時間之后效果是很顯著的。
專欄中作者自己的刷題經(jīng)驗,我們也可以借鑒,當(dāng)沒有頭緒的時候,可以嘗試二叉樹相關(guān)的題目,二叉樹也是面試中非常高頻的考點,而二叉樹題目中通常涉及遞歸和遍歷,這些也是后面解決更復(fù)雜問題的基礎(chǔ)。
舉例:力扣226題“翻轉(zhuǎn)二叉樹”:
二叉樹問題往往是通過遞歸方法解決的,而遞歸的要點就在于不需要關(guān)注整體完成了什么任務(wù),只需要把任務(wù)細(xì)化為每次遞歸的子任務(wù),剩下的交給遞歸就可以了。對于這個題來說,我們只要把二叉樹每個節(jié)點的左右節(jié)點進(jìn)行交換,自上而下完成這個子任務(wù),整個二叉樹就完成了翻轉(zhuǎn)??梢韵葘懗鲎尤蝿?wù):
- def invertTree(root: TreeNode) -> TreeNode:
- # 將二叉樹的左右子節(jié)點進(jìn)行交換
- tmp_node = root.left
- root.left = root.right
- root.right = tmp_node
- return root
根據(jù)子任務(wù)代碼可以看出,針對輸入的一個根節(jié)點,我們已經(jīng)可以把它的左右節(jié)點進(jìn)行翻轉(zhuǎn),那怎么讓這個任務(wù)遞歸進(jìn)行呢?我們需要在完成當(dāng)前任務(wù)的后邊添加遞歸任務(wù)就可以:
- def invertTree(root: TreeNode) -> TreeNode:
- # 將二叉樹的左右子節(jié)點進(jìn)行交換
- tmp_node = root.left
- root.left = root.right
- root.right = tmp_node
- # 添加遞歸任務(wù)
- invertTree(root.left)
- invertTree(root.right)
- return root
在添加了遞歸任務(wù)后,我們還容易忽略一個問題,就是整個遞歸任務(wù)的最簡單情況是什么?根據(jù)題意應(yīng)停止遞歸:
- def invertTree(root: TreeNode) -> TreeNode:
- # 處理 basecase,遇到葉子節(jié)點停止
- if root == None:
- return None
- # 將二叉樹的左右子節(jié)點進(jìn)行交換
- tmp_node = root.left
- root.left = root.right
- root.right = tmp_node
- # 添加遞歸任務(wù)
- invertTree(root.left)
- invertTree(root.right)
- return root
在完成題目后,我們也應(yīng)該對自己進(jìn)行題問,明確自己是否掌握了這道題的知識點,即二叉樹的遍歷與遞歸思想的拆解,并且是否可以舉一反三,如果覺得自己掌握的不夠可以刷一些相似的題目。
以上這些是看到的別人的經(jīng)驗,我自己一般喜歡玩自己平時工作中的代碼,閑的時候看看自己寫的代碼,很多時間就會有新的想法,可能當(dāng)時寫的時候想的比較狹隘,隔了一段時間,結(jié)合模塊的整體情況重新設(shè)計,重構(gòu)一下代碼,這個過程也是很有趣的,也可以發(fā)現(xiàn)一些影響性能的點,不斷優(yōu)化,讓自己的程序更加順滑。自己寫的代碼自己是最了解的,結(jié)合平時自己學(xué)的系統(tǒng)設(shè)計、性能優(yōu)化等方面的知識,現(xiàn)學(xué)現(xiàn)賣,這個實踐的過程是我認(rèn)為效率最高的。
2、專業(yè)領(lǐng)域知識
編程能力只是面試過程中的一部分,專業(yè)領(lǐng)域的知識也是非常重要的,比如你特別熟悉電商業(yè)務(wù)、供應(yīng)鏈業(yè)務(wù)、全渠道業(yè)務(wù)等等,通常也是因人而異,因崗位而異。兩方面準(zhǔn)備:
準(zhǔn)備自己當(dāng)前或者之前做過的另外的專業(yè)知識,這對于找同領(lǐng)域崗位是非常有幫助的,很多公司都希望招一個技術(shù)ok又懂業(yè)務(wù)的伙伴,可以更好的融入團(tuán)隊。
針對性領(lǐng)域知識,針對想投的崗位,進(jìn)行一些特殊準(zhǔn)備,這樣擴展投遞崗位的范圍,也可以提高面試的成功率。
3、建立相關(guān)內(nèi)容
以上的準(zhǔn)備可能需要提前準(zhǔn)備,那么簡歷很多人就會忽略其重要性,在面試前匆匆準(zhǔn)備。面試官在跟我們面對面之前,都是只能通過簡歷來了解我們的過往經(jīng)歷,來進(jìn)行題問。
在準(zhǔn)備面試簡歷的時候也有很多技巧,社招簡歷,一些長期、規(guī)模較大的、較為重要的項目經(jīng)歷可以詳述,一些簡單的項目就可以忽略不寫。對寫在簡歷上的內(nèi)容充分準(zhǔn)備,在面試的時候侃侃而談,適當(dāng)?shù)匮由辏@些都可以是加分項。
面試中
狀態(tài)
面試過程中與面試官交流的過程,轉(zhuǎn)不停是一個非常重要的關(guān)鍵點。精神狀態(tài)就是我們的精神面貌,可以從說話的聲音、表情、舉止等方面反映出來,好的精神狀態(tài)可以提高面試管與你交流的意愿,也有助于你更好的展示自己,提升面試官的印象分。思維狀態(tài)就是要保持思維敏捷,快速解決面試官拋出的問題,心理狀態(tài)對于面試的影響可能是比較大的,很多人在面試的時候很容易因為過度緊張手腳冰涼大腦一片空白,在面試的時候適度緊張,然后再逐漸放松,讓你感到些許躁動,思維活動迅速,這就是最好的心理狀態(tài)。
態(tài)度
態(tài)度主要就誠實、誠懇。搞技術(shù)的人一般都比較簡單,如果在面試過程中不誠實或不誠信的情況,印象分可能就直接沒有了,面試官也不愿意招這樣的人。誠懇是在面試過程中,與面試官出現(xiàn)意見不一致,可以態(tài)度誠懇的交流交換意見,不一定要爭論個高下。
溝通
面試過程中的最后一個關(guān)鍵點就是溝通,主要是三個原則:溝通主動、回答明確、沉著應(yīng)對。面試過程中,面試官也會根據(jù)面試溝通情況綜合考量你在日常工作中的溝通能力,這些也是工作中非常重要的。舉例,如果在面試中突然忘記了某個點,不要突然就安靜下來,可以先從相關(guān)的內(nèi)容說起,有助于快速回憶,哪怕真的想不起來,也可以展示出你真的了解這一塊,只是偶爾忘記了。
面試后
面試結(jié)束,在收到offer之前都不能放松,還是要復(fù)盤、總結(jié),一方面對自己的技術(shù)查漏補缺,也可以對面試過程中發(fā)揮不好的地方進(jìn)行總結(jié),下次面試過程中多注意。
面試結(jié)束后,也可以主動和面試官確認(rèn)后續(xù)情況,也不能太著急,最好是在面試結(jié)束后3-5天后確認(rèn),這樣也可以體現(xiàn)我們對于這個機會的看重,如果有后續(xù)的面試還可以提前著手準(zhǔn)備。
最后
“金九銀十”馬上金九就要過去了,還有想法的兄弟們可以抓住后邊的機會,近期沒有跑路的兄弟,也可以思考一下,一些平時需要準(zhǔn)備的東西,等面試的時候再去準(zhǔn)備就有點遲了,日常中不斷提高自己,讓自己在未來有更多選擇。“
參考了:https://time.geekbang.org/dailylesson/detail/100056887#previewimg