一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

面試經(jīng)驗(yàn)分享之?dāng)?shù)據(jù)結(jié)構(gòu)、算法題

算法與數(shù)據(jù)結(jié)構(gòu) ? 來(lái)源:Blog of 太極儒 ? 作者:Frank Song ? 2022-11-30 11:37 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前言

面試 IT 企業(yè)的研發(fā)崗位,數(shù)據(jù)結(jié)構(gòu)和算法顯然是必考的項(xiàng)目。俺只學(xué)過(guò)普通的數(shù)據(jù)結(jié)構(gòu)課程,沒(méi)讀過(guò) STL,也沒(méi)有過(guò) ACM 的訓(xùn)練和比賽經(jīng)歷,在一開(kāi)始面對(duì)這樣類型題目的時(shí)候,心里還是十分忐忑的。大大小小幾十場(chǎng)面試下來(lái),自己在這方面總算有了一定的心得積累,在此拋磚引玉,以饗讀者。

在正式介紹題目和準(zhǔn)備方法之前,有兩點(diǎn)需要說(shuō)明,

●Google 和 Facebook 這類對(duì)算法有很高要求的公司的在線測(cè)試我沒(méi)有參加過(guò)(不過(guò)在牛人內(nèi)推幫助下有過(guò)面試體驗(yàn)……),這超出了我目前的編碼能力范圍,網(wǎng)上有不少拿到 Google、Facebook offer 的經(jīng)驗(yàn)總結(jié)文章,可以移步觀賞;

●前段時(shí)間在微博上又看到有人說(shuō)自己把 leetcode 刷了好幾遍,不過(guò)一些轉(zhuǎn)發(fā)評(píng)論者覺(jué)得, IT 公司面試中的算法考察沒(méi)有價(jià)值,一來(lái)工作里用不太上,二來(lái)把程序員素質(zhì)考察搞成了應(yīng)試教育,他們認(rèn)為更重要的是應(yīng)聘者的工程能力。遇到這樣的討論,我一般喜歡和一把稀泥。若干年前, Google、微軟的面試題讓大家眼前一亮,覺(jué)得能選拔出個(gè)性十足的聰明人來(lái),不過(guò)隨著大家對(duì)這類題目的適應(yīng),可能選拔出來(lái)的人也在趨同,至少很多人都會(huì)在面試前用心準(zhǔn)備,據(jù)報(bào)道 Google 最近也是放棄了這類面試題目。沒(méi)有什么一勞永逸、一成不變的考查方式,畢竟面試是人和人之間的動(dòng)態(tài)“較量”。不要貪戀算法的奇技淫巧,也不要因?yàn)轭}目篩選力度的衰減而否定考察初衷。面試不僅是考驗(yàn)求職者,也同樣在考驗(yàn)面試官,如果問(wèn)的都是老題兒,那本山大叔肯定都會(huì)搶答了。

言歸正傳,以下分?jǐn)?shù)據(jù)結(jié)構(gòu)題目、算法題目、開(kāi)放題目三部分來(lái)介紹我在面試中碰到的問(wèn)題。

數(shù)據(jù)結(jié)構(gòu)題目

概述

雖然課本由簡(jiǎn)到繁、由難到易地介紹了諸多數(shù)據(jù)結(jié)構(gòu),我在面試中被問(wèn)到的卻還都是基本類型,比如堆棧、隊(duì)列、鏈表、二叉樹(shù)。題目主要有兩類,數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)和具體情境下數(shù)據(jù)結(jié)構(gòu)的應(yīng)用。

分類討論

類型一:數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)

1、實(shí)現(xiàn) java.util.List 中的基礎(chǔ)功能;

2、實(shí)現(xiàn)棧,使得 添加、刪除、max 操作的復(fù)雜度為 O(1)(我腳著好像是不可實(shí)現(xiàn)的,想到最好的是添加、刪除 O(log), max 是 O(1)),實(shí)現(xiàn)見(jiàn) 正在努力減肥的胖子 同學(xué)給出的評(píng)論,參考 leetcode 中的這道題目,慚愧;

