首页
/
每日頭條
/
職場
/
面試的十個經驗之談
面試的十個經驗之談
更新时间:2024-07-25 11:26:30

前言

面經我們也看過分享過,但反向面經真的不多見,來看看大佬是怎麼反套路的!

對了,文末還有為大家準備的彩蛋✨,建議「戴上耳機」品鑒~

當你在面試中手撕算法時,會不會有這樣的情況:

  • 審題比周賽還快,面試官話音剛落,你就迫不及待敲起了代碼。
  • 人狠話不多,寫代碼的時候靜悄悄,全世界隻能聽見清脆的鍵盤聲。
  • 一旦思路走不通,表面強裝淡定,但暗自着急,内心獨自枯萎。

如果上述的情形戳中了你,那麼恭喜你即将探索面試中的新的隐藏技能

——利用好你的面試官!簡稱“反向面試”!

學會這點,讓你無痛提升面試水平,用嶄新的視角來看待技術面。

本文分成兩個部分:

心法篇:

  • 分析技術面試的底層邏輯,講清“反向面試”的動機和意義

實戰篇:

  • 保姆級教學面試方法論,對于面試中的各個環節逐步拆解!

面試的十個經驗之談(絕了反向面試經曆)1

面試心法

心法一:技術面試不僅是考察技術

不少朋友把全部的注意力都放在刷題上,一心争取面試中全部ace。

這樣的努力當然是值得誇誇的,但是遺憾的是,在實際的面試中,“做出題目”和“面試通過”并不能直接畫等号。

面試更像是一場全方位的考量:

  • 代碼寫的正不正确、優不優美,體現的是技術能力;
  • 清晰地闡述解題思路,分析複雜度,體現的是解決問題的能力;
  • 跟面試官保持良好的互動,體現的是溝通能力和團隊協作精神……

面試的底層邏輯是尋找高匹配、高潛力的優秀人才。

在校招場景中,大家經驗相對都薄弱,而企業也願意培養新人,所以展現出自己的潛力就更加重要。

也許你并沒有寫出完美的代碼,但是如果你展現出嚴謹的邏輯思維,訓練有素的解題思路,從容自信的态度,對技術深深的熱愛(熱情不夠,演技來湊!),跟面試官保持順暢溝通…說不定也會深深打動 ta!

心法二:面試是一場雙向奔赴

說完了技術面試的選人标準,那我們該如何展現出這些能力呢?這就要提到我們的工具人——面試官!跟獨自刷題不同,面試是一場兩個人的電影,充滿了互動性和主觀性。

面試官是一把雙刃劍(面試官:是誰物化我),利用的好就是你的 offer 小助手,利用不好就是感謝信問候。

  • 普通碼農眼裡的面試官:考驗我、為難我、威懾我的敵軍!
  • 高端碼農眼裡的面試官:一起完成精彩面試的隊友!

大家就想象面試官是輔助你通關的角色,在面試的全過程都要注重跟 ta 的交流互動,讓他感知到你的優秀!具體的做法在後面第二部分展開講。

心法三:熟能生巧 Practice Makes Perfect

無論對于任何崗位,短期提升面試水平的最有效的方法,就是模拟面試。

技術崗也不例外,尤其是對于刷題還不錯,但一到面試就緊張做不出來的同學,那請您務必模拟面試走起!

對于模拟面試,大家可能有些疑問。

Q1:自己一個人可以模拟面試嗎?

A1:當然可以!就像學英語一樣,如果沒有小夥伴陪你練習,那麼自己建立全英的環境也是不錯的選擇。假裝面試官 is watching you,你每次做題前就開啟自言自語模式,确認自己的思路,寫代碼時也邊寫邊講解(劃重點!這點是關鍵!),寫完代碼再講一遍思路、分析複雜度。也許一開始有點奇怪,練習多了就适應這種方式了!

Q2:模拟面試需要注意什麼呢?

A2:越貼近實際面試場景越好。不是做道某公司的真題就算模面了,而應該重視起來真實面試遇到的時間限制、follow-up questions、雙向溝通 這些元素。再強調一下雙向溝通的重要性,因為對于大多數人來說,寫代碼時講話難免會影響思路,所以模面一定要刻意練習。

另一點就是注意複盤總結。你可以對面試/模面進行錄音、錄屏,事後來給自己各方面的能力表現進行打分,不斷臻于完美。

Q3:模面好無聊,還有比模面更簡單的方法嗎?

A3:那就看别人的模拟面試吧~ 油管有許多資源的,就當刷劇一樣看。以他人為鏡,總結别人面試的亮點和問題,也是很好的學習和反思的方法。

