摘要:面試官說(shuō)那我問(wèn)你一個(gè)哲學(xué)的問(wèn)題,為什么有數(shù)據(jù)結(jié)構(gòu)這種東西哇,這是啥,巴拉巴拉扯了一通,大致就是物以類(lèi)聚,人以群分,先人積累下來(lái)的經(jīng)驗(yàn),這些讓我們更方便處理數(shù)據(jù)啥的。
前因,沒(méi)有比摸魚(yú)有趣的事了
距離自己被外派(俗稱(chēng)外包)出去,已經(jīng)過(guò)了快五個(gè)月,工作的話,很閑。人啊,一定保持好的習(xí)慣,懶惰是會(huì)上癮,日常摸魚(yú),懷疑人生,我是誰(shuí),我在哪,我要干什么。
中午吃飯的時(shí)候,收到了boss直聘的一條消息,XX發(fā)來(lái)一個(gè)信息,是一個(gè)前端職位,問(wèn)我是否感興趣,講道理,我還是很詫異的,一是我BOSS直聘上的簡(jiǎn)歷很久沒(méi)更新了,二是我的在線簡(jiǎn)歷寫(xiě)的一塌糊涂,連項(xiàng)目介紹都沒(méi)有,我猜應(yīng)該是HR手點(diǎn)錯(cuò)了,發(fā)錯(cuò)消息了。思考了一會(huì),想著試試吧,就點(diǎn)了感興趣,一天過(guò)去了,我看沒(méi)回,emmm,果然點(diǎn)錯(cuò)了。結(jié)果后來(lái)又聯(lián)系我,希望我把簡(jiǎn)歷發(fā)給她,我一想,還有戲,晚上的時(shí)候草草寫(xiě)了一份簡(jiǎn)歷遞了過(guò)去。然后又一天過(guò)去了,接著又過(guò)去了一天,我想,差不多涼了。誰(shuí)知道后來(lái)又聯(lián)系了我,問(wèn)我下周有沒(méi)有時(shí)間去面試,我靠,那天可是星期五啊,我啥都木有準(zhǔn)備,面試不是直接翻船,而且下周這邊的項(xiàng)目還要上線,問(wèn)星期五可以不??jī)商爝^(guò)去了,我想,差不多涼了吧,后面又回了了,說(shuō)可以,郵件已經(jīng)發(fā)到我郵箱了。我掐指一算,還有四天,趕緊將自己的switch、3DSLL收了起來(lái),開(kāi)始準(zhǔn)備面試,然后自己給自己出面試題。
過(guò)程自己給自己出面試題是個(gè)艱難的過(guò)程,就像自己和自己下象棋一樣?;撕脦滋熳隽藗€(gè)總結(jié),將自己記錄過(guò)的難點(diǎn)和自己想理解的東西做了個(gè)總結(jié)。除了排序的話,其他都是自己寫(xiě)的,整個(gè)過(guò)程也碰到些麻煩,改了很多次。我把這些放在了GitHub上,我用了我老婆的照片,各位別介意。這些問(wèn)題,有的我給了詳細(xì)的解題過(guò)程,喜歡的話點(diǎn)個(gè)star吧。后期遇到一些有趣的東西我也會(huì)在上面更新的。
我會(huì)在最后分析一些問(wèn)題的解題過(guò)程。面試過(guò)程
講道理,XX的大樓,感覺(jué)還不錯(cuò)。來(lái)的有點(diǎn)早,在下面找了個(gè)奶茶店,一邊瘋狂喝水,一遍思考人生。然后到點(diǎn)了,就上去了,面試是在8樓,講道理,還是有點(diǎn)緊張的,畢竟一年沒(méi)準(zhǔn)備過(guò)面試了,心里還是很玄的。進(jìn)去以后,和其他面試的小伙伴分配到一個(gè)房間了,過(guò)了一會(huì),有人拿了面試題過(guò)來(lái),給了隔壁的小伙伴。。。我偷偷瞄了一眼,是 爪哇。過(guò)了一會(huì)又過(guò)來(lái)了,拿了兩份面試題,一份給了我,一份給了另一個(gè)小伙伴,都是前端的。面試題總共三頁(yè)還是四頁(yè),都是基礎(chǔ),拿起筆 pia pia 就寫(xiě)了起來(lái),過(guò)了一會(huì)就交了,剛交就想起來(lái)自己一道題做錯(cuò)了,感覺(jué)很難受。。。小插曲:旁邊面 爪哇 的小伙伴用手機(jī)瘋狂百度,筆試過(guò)程沒(méi)人管的,我是老實(shí)人,不干這事
一面面試官感覺(jué)人不錯(cuò),拿著我的面試題和簡(jiǎn)歷到外面去了,我趕緊和他說(shuō)我一道題做錯(cuò)了,并說(shuō)了正確答案。面試官表示他還沒(méi)看面試題,然后過(guò)了一遍,不好意思,我好像全做對(duì)了。。。剛開(kāi)始就隨便問(wèn)了問(wèn)this,嚴(yán)格模式和非嚴(yán)格模式下執(zhí)行函數(shù)的this。
干貨,整個(gè)過(guò)程都是用筆寫(xiě)的
我提了,說(shuō)面試題目太簡(jiǎn)單了(現(xiàn)在想想的確這樣說(shuō)不好),然后面試官就說(shuō),那我給你出個(gè)不簡(jiǎn)單的,flatten的實(shí)現(xiàn),我一想,這個(gè)我好像寫(xiě)過(guò),拿起筆,啪啪啪就寫(xiě)起來(lái)了。過(guò)
問(wèn)了我知不知道最近網(wǎng)上的快排事件,我說(shuō)知道,就讓我寫(xiě)了,我用的是最常用的3while寫(xiě)法,寫(xiě)到一半他就沒(méi)讓我寫(xiě)了,我寫(xiě)的和書(shū)上的一毛一樣。。。然后又讓我說(shuō)出歸并排序的原理,這個(gè)沒(méi)有讓我寫(xiě)了,我就直接說(shuō)了,就是切成兩個(gè)數(shù)組,巴拉巴拉,具體自己上網(wǎng)查詢(xún)。過(guò)
知道immer.js嗎,Mobx作者弄的一個(gè)不可變數(shù)據(jù),知道的不多,就隨便說(shuō)了說(shuō),然后又讓我說(shuō)明了immutable.js的數(shù)據(jù)更新原理,和react的tree diff有點(diǎn)像,巴拉巴拉將自己知道說(shuō)了。過(guò)
KOA中間件原理,臥槽,這個(gè)我讀過(guò)源碼,還分析過(guò),就是通過(guò)compose組合中間件,巴拉巴拉。過(guò)
獲取所有文件和文件夾。這個(gè)就是個(gè)樹(shù)結(jié)構(gòu),因?yàn)槲矣洸磺錰s APi的使用了,就問(wèn)能不能用dom樹(shù)去代替,面試官說(shuō)可以,這個(gè)我寫(xiě)過(guò)。。。巴拉巴拉,面試官說(shuō),能不能不用遞歸,用while+廣度+深度還是啥,我靠,我懵了,雖然我知道廣度優(yōu)先,深度優(yōu)先,有點(diǎn)緊張,抓著筆思考了會(huì)人生,面試官看我這樣,就向我解釋了下。答案放在GitHub上了。zi
面試官說(shuō):“那我問(wèn)你一個(gè)哲學(xué)的問(wèn)題,為什么有數(shù)據(jù)結(jié)構(gòu)這種東西?”哇,這是啥,巴拉巴拉扯了一通,大致就是物以類(lèi)聚,人以群分,先人積累下來(lái)的經(jīng)驗(yàn),這些讓我們更方便處理數(shù)據(jù)啥的。尬
對(duì)函數(shù)式編程了解多少,對(duì)算法了解多少。我函數(shù)式懂的不多,函數(shù)式編程還是比較難的,什么y組合子,聽(tīng)著就暈。算法就隨便說(shuō)了些,動(dòng)態(tài)規(guī)劃樹(shù)啊啥的。面試官問(wèn)我是怎樣學(xué)習(xí)算法的,我就說(shuō)自己平時(shí)會(huì)在知乎看些相關(guān)的文章。然后面試官就說(shuō)想我這樣零散的看并不能獲得太大提高,應(yīng)該有組織的去看。關(guān)于函數(shù)式,他向我推薦了Haskell,說(shuō)我只需要看看基本就可以了,然后再去看redux就會(huì)好很多。懵
又問(wèn)了很多,然后問(wèn)我想了解什么,其實(shí)我知道XX的技術(shù)棧的,所以就說(shuō)了些,表示有很大的興趣。
其他問(wèn)題就不一一列舉了,他還問(wèn)我看了關(guān)于node的什么書(shū)籍,我張口差點(diǎn)說(shuō)了《九淺一深nodejs》。。。我已經(jīng)記不清楚是誰(shuí)帶的頭了
總結(jié):面試官和我說(shuō),人的知識(shí)結(jié)構(gòu)是T字型的,底下的都是基礎(chǔ)知識(shí),只有基礎(chǔ)知識(shí)弄好才能學(xué)習(xí)更廣的知識(shí),然后說(shuō)了我基礎(chǔ)不太好。。。我一想,完蛋,這下真涼了,我的認(rèn)知里,基礎(chǔ)是最重要的。
二面一面面試官把我?guī)Щ厝チ耍屛业纫粫?huì),過(guò)了一會(huì),二面面試官來(lái)了,繼續(xù)和面試官一起出去。二面問(wèn)的問(wèn)題就是舒服多了。
因?yàn)槲以诤?jiǎn)歷中寫(xiě)了用了react和vue,就問(wèn)了我兩者有什么不同。我就說(shuō)了更新策略啊,react通過(guò)setState手動(dòng)批量更新,vue是Object.defineProperty去監(jiān)聽(tīng)屬性變化。然后還有什么slot和this.props.children這樣。
關(guān)于redux的一些問(wèn)題,熟悉redux一般不會(huì)有太大問(wèn)題。
就是一些雜碎的問(wèn)題,為啥想離職,關(guān)于離職,多從自身找問(wèn)題,別說(shuō)公司咋的咋的,很不好。
又問(wèn)了些,然后問(wèn)我想知道什么,我balala說(shuō)了一些,然后問(wèn)面試是不是結(jié)束了,然后他說(shuō)是,結(jié)果下個(gè)星期出來(lái),我一聽(tīng),這下真涼了,好歹有個(gè)三面人事面吧。。。
最后面試官把我?guī)Я嘶厝ィ矝](méi)說(shuō)讓我走,等了半個(gè)小時(shí),我想大概掛了,就找了別的員工問(wèn)了下是不是自己可以走了,然后問(wèn)了人事,說(shuō)把我忘了。。。以為二面面試官把我送走了,準(zhǔn)備打電話和我通知的。然后人事說(shuō)讓我放心,給了口頭offer,正式offer下個(gè)星期給我,然后就是和說(shuō)要準(zhǔn)備什么,讓我看郵件。
結(jié)局還算滿(mǎn)意吧,表現(xiàn)的的確不太好,但也算把自己學(xué)的東西說(shuō)出來(lái)了。結(jié)局也是好的,順利拿到offer。
解析,補(bǔ)充一些小東西,具體看源碼
扁平化數(shù)組,flatten已經(jīng)進(jìn)入規(guī)范,在MDN上的Array可以查到該方法,記住一點(diǎn),能用reduce的都用reduce,數(shù)組運(yùn)算,你的下次運(yùn)算結(jié)果需要用到上次運(yùn)算的結(jié)果,都可以用reduce。
const flatten = (arr) => arr.reduce((a, b) => { if (Array.isArray(b)) { return a.concat(flatten(b)); // 該項(xiàng)是數(shù)組,連接 遞歸調(diào)用的結(jié)果,否則直接連接 } return a.concat(b); }, []);
深克隆
需要注意的坑就是typeof null、typeof RegExp("test")、typeof Date()、typeof Boolean(true)、typeof String("t")、typeof Number(1)為object,數(shù)組和對(duì)象也要區(qū)分開(kāi),具體看源碼。
求一個(gè)頁(yè)面多少dom節(jié)點(diǎn)
原理和flatten一樣,都是遞歸,看源碼
求dom樹(shù)結(jié)構(gòu)
這個(gè)個(gè)人覺(jué)得挺重要的,也很有趣,看源碼,也是遞歸
求一顆dom樹(shù)的最大深度
原理是遞歸一次,就說(shuō)明向下走了一層,記錄最大值,比較,結(jié)束后返回
const getDomDepth = (node) => { let max = 1; void function fn(d, m) { m++; Array.from(d.children).forEach(n => { if (n.children.length) { fn(n, m); } else { if (max < m) max = m; } }) }(node, 1); return max; }
看源碼->看源碼->看源碼,幫忙點(diǎn)star == 遇到不理解的在issues里面提出來(lái),倒數(shù)第二題我還沒(méi)寫(xiě),因?yàn)楫?dāng)晚去看react的東西了,今天又去了前端千人峰會(huì)(一個(gè)人)。晚點(diǎn)補(bǔ)充。
這些東西也不算簡(jiǎn)單,如果感到疑惑也沒(méi)什么,分析出來(lái)只是希望能幫助大家理解一些東西,與君共勉,加油~
補(bǔ)充:明天好像是520,可惜我是只單身狗。。。希望大家玩的開(kāi)心吧
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/95097.html
摘要:最近面試一家有直播業(yè)務(wù)的公司,明顯感覺(jué)到對(duì)多線程的理解有一些要求。第一輪面試大概就面了分鐘左右,一輪下來(lái)口干舌燥。下面對(duì)面試題做了下簡(jiǎn)單分類(lèi),分享給大家。 最近面試一家有直播業(yè)務(wù)的公司,明顯感覺(jué)到對(duì)多線程的理解有一些要求。第一輪面試大概就面了 70 分鐘左右,一輪下來(lái)口干舌燥。 下面對(duì)面試題做了下簡(jiǎn)單分類(lèi),分享給大家。 多線程 有什么方法可以監(jiān)控線程的狀態(tài) synchronized ...
摘要:浪費(fèi)青春話不多說(shuō),之前投的簡(jiǎn)歷,有家公司忽然聯(lián)系說(shuō),想和我約個(gè)時(shí)間點(diǎn)電話面試。不了解自己的水平,永遠(yuǎn)都會(huì)止步于眼前的安逸。電話面試流程面試官簡(jiǎn)單介紹一下來(lái)意,然后先了解工作經(jīng)驗(yàn),再問(wèn)技術(shù)問(wèn)題。 最近換了個(gè)項(xiàng)目,現(xiàn)階段處于項(xiàng)目啟動(dòng)階段,沒(méi)有開(kāi)發(fā)任務(wù),天天悠悠哉哉地都快把自己的本職忘了。浪費(fèi)青春?。?!話不多說(shuō),之前投的簡(jiǎn)歷,有家公司HR忽然聯(lián)系說(shuō),想和我約個(gè)時(shí)間點(diǎn)電話面試。雖然這段時(shí)間一直...
摘要:浪費(fèi)青春話不多說(shuō),之前投的簡(jiǎn)歷,有家公司忽然聯(lián)系說(shuō),想和我約個(gè)時(shí)間點(diǎn)電話面試。不了解自己的水平,永遠(yuǎn)都會(huì)止步于眼前的安逸。電話面試流程面試官簡(jiǎn)單介紹一下來(lái)意,然后先了解工作經(jīng)驗(yàn),再問(wèn)技術(shù)問(wèn)題。 最近換了個(gè)項(xiàng)目,現(xiàn)階段處于項(xiàng)目啟動(dòng)階段,沒(méi)有開(kāi)發(fā)任務(wù),天天悠悠哉哉地都快把自己的本職忘了。浪費(fèi)青春?。?!話不多說(shuō),之前投的簡(jiǎn)歷,有家公司HR忽然聯(lián)系說(shuō),想和我約個(gè)時(shí)間點(diǎn)電話面試。雖然這段時(shí)間一直...
摘要:獲取的對(duì)象范圍方法獲取的是最終應(yīng)用在元素上的所有屬性對(duì)象即使沒(méi)有代碼,也會(huì)把默認(rèn)的祖宗八代都顯示出來(lái)而只能獲取元素屬性中的樣式。因此對(duì)于一個(gè)光禿禿的元素,方法返回對(duì)象中屬性值如果有就是據(jù)我測(cè)試不同環(huán)境結(jié)果可能有差異而就是。 花了很長(zhǎng)時(shí)間整理的前端面試資源,喜歡請(qǐng)大家不要吝嗇star~ 別只收藏,點(diǎn)個(gè)贊,點(diǎn)個(gè)star再走哈~ 持續(xù)更新中……,可以關(guān)注下github 項(xiàng)目地址 https:...
閱讀 840·2023-04-26 00:13
閱讀 2885·2021-11-23 10:08
閱讀 2462·2021-09-01 10:41
閱讀 2127·2021-08-27 16:25
閱讀 4221·2021-07-30 15:14
閱讀 2375·2019-08-30 15:54
閱讀 873·2019-08-29 16:22
閱讀 2754·2019-08-26 12:13