3、選取任意數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)添加、刪除、隨機(jī)返回三個(gè)功能,分析復(fù)雜度;

4、用數(shù)組實(shí)現(xiàn)隊(duì)列,各操作的復(fù)雜度分析。

類型二:數(shù)據(jù)結(jié)構(gòu)應(yīng)用

1、兩棵樹(shù)相加——對(duì)應(yīng)位置兩棵樹(shù)都有值則相加,對(duì)應(yīng)位置只有一棵樹(shù)有值則取該值;

2、用速度不同的指針可以判斷鏈表中是否有環(huán),問(wèn)兩速度滿足怎樣的關(guān)系可以保證發(fā)現(xiàn)環(huán);

3、如何在語(yǔ)料中尋找頻繁出現(xiàn)的字串,分析復(fù)雜度(tire樹(shù));

4、中綴表達(dá)式轉(zhuǎn)逆波蘭表達(dá)式,逆波蘭表達(dá)式求值;

5、數(shù)據(jù)解壓縮,3(a4(ab)) -> aababababaababababaabababab;

6、二叉樹(shù)的文件存儲(chǔ)。

準(zhǔn)備建議

上上之選當(dāng)然是看《算法導(dǎo)論》,書(shū) 和 公開(kāi)課 都算。時(shí)間精力不足又想臨時(shí)抱佛腳,清華大學(xué)計(jì)算機(jī)系鄧俊輝老師的 教材 是好選擇,也可以看 公開(kāi)課。注意熟記不同數(shù)據(jù)結(jié)構(gòu)的不同操作的不同實(shí)現(xiàn)方式(比如 哈希表的插入刪除查找)的復(fù)雜度分析,不管面試官給你出的題目是難是易,妥妥兒的會(huì)問(wèn)復(fù)雜度。

算法題目

概述

有過(guò)面試經(jīng)歷的企業(yè)(BAT、小米、宜信、猿題庫(kù)、FreeWheel等)當(dāng)中,還沒(méi)有誰(shuí)問(wèn)過(guò)我需要復(fù)雜算法(比方說(shuō) 此鏈接 中的很多知識(shí)點(diǎn))才能解決的問(wèn)題。我遇到的算法題目大致可以分為兩類:

●經(jīng)典算法實(shí)現(xiàn)題 快速排序、歸并排序、堆排序、KMP算法等都是重點(diǎn),重要的是代碼的正確性,其次是復(fù)雜度分析,當(dāng)然,人家也不都是直接問(wèn)你怎么實(shí)現(xiàn)這個(gè)具體算法,而是包裝到情境里;

●思維益智題 考察你分析問(wèn)題的能力,大部分可以歸結(jié)到二分、動(dòng)態(tài)規(guī)劃、遞歸上,重要的是思路,其次是盡量低的復(fù)雜度,再次是代碼的正確性。

下面具體介紹我遇到的兩種類型題目中的問(wèn)題。

分類討論

類型一:經(jīng)典算法實(shí)現(xiàn)題

1、實(shí)現(xiàn)快速排序、歸并排序、堆排序,各排序算法復(fù)雜度分析;

2、實(shí)現(xiàn)KMP,解釋原理;

3、迷宮的深度搜索、廣度搜索;

4、寫(xiě) find 函數(shù),在目標(biāo)串中匹配模式串(要考慮中文字符的情況)。

類型二:思維益智題

1、數(shù)列中找第 k 大的數(shù)字(與快排或堆排序有關(guān));

2、兩個(gè)有序數(shù)組,尋找歸并排序后數(shù)組的中位數(shù)/第 k 大數(shù)字(與二分有關(guān));

3、一維數(shù)組,swap 其中的幾對(duì)數(shù)字(每個(gè)數(shù)字只屬于一次 swap 操作),實(shí)現(xiàn)查找(與二分有關(guān));