我記得我兩年前看到過 william(某計算機天才帥哥 qwq)的模面視頻,真的被震撼了,他不僅是世界頂級的競賽選手,而且他把自己的思路講得非常清晰(這道題蠻難的,但他竟然教會了我 orz)。我也是從此把 william 當做榜樣,練習這樣的面試風格。

面試的十個經驗之談(絕了反向面試經曆)2

實踐教學

我們正式進入實戰篇,跟大家分享面試的全流程中,那些心機的溝通小技巧。

我們以一道經典的面試題 15. 三數之和 為例。

題目如下:

給你一個包含 n 個整數的數組 nums。判斷 nums 中是否存在三個元素 a,b,c ,使得 a b c = 0 ?請你找出所有和為 0 且不重複的三元組。

互動一:問清題目 Ask Clarifying Questions

不要着急直接做題哦,推薦按照以下幾個步驟進行。

Step 1:确定自己讀懂題目。

這點非常關鍵,盡管面試題一般不會很難懂,但萬一真理解錯題意,寫到一半兒才發現,不僅浪費時間,而且在面試官心中也超級減分。

如果你需要面試官的幫助,你可以大膽發問:

  • “題目中的 xxx 我有些不理解,您可以具體解釋一下嗎”
  • “請問能不能舉個簡單的例子呢,我想确認一下我是不是理解正确^ ^”
  • “我大概明白題目了,我确認一下,假如輸入是 xxxx,經過 blablabla,輸出應該是 yyyy 對嗎”

總之,不用擔心會顯得很笨哦(當然,問問題的前提是自己思考過)。

Step 2:确認輸入輸出格式、邊界條件等細節。

我們平時做題的時候,題面都是很清楚全面的,而在面試中可能是簡化版。我們需要挖掘題目中被忽略的地方,跟面試官确認。

可以問哪些問題呢?以 T15 為例,我們可以詢問:

  • 我們是返回三元組的個數,還是返回三元組本身呢?
  • 這些三元組以什麼形式返回呢?二維數組可以嘛?
  • 如果不存在這樣的三元組,是返回一個空數組嗎?
  • 返回的三元組順序有要求嗎?
  • a,b,c可以為同一索引的值嗎?

根據實際情況,向面試官适度問些這樣的問題。意義:

  • 進一步幫助自己理解題目
  • 稍後寫代碼時會更注意細節
  • 向面試官體現自己的嚴謹和專業度

互動二:确認思路 Explain Your Thoughts

讀懂題之後就開始寫代碼了嗎?大寫的 NO!

最穩妥的做法是:先确定解題思路,了然于心再動手敲代碼。而不是走一步看一步,幻想山重水複疑無路

Step 1:先分析暴力法等其他明顯非最優解法。

依然是 T15,在我開始想思路之前,我會先跟面試官說:

  • “這道題最容易想到的方法是暴力法,遍曆所有的 a、b、c 組合,判斷每個組合下是否相加為零。因為是三重循環,時間複雜度是 O(n^3),空間複雜度是 O(1)。”

然後過渡一下:

  • “暴力法做了一些冗餘的比較,比如 blablabla(舉個例子),所以應該有更優的解法(也可以直接點明有 O(n^2) 的解法)。”

隻是一個小示例。如果是有 3 種解法的題目,也可以把每種解法和相應的複雜度都簡述一遍,最後實現最優的,或者是面試官指定實現某個解法。

可能你會疑惑,講這些非最佳方法真的有用嗎?

  • 對自己而言,能幫助自己确定複雜度的上界。同時,發現暴力解法中的弱點,有助于提供思路。
  • 對面試官而言,讓他一開始就看到你的解決問題的能力、表達能力和複雜度分析能力!成功引起他的注意,讓他後面認真聽你講話,不會走神!

Step 2:思考更優思路

情況 1:如果題目非常陌生,一時半會兒沒有想法,需要冷靜思考,那麼千萬别直接沉默,否則會寂靜的尴尬。

記住,我們可是要引領面試官的,時刻展現我們愛溝通愛協作的個人魅力。

你可以說:

  • “我可以先自己想一下嗎?梳理好思路後再跟您溝通。”
  • “我有個大概的思路,但需要再思考一下,您稍等我一下可以嗎?”

然後你就禮貌地赢得了短暫的沉默權!

情況 2:已經有初步的想法思路了,無論是自己是否确定,都可以跟面試官先交流着。

繼續 T15,假如我已經想到用雙指針了,盡管我還沒思考“重複”怎麼處理,但是沒關系,先在整體思路上跟面試達成共識。

我會說:

  • “我覺得這道題可以用雙指針來解決。首先對數組排序,這是對本題使用雙指針的前提。遍曆元素 a,其他兩個 b、c 元素使用相向雙指針來确定。初始化b在a的後一位,c 在數組最後一位,比較 a b c 與 0 的關系,如果小于 0,那麼 b 右移,如果大于 0,那麼 c 左移,直到 b、c 重合。”

