- 前端程序員面試筆試真題與解析
- 猿媛之家組編 平文 楚秦等編著
- 2340字
- 2021-08-20 11:04:48
經(jīng)驗(yàn)技巧2 如何回答技術(shù)性的問題?
程序員面試中,面試官會(huì)經(jīng)常詢問一些技術(shù)性的問題,有的問題可能比較簡(jiǎn)單,都是歷年的筆試面試真題,求職者在平時(shí)的復(fù)習(xí)中會(huì)經(jīng)常遇到,應(yīng)對(duì)自然不在話下。但有的題目可能比較難,來(lái)源于Google、Microsoft等大企業(yè)的題庫(kù)或是企業(yè)自己為了招聘需要設(shè)計(jì)的題庫(kù),求職者可能從來(lái)沒見過或者從來(lái)都不能完整地、獨(dú)立地想到解決方案,而這些題目往往又是企業(yè)比較關(guān)注的。
如何能夠回答好這些技術(shù)性的問題呢?編者建議:會(huì)做的一定要拿滿分,不會(huì)做的一定要拿部分分。即對(duì)于簡(jiǎn)單的題目,求職者要努力做到完全正確,畢竟這些題目,只要復(fù)習(xí)得當(dāng),完全回答正確一點(diǎn)問題都沒有(編者認(rèn)識(shí)的一個(gè)朋友據(jù)說(shuō)把《編程之美》《編程珠璣》《程序員面試筆試寶典》上面的技術(shù)性題目與答案全都背得滾瓜爛熟了,后來(lái)找工作簡(jiǎn)直成了“offer殺器”,完全就是一個(gè)Bug,無(wú)解了);對(duì)于難度比較大的題目,不要驚慌,也不要害怕,即使無(wú)法完全做出來(lái),也要努力思考問題,哪怕是半成品也要寫出來(lái),至少要把自己的思路表達(dá)給面試官,讓面試官知道你的想法,而不是完全回答不會(huì)或者放棄,因?yàn)槊嬖嚬俸芏鄷r(shí)候除了關(guān)注你的獨(dú)立思考問題的能力以外,還會(huì)關(guān)注你技術(shù)能力的可塑性,觀察求職者是否能夠在別人的引導(dǎo)下去正確地解決問題,所以,對(duì)于你不會(huì)的問題,他們很有可能會(huì)循序漸進(jìn)地啟發(fā)你去思考,通過這個(gè)過程,讓他們更加了解你。
一般而言,在回答技術(shù)性問題時(shí),求職者大可不必膽戰(zhàn)心驚,除非是沒學(xué)過的新知識(shí),否則,一般都可以采用以下六個(gè)步驟來(lái)分析解決。
(1)勇于提問
面試官提出的問題,有時(shí)候可能過于抽象,讓求職者不知所措,或者無(wú)從下手。所以,對(duì)于面試中的疑惑,求職者要勇敢地提出來(lái),多向面試官提問,把不明確或二義性的情況都問清楚。不用擔(dān)心你的問題會(huì)讓面試官煩惱,影響你的面試成績(jī),相反,這樣做還會(huì)對(duì)面試結(jié)果產(chǎn)生積極影響:一方面,提問可以讓面試官知道你在思考,也可以給面試官一個(gè)心思縝密的好印象;另一方面,方便自己對(duì)問題的解答。
例如,面試官提出一個(gè)問題:設(shè)計(jì)一個(gè)高效的排序算法。求職者可能丈二和尚摸不到頭腦,排序?qū)ο笫擎湵磉€是數(shù)組?數(shù)據(jù)類型是整型、浮點(diǎn)型、字符型還是結(jié)構(gòu)體類型?數(shù)據(jù)基本有序還是雜亂無(wú)序?數(shù)據(jù)量有多大,1000以內(nèi)還是百萬(wàn)以上個(gè)數(shù)?此時(shí),求職者大可以將自己的疑問提出來(lái),問題清楚了,解決方案自然也就出來(lái)了。
(2)高效設(shè)計(jì)
對(duì)于技術(shù)性問題,如何才能打動(dòng)面試官?完成基本功能是必需的,僅此而已嗎?顯然不是,完成基本功能頂多算及格水平,要想達(dá)到優(yōu)秀水平,還應(yīng)該考慮更多的內(nèi)容,以排序算法為例:時(shí)間是否高效?空間是否高效?數(shù)據(jù)量不大時(shí)也許沒有問題,如果是海量數(shù)據(jù)呢?是否考慮了相關(guān)環(huán)節(jié),例如數(shù)據(jù)的“增刪改查”?是否考慮了代碼的可擴(kuò)展性、安全性、完整性以及魯棒性?如果是網(wǎng)站設(shè)計(jì),是否考慮了大規(guī)模數(shù)據(jù)訪問的情況?是否需要考慮分布式系統(tǒng)架構(gòu)?是否考慮了開源框架的使用?
(3)偽代碼先行
有時(shí)候?qū)嶋H代碼會(huì)比較復(fù)雜,上手就寫很有可能會(huì)漏洞百出、條理混亂,所以,求職者可以首先征得面試官的同意,在編寫實(shí)際代碼前,寫一段偽代碼或者畫好流程圖,這樣做往往會(huì)讓思路更加清晰明了。
切記在寫偽代碼前要告訴面試官,否則他們很有可能對(duì)你產(chǎn)生誤解,認(rèn)為你只會(huì)紙上談兵,實(shí)際編碼能力卻不行。只有征得了他們的允許,方可先寫偽代碼。
(4)控制節(jié)奏
如果是算法設(shè)計(jì)題,面試官都會(huì)給求職者一個(gè)時(shí)間限制用以完成設(shè)計(jì),一般為20min左右。完成得太慢,會(huì)給面試官留下能力不行的印象,但完成得太快,如果不能保證百分百正確,也會(huì)給面試官留下毛手毛腳的印象,速度快當(dāng)然是好事情,但只有速度,沒有質(zhì)量,速度快根本不會(huì)給面試加分。所以,編者建議,回答問題的節(jié)奏最好不要太慢,也不要太快,如果實(shí)在是完成得比較快,也不要急于提交給面試官,最好能夠利用剩余的時(shí)間,認(rèn)真檢查一些邊界情況、異常情況及極性情況等,看是否也能滿足要求。
(5)規(guī)范編碼
回答技術(shù)性問題時(shí),多數(shù)都是紙上寫代碼,離開了編譯器的幫助,求職者要想讓面試官對(duì)自己的代碼一看即懂,除了字跡要工整,不能龍飛鳳舞以外,最好嚴(yán)格遵循編碼規(guī)范,注意函數(shù)變量命名、換行縮進(jìn)、語(yǔ)句嵌套和代碼布局等,同時(shí),代碼設(shè)計(jì)應(yīng)該具有完整性,保證代碼能夠完成基本功能、輸入邊界值能夠得到正確輸出、對(duì)各種不合規(guī)范的非法輸入能夠做出合理的錯(cuò)誤處理,否則,寫出的代碼即使無(wú)比高效,面試官也不一定看得懂或者看起來(lái)非常費(fèi)勁,這些對(duì)面試成功都是非常不利的。
(6)精心測(cè)試
在軟件界,有一個(gè)共識(shí):任何軟件都有bug。但不能因此就縱容自己,允許代碼錯(cuò)誤百出。尤其是在面試過程中,實(shí)現(xiàn)功能也許并不十分困難,困難的是在有限的時(shí)間內(nèi)設(shè)計(jì)出的算法,各種異常是否都得到了有效的處理,各種邊界值是否都在算法設(shè)計(jì)的范圍內(nèi)。
測(cè)試代碼是讓代碼變得完備的高效方式之一,也是一名優(yōu)秀程序員必備的素質(zhì)之一。所以,在編寫代碼前,求職者最好能夠了解一些基本的測(cè)試知識(shí),做一些基本的單元測(cè)試、功能測(cè)試、邊界測(cè)試以及異常測(cè)試。
在回答技術(shù)性問題時(shí),注意在思考問題的時(shí)候,千萬(wàn)別一句話都不說(shuō),面試官面試的時(shí)間是有限的,他們希望在有限的時(shí)間內(nèi)盡可能地去了解求職者,如果求職者坐在那里一句話不說(shuō),不僅會(huì)讓面試官覺得求職者技術(shù)水平不行,還會(huì)覺得求職者思考問題能力以及溝通能力可能都存在問題。
其實(shí),在面試時(shí),求職者往往會(huì)存在一種思想誤區(qū),把技術(shù)性面試的結(jié)果看得太重要了。面試過程中的技術(shù)性問題,結(jié)果固然重要,但也并非最重要的內(nèi)容,因?yàn)槊嬖嚬倏粗氐牟粌H僅是最終的結(jié)果,還包括求職者在解決問題的過程中體現(xiàn)出來(lái)的邏輯思維能力以及分析問題的能力。所以,求職者在與面試官的博弈中,要適當(dāng)?shù)靥釂枺ㄟ^提問獲取面試官的反饋信息,并抓住這些有用的信息進(jìn)行輔助思考,從而博得面試官的歡心,提高面試的成功率。
- Python快樂編程:人工智能深度學(xué)習(xí)基礎(chǔ)
- JavaScript修煉之道
- 摩登創(chuàng)客:與智能手機(jī)和平板電腦共舞
- MySQL 8從入門到精通(視頻教學(xué)版)
- C語(yǔ)言程序設(shè)計(jì)(第2版)
- INSTANT Django 1.5 Application Development Starter
- 軟件品質(zhì)之完美管理:實(shí)戰(zhàn)經(jīng)典
- Canvas Cookbook
- Vue.js應(yīng)用測(cè)試
- HTML5+CSS3+jQuery Mobile APP與移動(dòng)網(wǎng)站設(shè)計(jì)從入門到精通
- HTML+CSS+JavaScript網(wǎng)頁(yè)制作:從入門到精通(第4版)
- 實(shí)驗(yàn)編程:PsychoPy從入門到精通
- 和孩子一起學(xué)編程:用Scratch玩Minecraft我的世界
- Tkinter GUI Programming by Example
- Visual C++網(wǎng)絡(luò)編程教程(Visual Studio 2010平臺(tái))