4、一個(gè)有序數(shù)組,其中一個(gè)數(shù)字發(fā)生變異,但不知道變異后會(huì)不會(huì)影響整體序,如何實(shí)現(xiàn)查找;

5、二維數(shù)組,每行遞增,每列遞增

●實(shí)現(xiàn)查找;

●二維數(shù)組,每行遞增,每列遞增,求第 k 大的數(shù);

●任意交換其中的兩數(shù),發(fā)現(xiàn)并恢復(fù);

6、尋找字符串中第一個(gè)只出現(xiàn)一次的字符;

7、統(tǒng)計(jì)數(shù)列中的逆序?qū)Γw并排序有關(guān));

8、最長(zhǎng)公共子串(動(dòng)態(tài)規(guī)劃有關(guān));

9、最大子序列和,允許交換一次的最大子序列和;

10、給定數(shù)組,尋找 next big(堆排序有關(guān));

11、一維有序數(shù)組,經(jīng)過(guò)循環(huán)位移后,最小的數(shù)出現(xiàn)在數(shù)列中間

●如果原數(shù)組嚴(yán)格遞增,如何找這個(gè)最小數(shù);

●如果原數(shù)組嚴(yán)格遞增或遞減,如何找這個(gè)最小數(shù);

●如果原數(shù)組非嚴(yán)格遞增或遞減,如何找這個(gè)最小數(shù);

12、數(shù)組可能是遞增、遞減、遞減后遞增、遞增后遞減四種情況,遞增遞減都是非嚴(yán)格的,如果有轉(zhuǎn)折點(diǎn),返回轉(zhuǎn)折點(diǎn)的值,否則返回-1;

13、單向網(wǎng)絡(luò),起點(diǎn)和終點(diǎn)唯一且連通,尋找那些一旦被刪除將導(dǎo)致起點(diǎn)終點(diǎn)無(wú)法連通的點(diǎn);

14、有序數(shù)組尋找和為某數(shù)的一對(duì)數(shù)字;

15、墻里能裝多少水;

16、打印螺旋數(shù)組;

17、打印組合數(shù);

18、字符數(shù)組,統(tǒng)計(jì)指定區(qū)間內(nèi)的回文串個(gè)數(shù)。

準(zhǔn)備建議

●不要糾結(jié)于是否是最佳思路,要保證能在 10-15 分鐘內(nèi)給出一個(gè)解決方案,并分析復(fù)雜度;

●基礎(chǔ)的可以讀讀 @研究者July 的這本 電子書(shū),更深入的可以閱讀 CSDN 等博客中大牛們寫(xiě)的 ACM 解題報(bào)告;

●hihocoder、topcoder、leetcode、codility、POJ 等網(wǎng)站擇一練手。

開(kāi)放題目

這類開(kāi)放題目讓你自主選擇數(shù)據(jù)結(jié)構(gòu),主要是考察求職者對(duì)于數(shù)據(jù)結(jié)構(gòu)的特性與使用場(chǎng)景的綜合理解,在面對(duì)具體應(yīng)用場(chǎng)景時(shí)能否運(yùn)用已有的數(shù)據(jù)結(jié)構(gòu)和算法知識(shí)提出合理的解決方案。一般來(lái)說(shuō)在這類問(wèn)題里哈希表的出場(chǎng)率會(huì)比較高……例題如下

1、大數(shù)據(jù)量的 url log,怎么去重且統(tǒng)計(jì)每個(gè) url 的出現(xiàn)次數(shù),復(fù)雜度分析;

2、設(shè)計(jì) cache 系統(tǒng)

●設(shè)計(jì) cache 的接口;

●可以用什么數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn);

●如何實(shí)現(xiàn)可伸縮的容量;

●cache 的空間管理策略,比如 cache 哪些條目,何時(shí)清理;

