這是我遇到最蛋疼的一次面試,進(jìn)入大廈來到7樓,首先映入眼棉的是黑漆漆破舊的服務(wù)臺,給我很不好的印象。當(dāng)時就打算轉(zhuǎn)身就走,考慮到做了一個多小時的車過來了還是面一面吧。首先來的是HR,進(jìn)來介紹了公司的業(yè)務(wù),上班時間,加班和獎金等問題。令我非常生氣的是作為軟件開發(fā),還用每年兩三個月的出差時間?當(dāng)時又有了準(zhǔn)備走的想法。一面是技術(shù)面,估計(jì)來的是個小組長,年紀(jì)三十多吧,手里拿了我的簡歷和一張紙,看樣子上面寫的是要問的問題。滿滿一張紙。 先談做過的項(xiàng)目有哪些,負(fù)責(zé)這些項(xiàng)目的那些模塊,軟件都有哪些功能,順便根據(jù)你的回答問些可能涉及到的C++知識。這些都不在話下,畢竟本人也是做過大項(xiàng)目的,一些問題還是比較清楚的。問到設(shè)計(jì)模式,這個本人也有一些研究和應(yīng)用,跟他談了幾種設(shè)計(jì)模式,本打算和他洗講代理模式和適配器模式(這個樓主項(xiàng)目里面用的多)被他略過,當(dāng)時就懷疑這小子是不是不懂設(shè)計(jì)模式?然后問多線程的同步互斥,和多進(jìn)程通信問題。當(dāng)然這些問題樓主都有過研究自不必在話下。這類問答題歸為以下幾題:
面試官問的面試題: 1.什么時候用多線程?
2.多線程的好處和缺點(diǎn)?
3.使用多線程要注意哪些問題?如何解決?(跟他詳談了線程的同步與互斥的幾種方法,臨界區(qū),信號量,時間,互斥量,并比較詳細(xì)的談了這幾種方法的異同,結(jié)合樓主做過的項(xiàng)目,談了實(shí)際中在哪些場景下用到,看他樣子,就知道他自己可能都沒弄明白)
4.一些任務(wù) 用一個進(jìn)程多個線程 和 用多個 進(jìn)程同時來處理如何選擇?(樓主首先想到了性能,如果一項(xiàng)任務(wù)的執(zhí)行比較占用內(nèi)存或者cpu,而且職責(zé)比較單一可將其獨(dú)立開辟一個進(jìn)程,然后多進(jìn)程通信來解決問題,其他情況用多線程,然后解釋了進(jìn)程間通信會比較慢,比較占用資源,線程間通信會稍快,樓主自我感覺回答的有些道理)
5.問了軟件設(shè)計(jì)的幾層構(gòu)架(服務(wù)器,業(yè)務(wù)邏輯,界面)
6.問到軟件架構(gòu)的時候順便問了數(shù)據(jù)庫問題。接觸過哪些數(shù)據(jù)庫(sqlite),然后又問在多個表查詢的優(yōu)化問題(這個樓主真不知道怎么回答,直接說不知道),又問數(shù)據(jù)庫的存儲結(jié)構(gòu)(真沒印象,直接回答不知道),問了數(shù)據(jù)庫如何查詢,如何插入刪除指令(這個樓主還是懂一些的,sqlite開源數(shù)據(jù)庫,跟他扯了里面的一些函數(shù),估計(jì)他沒接觸過sqlite然后略過)
7.接著問網(wǎng)絡(luò)結(jié)構(gòu),7層架構(gòu),哪7層(這個大學(xué)課本里面還記得一點(diǎn),背出來幾個,然后又問IP屬于哪層?胡扯了物理層,不知道對不對)
8.接著窮追不舍的問socket編程(我擦這個樓主出了書上見過以外,根本就沒用過,直接講項(xiàng)目中沒接觸過,只知道有這玩意,不會用,然后還一直窮追不舍的問socket通信原理?腦子有?。?9.問了解不了算法?(肯定了解啊,然后問了幾種排序,問了幾種排序?qū)嶋H運(yùn)用中如何選擇?樓主跟他扯了跟時間復(fù)雜度有關(guān),跟內(nèi)存占用有關(guān),結(jié)合這兩種因素來選擇,揭示了幾種排序的好處和弊處,比如說堆排序占用內(nèi)存較大,數(shù)據(jù)量大影響速度,竟然告訴我答案是和數(shù)據(jù)量有關(guān),不知道我講的他有沒有在聽)
10.開始面向?qū)ο罅?,多繼承的好處和壞處?(樓主嚴(yán)重懷疑他普通話是否標(biāo)準(zhǔn),讓他重復(fù)了幾次,樓主搞忘記了多繼承的意思,不知道是一個基類派生多個子類,還是一個幾類向下派生一串類,然后直接講忘記了,請他告知這名詞啥意思,在得知是一個基類派生多個子類時,一時想不起來如何回答,冷場)
11.面向?qū)ο蟮膶?shí)現(xiàn)原理?(實(shí)話說樓主最討厭別人問些概念性的問題,不如來套筆試題,不過這個問題樓主還是知道的,回答是通過類的繼承,用基類的指針可以指向其派生的類,這么做的好處是在運(yùn)行中可以識別出是哪個派生類,運(yùn)行期識別)
12.類設(shè)計(jì)要注意的問題?(然后跟他講了單一職責(zé),解釋了一些)
13.類繼承的好處和壞處?(樓主回答好吃是復(fù)用了基類的特性,代碼重用,然后他趁此問了還有哪些其他方法能實(shí)現(xiàn)代碼重用?樓主卡住了,想了會,回答除了類的繼承還有組合,沒想到答對了,哈哈哈,然后接著問繼承組合如何選擇,跟她解釋了,如果幾個類聯(lián)合起來完成一項(xiàng)工作,使用組合,反正回答的不是很清楚吧)
14.還有很多問題,不記得了,反正非常全面,面試官普通話有問題,請他說了幾遍STL,說的我都不懂,然后請他在紙上寫,我擦這么簡單的問題還問。問了幾種容器的儲存性質(zhì),如何選擇,map結(jié)構(gòu)?都一一做了解釋。相信回答是對的。
15.泛型編程相關(guān)的問題?有沒有用戶泛型編程,肯定用過啊,項(xiàng)目代碼里面底層實(shí)現(xiàn)都是用的泛型編程。一一談了相關(guān)問題。
等等還有一些其他樓主記不起來的問題,給我的感覺,這么坑爹?問了一下午的概念性的問題,沒有筆試。沒有編碼,就問問答題。因?yàn)槊嬖嚨臅褪以谒麄児緝?nèi)部,所以看到了工作環(huán)境,很擁擠。樓梯口有員工在哪抽煙。感覺很不好。一面就這樣過去了,看了手機(jī),耗時1.5小時,大概等了10分鐘(個人感覺很長很長?。?,然后HR進(jìn)來告訴我一面通過,等會技術(shù)經(jīng)理來二面,我擦,又等了大概十分鐘的樣子,進(jìn)來一個白白胖胖的男子,又是自我介紹?談了最近幾次離職的原因。工作的內(nèi)容和性質(zhì)。閑聊了一會,就開始技術(shù)面,又是多線程的問題,這個研究過,講的還算比較清楚,然后問了軟件的三層架構(gòu),通信的同步異步問題,同步異步如何獲取結(jié)果,如果知道發(fā)給服務(wù)器的數(shù)據(jù)是成功的?(回答同步等待服務(wù)器返回結(jié)果,異步等待消息回調(diào))。然后又是socket,看樣子是一面的面試官注明的我在socket這方面的欠缺?然后就聊了聊公司文化,問我有沒有什么問題要問他。直接回答沒有。然后就是HR進(jìn)來談薪資,這時面試已經(jīng)過去將近三個小時了,我迫不及待的想走,談毛線,那有軟件工程師還出差的,直接想走了。然后跟我講公司什么正規(guī)啊,每年14個月薪資,公積金交的很高啊什么什么的。狗屁一通。雖然提供的薪水比我要求的相差一小點(diǎn)點(diǎn)。但是這氛圍我一點(diǎn)不能接受。直接說了不能接受出差,找了理由想撤,HR比較著急,說今天將offer發(fā)到我郵箱。來不來這周給答復(fù)。我說了聲好就離開了。