還記得嗎?面試官是我們的隊友,不是對手。現在就是 ta 發揮價值的地方啦。

跟面試官對齊方法,可以引導面試官進入我們的思考過程,跟着我們的節奏走。隻有充分明白我們的思路,才能更好地幫助我們。

具體有哪些幫助呢?

  1. 如果我們有沒考慮周全的地方,面試官會提醒我們,比如這道題,面試官可能會問“那你怎麼保證三元組不重複呢”。
  2. 如果我們整個思路就是錯誤的,面試官會及時把我們拉回來的,有可能直接指出來,有可能給你個用例讓你自己發現方法行不通。
  3. 如果我的思路不是他想要的,他可能會說“我明白你的方法了,不過還有更優的解法,你可以再想想”。這樣也很好,實時了解面試官的想法,不會浪費時間。
  4. 如果我們思路無敵正确,面試官一般會給出比較正面的回複,也可能比較委婉,比如“聽起來沒有什麼問題”,“那你代碼實現一下吧”。

Step 3:舉個用例,用自己的解法走一遍

盡管我們已經描述思路了,但是大部分題目單講思路會很抽象。為了确保面試官明白我的思路,我再會找簡單的例子,用我的解法來給 ta 過一遍。

你認為跑測試用例是代碼就位後的環節?不是的,真正心機的人還沒寫代碼就過用例了!

我一般是邊講邊在 IDE 裡寫注釋,親測非常專業。遇到樹圖的問題,最好也提前準備好畫圖工具,邊畫邊舉例。

繼續 T15 的例子,講述完雙指針的思路後,我會說:

  • “我舉個例子吧,假設我們有個數組,數組元素是 -1, -1, 0, 1, 2…”,

邊說邊在 IDE 裡敲下(python):

# nums = [-1,-1,0,1,2]

“初始化 a 是第 0 個元素,為 -1;b 是 -1;c 是 2。此時相加正好是 0”,我加了一行表頭 a,b,c,例子呢就跟表頭對齊。

# nums = [-1,-1,0,1,2] # a, b, c # -1, -1, 2 = 0

“這時候移 b 移 c 都行,那我就把 b 右移一位吧,得到 -1,0,2,相加是 1,大于 0。”邊說我又加了一行。

# nums = [-1,-1,0,1,2] # a, b, c # -1, -1, 2 = 0, so b -> # -1, 0, 2 > 0, so c <-

後面不再展開分析了,總之是借助 IDE 來清晰地展現出自己的解題思路。注意控制時間,例子中體現思路就可以,不一定解出答案。

這時候面試官不僅徹底懂你思路了,還可能對你印象很深刻呢。

如果舉例這一步也沒什麼問題,那就開始寫!代!碼!

互動三:邊寫邊說 Talk While You Code

到了寫代碼的環節,如果你靜悄悄地一言不發,面試官也不曉得你在寫什麼,ta 可能很快就開小差了…不!我們要讓他全神貫注,一整個拿捏住!

平時練習的“邊說邊寫”就派上用場了對不對。假設你就是編程老師,面試官就是你的學生,你要實時地跟他講解代碼,帶動他一起思考。

繼續 T15,我開始敲代碼了,我邊打字邊解釋:

  • “我們先定義一個函數,不妨叫做 threeSum 吧,輸入是一個數組,輸出是二維數組…”,

此時 IDE 中已經敲下了↓

def threeSum(nums: List[int]) -> List[List[int]]:

我們繼續:

  • “首先,我們将數組排個序,這步是 O(nlogn) 的複雜度…”

我習慣每個模塊都階段性總結一下複雜度,順帶就标在注釋裡了。也可以先不提複雜度,最後統一分析。

def threeSum(nums: List[int]) -> List[List[int]]: # step1: sort,O(nlogn) nums = sorted(nums)

當我定義變量的時候,向面試官解釋一下變量的含義。比如:

“我們建立 res 數組,用來存放結果”“下面開始遍曆 a,指針 i 指向的位置就是 a”

def threeSum(nums: List[int]) -> List[List[int]]: # step1: sort,O(nlogn) nums = sorted(nums) # step2: two pointers res = [] for i in range(len(nums)):

我們寫 if、while 這樣的語塊前,也宏觀地預告一下我們要做什麼。比如:

  • “接下來我會比較三數之和與 0 的關系,可能是大于 0,小于 0,等于 0 這三種情況”。

說着邊敲下這樣的 if-else 分支,給面試官一種大局觀的 feel。

j, k = i 1, len(nums)-1 while j < k: if nums[i] nums[j] nums[k] > 0: ... elif nums[i] nums[j] nums[k] < 0: ... else: ...