●cache 系統(tǒng)啟動(dòng)時(shí)分配多大的空間,之后按照怎樣的策略增大;

3、設(shè)計(jì)爬蟲(chóng);

4、流媒體播放客戶端從多個(gè)完全相同的發(fā)送方接收視頻包,同一發(fā)送方的包會(huì)按序到達(dá),不同發(fā)送方的包則不一定,有可能會(huì)丟包,但還是要保證播放流暢度,設(shè)計(jì)播放客戶端的算法。

總結(jié)

●數(shù)據(jù)結(jié)構(gòu)和算法的基礎(chǔ)知識(shí)還是十分重要的,大部分題目的思路來(lái)源于此;

●訓(xùn)練自己算法復(fù)雜度的分析能力,有的時(shí)候?qū)?fù)雜度的分析會(huì)反過(guò)來(lái)會(huì)幫助你找到更好的算法;

●一定量的題目積累很重要,就好像準(zhǔn)備高考數(shù)學(xué)壓軸題一樣,見(jiàn)識(shí)的越多,思路來(lái)得越快,當(dāng)然,前提是你能夠不斷總結(jié)反思。

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 算法
    +關(guān)注

    關(guān)注

    23

    文章

    4710

    瀏覽量

    95401
  • 數(shù)據(jù)結(jié)構(gòu)

    關(guān)注

    3

    文章

    573

    瀏覽量

    40752

原文標(biāo)題:面試經(jīng)驗(yàn)分享之?dāng)?shù)據(jù)結(jié)構(gòu)、算法題

