1. 社招面試經(jīng)歷

        共 752字,需瀏覽 2分鐘

         ·

        2020-09-07 09:00

        面試概況

        1. 崗位:golang 開(kāi)發(fā)

        2. 公司:*** (公司名字就匿了,避免看了題再去面試對(duì)其他小伙伴不公平)

        3. 途經(jīng):朋友內(nèi)推

        4. 方向:IoT(物聯(lián)網(wǎng))/區(qū)塊鏈

        5. 用時(shí) 2 個(gè)多小時(shí)(其中半個(gè)小時(shí)在答題)

        6. 結(jié)果:?
          雖然失敗了但是還是有很多值得參考的地方,我還是挺看好這個(gè)公司發(fā)展的方向的,希望對(duì)想到這個(gè)(類(lèi))公司面試的小伙伴有幫助

        面試題目

        共 10 題,答題時(shí)間 30min,其實(shí)這些題都很基礎(chǔ),答案我放題后面

        不定項(xiàng)選擇題

        具體選項(xiàng)不完全確定是這些,但是考察的大概就這些內(nèi)容

        1. 對(duì)于func add(args ...int) int {}調(diào)用方式正確的選項(xiàng)有()
          A. add(1, 2)
          B. add(1, 3, 7)
          C. add([] int{1, 2})
          D. add([] int{1, 3, 7}...)

        2. 變量的初始化,下面正確的使用方式是()
          A. var i int = 10
          B. var i = 10
          C. i := 10
          D. i = 10

        3. golang 中的引用類(lèi)型包括()
          A. string
          B. map
          C. channel
          D. interface

        4. 關(guān)于整型切片的初始化,下面正確的是()
          A. s := make([] int)
          B. s := make([] int, 0)
          C. s := make([] int, 5, 10)
          D. s := [] int{1, 2, 3, 4, 5}

        5. 關(guān)于 channel,下面語(yǔ)法正確的是()
          A. var ch chan int
          B. ch := make(chan int)
          C. <- ch
          D. ch <-

        6. 關(guān)于無(wú)緩沖和有緩沖的 channel,下面說(shuō)法正確的是()
          A.無(wú)緩沖的 channel 是默認(rèn)的緩沖為 1 的 channel
          B.無(wú)緩沖的 channel 和有緩沖的 channel 都是同步的
          C.無(wú)緩沖的 channel 和有緩沖的 channel 都是非同步的
          D.無(wú)緩沖的 channel 是同步的,而有緩沖的 channel 是非同步的

        不定項(xiàng)選擇題答案?以下答案僅供參考,主程沒(méi)給我最終答案,上面部分問(wèn)題是我在網(wǎng)上搜索 golang 面試題后才回想起來(lái)的
        只要好好準(zhǔn)備,這些題都簡(jiǎn)單,全是基礎(chǔ)

        1. ABD

        2. ABC

        3. BCD

        4. BCD

        5. ABC

        6. D

        解答題

        不管是選擇題還是解答題都做到過(guò)類(lèi)似的題型,所以多刷面試題和 leetcode 沒(méi)毛病
        算法題給我出的都是 leetcode 里面的簡(jiǎn)單難度的,以至于我都覺(jué)得不算算法題了~
        除了算法還考了點(diǎn)基礎(chǔ)概念

        1. 簡(jiǎn)要描述下變量逃逸

        2. 簡(jiǎn)要描述下 slice 在 append 時(shí)發(fā)生了什么

        3. 給定一個(gè)整數(shù)數(shù)組 nums 和一個(gè)目標(biāo)值 target,請(qǐng)你在該數(shù)組中找出和為目標(biāo)值的那兩個(gè)整數(shù),并返回他們的數(shù)組下標(biāo)。leetcode 鏈接

        4. 給定兩個(gè)數(shù)組,編寫(xiě)一個(gè)函數(shù)來(lái)計(jì)算它們的交集、以及差集(交集簡(jiǎn)單,重點(diǎn)在差集上)。leetcode 上只講了交集沒(méi)講差集
          如輸入 nums1 = [4,9,5], nums2 = [7,5,10,8,4] 交集返回 [4,5] 差集返回 [9],[7,10,8]

        變量逃逸這題我懵了,我沒(méi)看過(guò)這個(gè)的定義,所以就亂寫(xiě)了一堆

        1. 答:不知此題是否想考 golang 的垃圾回收機(jī)制,golang 的垃圾回收機(jī)制使用的是三色標(biāo)記法,即先標(biāo)記后刪除,具體邏輯可在面試時(shí)詳講(解釋起來(lái)有點(diǎn)長(zhǎng)太長(zhǎng),所以就寫(xiě)了的面試時(shí)在直接給面試官講...)?但是,實(shí)際情況是這樣的嗎??并不是!?。∠旅鏁?huì)有解釋

        2. 答:先看原來(lái)的 cap 夠不夠裝下需要添加進(jìn)去的元素,如果夠,則直接添加 如果不夠,則判斷現(xiàn)在 slice 的大小,大于 1024 則擴(kuò)容 1.25 倍,不夠再擴(kuò) 1.25 倍;如果小于 1024,則擴(kuò)容到原來(lái)的兩倍,同理,不夠再擴(kuò) 2 倍?emmmm,這道題感覺(jué)回答得沒(méi)啥問(wèn)題,畢竟面試前惡補(bǔ)過(guò)?下面為官方實(shí)際擴(kuò)容的規(guī)則代碼

          func grow(s Value, extra int) (Value, int, int) {
          i0 := s.Len()
          i1 := i0 + extra
          if i1 < i0 {
          panic("reflect.Append: slice overflow")
          }
          m := s.Cap()
          if i1 <= m {
          return s.Slice(0, i1), i0, i1
          }
          if m == 0 {
          m = extra
          } else {
          for m < i1 {
          if i0 < 1024 {
          m += m
          } else {
          m += m / 4
          }
          }
          }
          t := MakeSlice(s.Type(), i1, m)
          Copy(t, s)
          return t, i0, i1
          }

        后面兩道題都是 leetcode 的題,我就不詳細(xì)解釋了
        不過(guò)我會(huì)在下面的主程面試中講下我是怎么做的,以及怎么 ‘忽悠’ 面試官,讓他知道我能做出更好的解決方案的

        做完題我感覺(jué)我有了,我在考慮要 15K?16K?18K?了

        主程面試

        由于是內(nèi)推(在此感謝 @ 劉水水同學(xué)的推薦),直接跳過(guò)了前面的步驟,做完題面主程了(好像也沒(méi)跳過(guò)啥~~,反正就是給了機(jī)會(huì))

        面試題講解

        主程先給我講了下多選題的第三題,我選反了...給說(shuō)了下引用類(lèi)型的概念,我還在第三題下面?zhèn)渥⒘讼?br style="box-sizing: border-box;outline-style: none;">抱歉,對(duì)于引用類(lèi)型的概念我不熟悉,根據(jù)題意我猜測(cè)答案要么是 A 要么是 BCD(即反過(guò)來(lái))
        結(jié)果我還是選反了~不過(guò)面試官還是比較滿意的我覺(jué)得這里也很重要,不要不會(huì)就直接放棄了,總要給出自己的結(jié)論,并且解釋下為什么我這樣想備注里面我沒(méi)寫(xiě)我為什么這樣猜測(cè),不過(guò)面試是我給面試官解釋了下比如 chan 不能單獨(dú)作為類(lèi)型,只能是 chan int,chan string 等 map 和 interface 同樣的道理(我都想到這里了居然還能答反,我也是醉了)?

        簡(jiǎn)答題 1. 面試官給我解釋了下變量逃逸的概念:變量逃逸就是變量的作用域的改變
        面試官說(shuō)到這里的時(shí)候,我接過(guò)來(lái)解釋到:就是變量從棧逃逸到堆上面去了嗎?
        得到肯定的回答后,我繼續(xù)說(shuō)(為了表明其實(shí)我還是理解,只是專(zhuān)業(yè)名詞不熟悉而已,所以該接過(guò)來(lái)說(shuō)的,必須主動(dòng)接過(guò)來(lái)說(shuō)),從棧到堆后會(huì)影響運(yùn)行速度什么的~因?yàn)槎焉系淖兞啃枰?GC 來(lái)處理(順便就我上面答的三色原理提了下,表明雖然我的答案有問(wèn)題,但是也不是毫無(wú)關(guān)聯(lián)的~~哈哈哈,機(jī)智如我,我覺(jué)得此處很重要,即使題沒(méi)答對(duì)至少要讓面試官知道我是知道些東西的
        Go 變量逃逸分析具體可以參考這篇博文

        ?

        算法題 1 我用的是兩次 for 循環(huán)遍歷,在面試官評(píng)價(jià)之前我就先解釋了下,一共半個(gè)小時(shí),外加手寫(xiě)代碼,沒(méi)辦法去考慮更優(yōu)解,然后就講了用 map 來(lái)解的更優(yōu)方案(假裝完美混過(guò)去)
        實(shí)際上是:面試官問(wèn)我,你為什么第一眼沒(méi)想到用 map 呢?
        emmmm 好的我錯(cuò)了(不過(guò)至少讓面試官知道我知道更好的解決方案),實(shí)際上兩次 for 的做法,在 leetcode 上都能得到雙 90 的得分了~?

        算法題 2,交集我的做法是把長(zhǎng) slice 放 map 里面,然后循環(huán)短的 slice 判定另外一個(gè)的 map 里面是否含有,若有,則把對(duì)應(yīng)項(xiàng) append 到結(jié)果集中(其實(shí)到這里我就反應(yīng)過(guò)來(lái)上一題該用 map 了,但是...答題卡位置有限加上時(shí)間限制...我就放棄了修改)
        差集同樣的用 map 加上 slice 的循環(huán)找出結(jié)果,主程給我說(shuō),此處更好的解決方案是使用 map 自帶的 delete 方法,把交集刪除后,剩下的就是差集了,可以把你們的答案留在評(píng)論區(qū)。。。。
        emmmm 的確更好哈,可惜我沒(méi)想到
        ok 面試題就到這里了,接下來(lái)是考了些 go 的基礎(chǔ)

        go 基礎(chǔ)的考核

        我盡量回憶當(dāng)時(shí)主程問(wèn)了的問(wèn)題,不確定能回憶完 后面的問(wèn)答題稍微要比前面的題難一點(diǎn)點(diǎn),不過(guò)也沒(méi)啥太難的 下面只做列舉,讓同行知道下面試官關(guān)心哪些問(wèn)題

        1. 簡(jiǎn)單談下 defer 的應(yīng)用場(chǎng)景及注意事項(xiàng)(關(guān)閉文件網(wǎng)絡(luò)請(qǐng)求等,先進(jìn)后出)

        2. 簡(jiǎn)單談下 chan 的應(yīng)用場(chǎng)景及注意事項(xiàng)

        3. 簡(jiǎn)述進(jìn)程、線程、協(xié)程的含義及區(qū)別

        4. 往一個(gè)對(duì)象里寫(xiě)入 10w 條數(shù)據(jù),怎樣保證數(shù)據(jù)的準(zhǔn)確性(chan、mutex 之類(lèi)的胡扯就對(duì)了)

        5. 閉包的注意事項(xiàng)(這里變量的引用是個(gè)坑)

        6. 簡(jiǎn)單介紹下 interface 的應(yīng)用場(chǎng)景(我給扯出什么 2.0go 打算加入泛型什么的,實(shí)際上面試官想問(wèn)的是接口不是 interface{}這個(gè)數(shù)據(jù)類(lèi)型...,等面試官給我糾正了下思路然后,我又繼續(xù)講接口相關(guān)的東西...) ... ... ok golang 的基礎(chǔ)考核完了,我感覺(jué)我目前問(wèn)題不大基本能過(guò)面試這關(guān)了
          繼續(xù)考慮我的 15K?16K?18K?了~~~

        和公司業(yè)務(wù)相關(guān)的技術(shù)考核

        emmmm,然后我就掛在了這里了
        由于他們公司是做 IoT 的所以偏向底層
        所以就考了我一些操作系統(tǒng)原理的問(wèn)題
        作為一個(gè)非科班出生的人,我當(dāng)場(chǎng)懵逼
        我知道接下來(lái)我將面臨的問(wèn)題是我無(wú)法正確解答的
        不過(guò)抱著試一試的心態(tài)繼續(xù)淦?以下答案請(qǐng)勿參考,我是亂答的,你只需要看題就夠了

        1. 線上 cpu 和內(nèi)存突然飆高后應(yīng)該怎么排錯(cuò)(debug)

          emmmm,linux 應(yīng)該有命令能直接查看哪個(gè)進(jìn)程導(dǎo)致的,然后.... 好吧我不知道

        2. 哪些操作會(huì)導(dǎo)致內(nèi)存泄漏

          有大量的 io 的情況(我也不知道對(duì)不對(duì),后來(lái)去搜了下,好像是沒(méi) close 才會(huì)出現(xiàn))

        3. 哪些操作會(huì)導(dǎo)致 io 開(kāi)銷(xiāo)大幅上升

          大量的文件讀寫(xiě)操作會(huì)導(dǎo)致 io 開(kāi)銷(xiāo)劇增,所以可以用 bufio 緩沖 還有呢?emmm 比如數(shù)據(jù)庫(kù)的大量讀寫(xiě) 還有呢?emmm 比如緩存的讀寫(xiě)... 還有呢?(好吧我錯(cuò)了)不知道了 網(wǎng)絡(luò)請(qǐng)求也會(huì)造成大量的 io,嚴(yán)格意義上來(lái)講數(shù)據(jù)庫(kù)的讀寫(xiě)也屬于網(wǎng)絡(luò)請(qǐng)求中的一種 emmmm (好的,我明白了,實(shí)際上第一次答的時(shí)候去掉'文件'這兩個(gè)字就好了)

        ...后面還問(wèn)了些比較涉及操作系統(tǒng)底層的東西,由于我不太能理解所以就記得不太清

        面試官結(jié)語(yǔ)

        面:你 golang 的基礎(chǔ)不錯(cuò),語(yǔ)言上沒(méi)有什么問(wèn)題,但是我們公司做的 IoT 方向,除了語(yǔ)言本身,還要懂的操作系統(tǒng)原理才行,比如你的算法題,你就沒(méi)去考慮時(shí)間空間的問(wèn)題,如果你去一個(gè)偏向業(yè)務(wù)的崗位問(wèn)題不大,但是我們公司是偏向底層的,所以不太適合你 我:那貴公司是否有其他偏向業(yè)務(wù)開(kāi)發(fā)的部門(mén)呢?面:公司還有個(gè)部門(mén)是做區(qū)塊鏈的,更偏向底層 emmmmm

        面試官走了 hrbp 來(lái)了(其實(shí)就已經(jīng)結(jié)束了)

        如果我們公司有其他崗位適合你的,我們這邊會(huì)通知你的 (哦,理解了,大概意思就是你現(xiàn)在不適合我們公司,面試結(jié)束)

        個(gè)人覺(jué)得重要的中間細(xì)節(jié)

        1. 簡(jiǎn)答題最好一開(kāi)始就寫(xiě)最好的方案

        2. 有的東西不知道沒(méi)關(guān)系,但是不回答那你肯定就沒(méi)戲了,胡扯也得扯,反正你跑遠(yuǎn)了,面試官會(huì)把你拉回來(lái)的(有的人覺(jué)得,懂就是懂,不懂就是不懂,不要在面試官面前胡扯,面試官都能看出來(lái)的,其實(shí)我不這樣認(rèn)為,胡扯即使說(shuō)錯(cuò)了至少能讓面試官看到我在其他哪個(gè)哪個(gè)方面也還是略懂的)

        3. 雖然打斷面試官的話是不禮貌的,但是你應(yīng)該酌情考慮在關(guān)鍵地方合適的 ‘打斷’ 面試官的發(fā)言,然后你接上往后說(shuō),讓面試官知道你是知道這個(gè)知識(shí)點(diǎn)的(這個(gè)地方一定要把握好度,沒(méi)把握好的話,你之前回答的再好你都無(wú)了)

        4. 明確你面試的公司的 ‘屬性’ 針對(duì)性的復(fù)習(xí)下(但凡我提前看過(guò)操作系統(tǒng)原理,我都不會(huì)掛得那么毫無(wú)懸念)

        5. 如果你有不錯(cuò)開(kāi)源項(xiàng)目(或者參與的開(kāi)源項(xiàng)目)一定要寫(xiě)在簡(jiǎn)歷里,如果不是我簡(jiǎn)歷?里面寫(xiě)了和開(kāi)源相關(guān)的東西,我可能連面試的機(jī)會(huì)都沒(méi)有,如果有合適的工作崗位,歡迎小伙伴們給推薦哦,我的簡(jiǎn)歷?在 github 上有一份~~

        講道理
        我已經(jīng)很滿意我面試的表現(xiàn)了
        雖然掛了,但是我把我知道的都說(shuō)出來(lái)了(當(dāng)然 grpc,http2 那些沒(méi)考)
        而且通過(guò)面試官對(duì)我的評(píng)價(jià)以及答題情況讓我對(duì)自己在 go 語(yǔ)言基礎(chǔ)操作上更有自信了
        然后就是,一個(gè)人、一本書(shū)、一個(gè)月還你一個(gè)奇跡(操作系統(tǒng)原理從入門(mén)到放棄)
        一年前的我:php 是世界上最好的語(yǔ)言
        現(xiàn)在的我:go 是世界上最好的語(yǔ)言

        最后
        祝我自己今年能成功轉(zhuǎn)入 go 開(kāi)發(fā)者的行列中

        最后的最后
        祝 go 紅紅火火

        目前Gopher China大會(huì)已開(kāi)啟。關(guān)于大會(huì)商務(wù)合作,請(qǐng)聯(lián)系聯(lián)系司徒小姐姐:18516100522 ??


        關(guān)于大會(huì)報(bào)名,請(qǐng)點(diǎn)擊“閱讀原文”進(jìn)入活動(dòng)頁(yè)面。但由于目前信息不夠齊備, 也請(qǐng)保持對(duì)我們的關(guān)注,后續(xù)會(huì)揭開(kāi)更多驚喜。


        最后,希望每位開(kāi)發(fā)者永遠(yuǎn)保持不斷提升自己的動(dòng)力,因?yàn)闊o(wú)論外界如何,技術(shù)實(shí)力就是我們的底氣。

        瀏覽 41
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
          
          

            1. 中文字幕在线看片 | 亚洲经典成人 | 成人碰碰视频 | 老熟妇亂伦视频一区二区三区 | 久久久毛片无码免费收看 |