以上的舉例是想展示一下該如何邊寫代碼邊講解思路,大家也可以根據自己的風格調整措詞表達。

  • 朋友們,邊說邊寫真的是神仙面試方法
  • 面試官能跟着你的思路走,了解我們的思考過程。
  • 當我們思路卡頓的時候,因為面試官跟上我們了,ta 可以給予适當的提示(因為他知道這道題的解法呀!)。這也就是我們強調的“利用”面試官。
  • 當我們沉浸寫代碼的時候,可能會有一些自己沒留意的簡單語法錯誤和邏輯錯誤,面試官作為旁觀者,會及時提醒糾正。這樣的話,不至于等到最後跑用例 error 時再找 bug 在哪裡。另外,即使最後運行的時候報錯,面試官都不好意思給你減分,因為他全程跟着你的思路而他也沒看出來!

從此寫代碼時養成自言自語的好習慣 OK?

互動四:總結分析 Summarize and Analyze

代碼寫完之後,記得做兩件事:

  • 有始有終,整體再簡述一遍代碼思路。用鼠标引導着面試官視線,簡單介紹寫的每個模塊做了什麼事情。
  • 分析複雜度。分析每個步驟的時間複雜度是多少,最終整個方法的時間複雜度。還有空間複雜度是多少。

如果在總結環節,你突然意識到自己思路繞彎了,或者代碼寫的不簡潔,也請主動跟面試官分享:

  • “我發現 xx 部分想複雜了,我覺得 xxx 這樣做可能更清楚”。

面試官心裡也是加分的,他會覺得你很愛思考,可能是面試緊張,你原本的實力會更高。

最後,面試官可能要求跑幾個他指定的用例,順利的話就結束這場撕題,或者進入到 follow-up questions 了。即使測試結果不對,也不用着急,因為按照上述的方法走下來,代碼應該沒有太大問題,而且我們的表現一直很好,可能有些細節沒注意到。耐心地順着自己思路,尋找出錯的原因就好了。

寫在結尾

以上就是一些個人的小經驗。本文的初衷是我發現不少同學不太重視面試中的溝通交流,所以來分享我的 tips。當然,我們不能舍本逐末,過于追求這些軟實力,而忽視了技術實力的打磨。

如果有不同的想法,也歡迎在評論區理性讨論~

BY /

本文作者:coldme

聲明:本文歸“力扣”版權所有,如需轉載請聯系。

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
這4種蚊蟲不能拍死一定要記住
這4種蚊蟲不能拍死一定要記住
大家都對下圖中的這種蚊子不陌生吧?這種蚊子身上和腿上有黑白相間的花紋,俗稱黑斑蚊、花斑蚊、花腿蚊等等,幾乎每個人都被這種蚊子咬過,其實它的學名叫白紋伊蚊。幾十年前我國并沒有這種蚊子,它實為一種外來物種,一般30來歲的人小時候都沒有見過,是因...
2024-07-25
斑馬線紅綠燈手控操作
斑馬線紅綠燈手控操作
揚子晚報網3月25日訊(記者李沖)智能交通近年來正成為一個家喻戶曉的熱詞,那麼,智能交通到底是什麼呢?昨天,中電萊斯的相關負責人在參加中國智能交通與智能網聯産業發展論壇時,對熱門詞彙進行了解讀。萊斯信息黨委書記、總經理嚴勇傑在接受媒體采訪時...
2024-07-25
澡堂老闆家的男人們96集完整版
澡堂老闆家的男人們96集完整版
除夕之夜,全家人歡聚一堂,女人們在廚房準備要吃的餃子。男人們一起在客廳裡聊天。二兒子熙秀和姑爺連博士一邊聊天一邊擦拭着自己的高爾夫球杆。熙秀和連博士都喜歡打高爾夫球,有時候會結伴兒一起去高爾夫球場打球,連博士有一次和熙秀一起去打球,大概是瞎...
2024-07-25
胡杏兒參加演員請就位有酬勞嗎
胡杏兒參加演員請就位有酬勞嗎
《演員請就位2》,如果單看一些小年輕的表演,估計很多人都會失望,怎麼這一季的演員演技都這麼差?但是大家如果多去看看實力演員的表演你就會發現這一季其實也有不少實力派的,而他們的表現都很不錯。《演員請就位》中胡杏兒的表演簡直就是神仙演技,她真的...
2024-07-25
元旦鄭州車管所幾号上班
元旦鄭州車管所幾号上班
來源:河南廣電-映象網大象新聞·映象網記者李玮/文圖2022年4月2日,記者從鄭州交警支隊獲悉,按照國務院節假日時間安排及鄭州市政務服務大廳工作安排,2022年清明假期,鄭州車管所、各分所、市區交警大隊車管部門的業務服務大廳4月3日、4月4...
2024-07-25
Copyright 2023-2024 - www.tftnews.com All Rights Reserved