文章出處:【微信號(hào):TheAlgorithm,微信公眾號(hào):算法與數(shù)據(jù)結(jié)構(gòu)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    【硬件方向】名企面試筆試真:大疆創(chuàng)新校園招聘筆試題

    名企面試筆試真:大疆創(chuàng)新校園招聘筆試題-硬件 是幾年前的題目,不過(guò)值得參考一下哦 純分享貼,有需要可以直接下載附件獲取完整資料! (如果內(nèi)容有幫助可以關(guān)注、點(diǎn)贊、評(píng)論支持一下哦~)
    發(fā)表于 05-16 17:31

    程序設(shè)計(jì)與數(shù)據(jù)結(jié)構(gòu)

    的地址)出發(fā),采用推導(dǎo)的方式,深入淺出的分析了廣大C程序員學(xué)習(xí)和開(kāi)發(fā)中遇到的難點(diǎn)。 2. 從方法論的高度對(duì)C語(yǔ)言在數(shù)據(jù)結(jié)構(gòu)算法方面的應(yīng)用進(jìn)行了深入講解和闡述。 3. 講解了絕大多數(shù)C程序員開(kāi)發(fā)
    發(fā)表于 05-13 16:45

    硬件工程師面試/筆試經(jīng)典 100

    分享一些常見(jiàn)的硬件工程師面試/筆試題。公眾號(hào)后臺(tái)回復(fù)關(guān)鍵字:100,可獲取完整的PDF。--END--免責(zé)聲明:本文轉(zhuǎn)自網(wǎng)絡(luò),版權(quán)歸原作者所有,如涉及作品版權(quán)問(wèn)題,請(qǐng)及時(shí)與我們聯(lián)系,謝謝!加入粉絲
    的頭像 發(fā)表于 04-30 19:34 ?643次閱讀
    硬件工程師<b class='flag-5'>面試</b>/筆試經(jīng)典 100 <b class='flag-5'>題</b>

    C++學(xué)到什么程度可以找工作?

    管理、引用、面向?qū)ο缶幊蹋惻c對(duì)象、繼承、多態(tài))、模板和STL(標(biāo)準(zhǔn)模板庫(kù))等。 2. **數(shù)據(jù)結(jié)構(gòu)算法**:能夠高效地實(shí)現(xiàn)并使用各種數(shù)據(jù)結(jié)構(gòu)(如數(shù)組、鏈表、棧、隊(duì)列、樹(shù)、圖等)和算法
    發(fā)表于 03-13 10:19

    硬件面試(一)

    硬件面試(一)
    的頭像 發(fā)表于 02-26 13:55 ?674次閱讀
    硬件<b class='flag-5'>面試</b>(一)

    面試題】人工智能工程師高頻面試題匯總:概率論與統(tǒng)計(jì)篇(題目+答案)

    、機(jī)器學(xué)習(xí)的那些算法,或者深度學(xué)習(xí)的框架,還有怎么優(yōu)化模型,Transformer等,這些都是加分項(xiàng),能有效提高面試通過(guò)率。本篇小編整理了一些高頻的概率論與統(tǒng)計(jì)——貝
    的頭像 發(fā)表于 01-22 13:00 ?939次閱讀
    【<b class='flag-5'>面試</b>題】人工智能工程師高頻<b class='flag-5'>面試</b>題匯總:概率論與統(tǒng)計(jì)篇(題目+答案)

    面試題】人工智能工程師高頻面試題匯總:機(jī)器學(xué)習(xí)深化篇(題目+答案)

    隨著人工智能技術(shù)的突飛猛進(jìn),AI工程師成為了眾多求職者夢(mèng)寐以求的職業(yè)。想要拿下這份工作,面試的時(shí)候得展示出你不僅技術(shù)過(guò)硬,還得能解決問(wèn)題。所以,提前準(zhǔn)備一些面試常問(wèn)的問(wèn)題,比如機(jī)器學(xué)習(xí)的那些算法
    的頭像 發(fā)表于 12-16 13:42 ?2843次閱讀
    【<b class='flag-5'>面試</b>題】人工智能工程師高頻<b class='flag-5'>面試</b>題匯總:機(jī)器學(xué)習(xí)深化篇(題目+答案)

    面試題】人工智能工程師高頻面試題匯總:Transformer篇(題目+答案)

    隨著人工智能技術(shù)的突飛猛進(jìn),AI工程師成為了眾多求職者夢(mèng)寐以求的職業(yè)。想要拿下這份工作,面試的時(shí)候得展示出你不僅技術(shù)過(guò)硬,還得能解決問(wèn)題。所以,提前準(zhǔn)備一些面試常問(wèn)的問(wèn)題,比如機(jī)器學(xué)習(xí)的那些算法
    的頭像 發(fā)表于 12-13 15:06 ?1386次閱讀
    【<b class='flag-5'>面試</b>題】人工智能工程師高頻<b class='flag-5'>面試</b>題匯總:Transformer篇(題目+答案)

    KiCon 演講回顧(十三):嵌入工程師的硬件夢(mèng) KiCad 經(jīng)驗(yàn)和項(xiàng)目分享

    “ ?在KiCon Asia 2024,我們有幸聽(tīng)到了@IAMLIUBO 的分享——嵌入式工程師的硬件夢(mèng)KiCad經(jīng)驗(yàn)分享。 ? ” 以下是完整演講視頻: 為什么選擇KiCad? 跨平臺(tái)支持
    的頭像 發(fā)表于 12-09 01:02 ?605次閱讀
    KiCon 演講回顧(十三):嵌入工程師的硬件夢(mèng)<b class='flag-5'>之</b> KiCad <b class='flag-5'>經(jīng)驗(yàn)</b>和項(xiàng)目分享

    人工智能工程師高頻面試題匯總——機(jī)器學(xué)習(xí)篇

    隨著人工智能技術(shù)的突飛猛進(jìn),AI工程師成為了眾多求職者夢(mèng)寐以求的職業(yè)。想要拿下這份工作,面試的時(shí)候得展示出你不僅技術(shù)過(guò)硬,還得能解決問(wèn)題。所以,提前準(zhǔn)備一些面試常問(wèn)的問(wèn)題,比如機(jī)器學(xué)習(xí)的那些算法
    的頭像 發(fā)表于 12-04 17:00 ?1539次閱讀
    人工智能工程師高頻<b class='flag-5'>面試</b>題匯總——機(jī)器學(xué)習(xí)篇

    面試嵌入式都會(huì)問(wèn)那些問(wèn)題呢?

    作為一名電子工程專業(yè)的畢業(yè)生,我對(duì)嵌入式系統(tǒng)開(kāi)發(fā)一直充滿熱情。當(dāng)我決定踏入這個(gè)行業(yè),尋找屬于自己的職業(yè)道路時(shí),面試成為了我必須面對(duì)的挑戰(zhàn)。在這里,我想分享一些我在嵌入式系統(tǒng)面試中遇到的問(wèn)題以及我的應(yīng)對(duì)經(jīng)驗(yàn)。
    的頭像 發(fā)表于 11-27 09:13 ?746次閱讀
    <b class='flag-5'>面試</b>嵌入式都會(huì)問(wèn)那些問(wèn)題呢?

    DDC264配置寄存器數(shù)據(jù)寫(xiě)入和320 DCLK時(shí)鐘脈沖后的回讀數(shù)據(jù)結(jié)構(gòu)是什么?

    配置寄存器數(shù)據(jù)寫(xiě)入和320 DCLK時(shí)鐘脈沖后的回讀數(shù)據(jù)結(jié)構(gòu)是什么? 根據(jù)注和表9,16位配置寄存器數(shù)據(jù),4位修訂ID, 300位校驗(yàn)?zāi)J剑趺纯赡苡?024 TOTAL READBACK BITS, format = 0
    發(fā)表于 11-19 07:58

    視覺(jué)軟件HALCON的數(shù)據(jù)結(jié)構(gòu)

    在研究機(jī)器視覺(jué)算法之前,我們需要先了解機(jī)器視覺(jué)應(yīng)用中涉及的基本數(shù)據(jù)結(jié)構(gòu)。Halcon數(shù)據(jù)結(jié)構(gòu)主要有圖像參數(shù)和控制參數(shù)兩類參數(shù)。圖像參數(shù)包括:image、region、XLD,控制參數(shù)包括:string、integer、real、
    的頭像 發(fā)表于 11-14 10:20 ?1294次閱讀
    視覺(jué)軟件HALCON的<b class='flag-5'>數(shù)據(jù)結(jié)構(gòu)</b>

    架構(gòu)師日記-從數(shù)據(jù)庫(kù)發(fā)展歷程到數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)探析

    數(shù)據(jù)庫(kù)發(fā)展史 起初,數(shù)據(jù)的管理方式是文件系統(tǒng),數(shù)據(jù)存儲(chǔ)在文件中,數(shù)據(jù)管理和維護(hù)都由程序員完成。后來(lái)發(fā)展出樹(shù)形結(jié)構(gòu)和網(wǎng)狀
    的頭像 發(fā)表于 09-25 11:20 ?1163次閱讀
    架構(gòu)師日記-從<b class='flag-5'>數(shù)據(jù)</b>庫(kù)發(fā)展歷程到<b class='flag-5'>數(shù)據(jù)結(jié)構(gòu)</b>設(shè)計(jì)探析

    嵌入式常用數(shù)據(jù)結(jié)構(gòu)有哪些

    在嵌入式編程中,數(shù)據(jù)結(jié)構(gòu)的選擇和使用對(duì)于程序的性能、內(nèi)存管理以及開(kāi)發(fā)效率都具有重要影響。嵌入式系統(tǒng)由于資源受限(如處理器速度、內(nèi)存大小等),因此對(duì)數(shù)據(jù)結(jié)構(gòu)的選擇和使用尤為關(guān)鍵。以下是嵌入式編程中常用的幾種數(shù)據(jù)結(jié)構(gòu),結(jié)合具體特點(diǎn)和
    的頭像 發(fā)表于 09-02 15:25 ?1041次閱讀