1. 程式人生 > >牛人阿里面試總結

牛人阿里面試總結

阿里面試總結:

一遍一遍地刷阿里網站,今天發現“面試中”變成“待跟進offer”了,寫個面經攢人品,希望offer通知郵件早點來吧。

我當時投簡歷時投了C/C++工程師,其實也沒經過啥考慮,因為我一開始是把重點放在進網易遊戲或者騰訊遊戲部門,投阿里就純粹出於增加點面試經驗,隨便找了個C/C++工程師崗位就找人內推了(後轉為演算法工程師)。

一面(3月16日):電話打來時手機顯示北京電話,還以為是詐騙的(囧...)。聽聲音,這位阿里面試官大概是三十多歲,有點資歷的人吧。一開始讓我介紹專案,然後我就把簡歷上有關人臉重建的專案說了一通,但能感覺出來他不是很感興趣(後來知道他是專門負責網路,搜尋,雲系統這一塊的)。然後他問我對網路瞭解麼,我說基本的網路知識我是知道的,他就讓我把OSI七層網路模型介紹一下。這個我還hold得住,也說了個八九不離十。接著他問我TCP的知識,問我為什麼要有傳輸層和網路層,單有網路層不行嗎?我就把TCP流量控制,擁塞控制,可靠傳輸等作用說了一下。之後是問C/C++知識:過載,覆蓋和隱藏的區別;指標和引用的區別;static作用;const作用;如何改變某個const例項中某個成員變數的值(我說可以用mutable修飾那個變數,他不滿意,我說用const轉型,他又問我這個轉型本質是什麼,我沒答出來。最後他告訴我是用const_cast把指標常量性去除)。然後問了我幾個演算法題,都是老題了:如何在O(1)時間刪除連結串列節點;兩個相交連結串列如何找交點(我說了用棧儲存每個連結串列節點的方法,他問有沒有O(1)空間解法,一時沒想到);如何找連結串列倒數第K個結點(聯絡這個題目,兩連結串列找交點的題就可以在O(1)空間解決了)。最後問我有沒有什麼想問的,我當時覺得這崗位和我的背景太不一樣,反正沒戲了,就隨便問了一個:“C/C++這個崗位主要負責什麼內容?”他說他負責雲OS,需要用到很多網路知識,因此剛才也側重網路向我提問,同時又他順帶問了我懂不懂網路加密演算法,我說不懂。一面就結束了,我以為阿里面試之旅就這麼掛了。

1. 過載,覆蓋,還有隱藏的區別:

a.成員函式被過載的特徵:
(1)相同的範圍(比如在同一個類中);
(2)函式名字相同;
(3)引數不同;
(4)virtual 關鍵字可有可無。
  b.覆蓋是指派生類函式覆蓋基類函式,特徵是:
(1)不同的範圍(分別位於派生類與基類);
(2)函式名字相同;
(3)引數相同;
(4)基類函式必須有virtual 關鍵字。
  c.“隱藏”是指派生類的函式遮蔽了與其同名的基類函式,規則如下:
(1)如果派生類的函式與基類的函式同名,但是引數不同。此時,不論有無virtual關鍵字,基類的函式將被隱藏(注意別與過載混淆)。
(2)如果派生類的函式與基類的函式同名,並且引數也相同,但是基類函式沒有virtual 關鍵字。此時,基類的函式被隱藏(注意別與覆蓋混淆)

隱藏破壞了多型性,因此一般要將隱藏換成覆蓋。

2. 指標和引用的區別

(1)指標本身是個物件,而引用不是物件,引用是別名。(2)允許把對指標進行賦值和拷貝,而且指標在它的生命週期內可以指向不同的物件,所以指標在定義時可以不初始化;而引用是把自己和它的初始值物件一直繫結在一起,無法令引用重新繫結到另外一個物件上,因此引用定義時必須初始化。

3. static的作用

static主要有三個作用:
     (1)區域性靜態變數
     (2)外部靜態變數/函式
     (3)靜態資料成員/成員函式

前兩種C和C++都有,第三種僅在C++中有,下面分別作以下介紹:

一、區域性靜態變數

在C/C++中, 區域性變數按照儲存形式可分為三種auto, static, register。其中register不常用到,下面主要說說auto和static的區別。

1. 儲存空間分配和生存週期不同
auto型別區域性變數就是普通的區域性變數(不加修飾的區域性變數預設為該型別)。該型別區域性變數儲存在棧上,在動態儲存區,生命週期僅限於定義它的函式,函式結束,它就自動釋放。static型別區域性變數儲存在靜態儲存區,在程式整個執行期間都不釋放。兩者之間的作用域相同,但生存期不同。

2. static區域性變數在所處模組在初次執行時進行初始化工作,且只操作一次。

3. 對於區域性靜態變數,如果不賦初值,編譯期會自動賦初值0或空字元,而auto型別的初值是不確定的。(對於C++中的class物件例外,class的物件例項如果不初始化,則會自動呼叫預設建構函式,不管是否是static型別)

特點: static區域性變數的”記憶性”與生存期的”全域性性”


二、外部靜態變數/函式

在C中 static有了第二種含義:用來表示不能被其它檔案訪問的全域性變數和函式。但為了限制全域性變數/函式的作用域, 函式或變數前加static使得函式成為靜態函式。但此處“static”的含義不是指儲存方式,而是指對函式的作用域僅侷限於本檔案(所以又稱內部函 數)。注意此時, 對於外部(全域性)變數, 不論是否有static限制, 它的儲存區域都是在靜態儲存區,生存期都是全域性的. 此時的static只是起作用域限制作用, 限定作用域在本模組(檔案)內部.

使用內部函式的好處是:不同的人編寫不同的函式時,不用擔心自己定義的函式,是否會與其它檔案中的函式同名。

三、靜態資料成員/成員函式(C++特有)

C+ +重用了這個關鍵字,並賦予它與前面不同的第三種含義:表示屬於一個類而不是屬於此類的任何特定物件的變數和函式. 這是與普通成員函式的最大區別,
也是其應用所在, 比如在對某一個類的物件進行計數時, 計數生成多少個類的例項,
就可以用到靜態資料成員. 在這裡面, static既不是限定作用域的, 也不是擴充套件生存期的作用, 而是指示變數/函式在此類中的唯一性. 這也是”屬於一個類而不是屬於此類的任何特定物件的變數和函式”的含義. 因為它是對整個類來說是唯一的,因此不可能屬於某一個例項物件的. (針對靜態資料成員而言, 成員函式不管是否是static, 在記憶體中只有一個副本, 普通成員函式呼叫時, 需要傳入this指標, static成員函式呼叫時, 沒有this指標. )

4. const的作用

參考部落格“const關鍵字”。

5. 如何改變某個const例項中某個成員變數的值?

二面(嚴格意義上的一面):4月5日時阿里又來電話。這次聽聲音感覺是個剛畢業不久的碩士生,說話也挺親切,問我對視訊,影象處理感不感興趣,因為看到我簡歷上寫著做過一些影象方面的專案。我說感興趣啊(其實我是想,能進阿里再說...),他就和我約了第二天早上電話面試(這讓我對面試官好感大增,因為阿里一般是電話打來直接面試,這位面試官竟然還和我商量面試時間)。第二天上午11點面試開始,首先也是從介紹我的專案開始,感覺這次面試官懂我的專案,和我互動不少。然後問我一道數學題:隨手畫一個封閉圖形(未必是凸多邊形),如何求這個圖形面積?他說以前面試的人都試圖用三角剖分,問我有沒有別的辦法。這個我還真沒法子,想了半天也沒想出來,只好跳過。然後他問了NAT地址轉換的知識,以及程序通訊的幾種方法。最後來了個影象處理題:如何找相似圖片。我說用感知雜湊演算法,計算漢明距離,他說這種方法精度不行;我說那就用SIFT演算法吧,他說SIFT效果還可以,但計算有點繁重,有沒有輕量級的方法?我想起來去年在美圖秀秀實習時,曾經做過一種影象濾波演算法,有一步是把畫素點用K-means聚類。我就說先把圖片灰度化,然後用K-means聚類,把聚類後的各個中心點作為一張圖片的特徵向量,如果兩張圖片的特徵向量相近則說明這兩張圖片相似。貌似我這個答案有點出乎他的意料,他意味深長地說了個“行吧~~~~”(個人覺得顏色直方圖匹配是個他期待的常規回答)。然後他問我有啥想問的,我就問剛才相似圖片搜尋還能有什麼方法,他說了些相關的知識。然後我問我是不是被換部門了,因為這次面試的風格和上次完全不一樣,他告訴我確實換了崗位,變為演算法工程師了。總之這次面試過程還是挺愉快的,我說的東西他懂,他說的我也能理解。過這輪面試應該沒問題。

三面(嚴格意義上的二面):4月8日晚上9點來的電話(後來才發現我應該是最後一批了,內推面試4月10日結束,然而9日和10日是週末,其實應該是8日晚上結束)。這次面試官貌似是個技術總監,聽聲音是個中年人,說話讓人感覺挺平易近人。他先讓我介紹專案,我在毫無準備情況下接到這電話,一開始有點慌,藉著說專案的時間平復了下心情(因為專案的介紹我差不多已經倒背如流了...)。專案說完,讓我介紹下友元函式在C++中的作用,問我認不認為友元函式是一個好的設計。然後問C++中STL容器知識,map底層是怎麼實現,為什麼要用紅黑樹?我說用散列表也可以,unordered_map底層就是用的散列表。之後他問我DFS和BFS演算法,在哪些地方有應用。我說人工智慧裡面尋路演算法有應用,BFS加上個優先佇列就成了代價一致搜尋,代價一致搜尋加上個貪心策略就成了A*演算法。他問何時選擇DFS呢?我一時語塞,亂七八糟答了一點(心裡想著這不是看具體情況麼)...這個問題就問到這裡了。

之後問了我MFC知識(說是看我的專案中用了MFC,其實我這次投的阿里簡歷,已經把那個專案經歷刪掉了,可能之前投的簡歷也一直被儲存在阿里後臺吧),我說MFC核心就是個訊息迴圈機制(確切地說是訊息對映),blabla說了一通訊息迴圈,答得還可以。然後他又問我作業系統知識,也是程序間的通訊方式,管道和共享記憶體哪個效率高。然後考了個數據結構,給個數組如何建堆。最後是一個海量資料處理題,給了個滴滴打車的背景,實質就是如何在海量資料中找到最大值。我按著分治思想說了一個解法,意思到了,他也就沒往深處問。他最後沒問我有啥想問的,直接問我啥時候能來實習,可能我的那些回答讓他覺得還滿意吧。

4月12日收到簡訊,說面試流程還沒走完,22日前還有相關面試。我一直以為還有一次技術面試,後來21日hr電話打來(這次是個女面試官),已經到hr面了。阿里hr面感覺和其他公司的hr面不一樣,一般其他公司hr面就隨便問問非技術問題,阿里hr面上來就讓我講講專案。之後倒是些非技術問題,沒啥參考價值,就不寫了。

總結幾句,國內IT面試就像一次研究生考試,首先得把作業系統,網路,資料結構和演算法搞定,然後熟悉一門程式語言,有一個可以吹的專案(當然吹起來要經得住面試官拷問),面試前一個月刷一刷《劍指offer》,《微軟一百題》這些速成書籍,基本上就可以和麵試官一戰了。lz本科是數學專業,現在雖然在讀CS碩士,但碩士階段沒人幫忙補習這些基礎,最終還是靠自己東蹭課西蹭課,平時自己花時間學的。所以lz希望自己的經歷可以鼓勵非科班出身,而想從事IT行業的同學,我們自學CS也可以將這些基礎學紮實。事在人為,和大家共勉!

相關推薦

阿里面試總結

阿里面試總結: 一遍一遍地刷阿里網站,今天發現“面試中”變成“待跟進offer”了,寫個面經攢人品,希望offer通知郵件早點來吧。 我當時投簡歷時投了C/C++工程師,其實也沒經過啥考慮,因為我一開始是把重點放在進網易遊戲或者騰訊遊戲部門,投阿里就純粹出於增加點面試經驗,

一年半經驗,百度、有贊、阿里面試總結

前言 人家都說,前端需要每年定期出來面面試,衡量一下自己當前的技術水平以及價值,本人17年7月份,畢業到現在都沒出來試過,也沒很想換工作,就出來試試,看看自己水平咋樣。 以下為我現場面試時候的一些回答,部分因人而異的問題我就不回答了,回答的都為參考答案,也有部分錯誤的地方或者不好的地方,有更好的答案的可以

刷《一年半經驗,百度、有贊、阿里面試總結》·手記

在掘金上看到了一位大佬發了一篇很詳細的面試記錄文章-《一年半經驗,百度、有贊、阿里面試總結》,為了查漏補缺,抽空就詳細做了下。(估計只有我這麼無聊了哈哈哈) 有給出的或者有些不完善的答案,也盡力給出/完善了(可能有錯,大家自行辨別)。有些很困難的題目(例如實現Promise),附帶相關連結(懶癌患

阿里面試總結(春招實習)

* 層級關係(關於內聯樣式,style樣式,link形式,import形式),為什麼會有這三種,都應用在什麼地方。 面完現在才後知後覺,這個作用,應該從優先順序,快取,效能各方面來回答。 1.優先順序:(1)寫在標籤裡的style屬性,

記一次阿里面試總結

一面,電話面: 大概早上9點左右,收到了阿里HR的小姐姐的電話,聲音很好聽,雖然後面不怎麼管我了...跟她約了晚上9點的電話面..然後一整天上班不在狀態,開始各種回顧之前準備的知識.為了這次面試大概準備了半個月,利用每天下班到家8點到凌晨1點30的時間,瘋狂的補充自己的技術

職業規劃:如何快速成長為技術大阿里資深技術專家的總結亮了

要想成為技術大牛, 首先還是 要明白“主要靠自己”這個道理,不要期望有個像武功師傅一樣的大牛手把手一步一步地教你。適當的時候可以通過請教大牛或者和大牛探討來提升自己,但大部分時間 還是自己系統性、有針對性的提升 業務程式碼一樣很牛逼 有人認為寫業務程式碼一樣可以很牛逼

Java阿里面試:一面+二面+三面+HR四面,我的覆盤經驗總結

阿里中介軟體團隊一面: 第一步先自我介紹? 介紹自己的專案經驗和個人的擅長點,面試官主要考察你的表達能力和語言精簡能力。 第二步:專案中做了什麼,難點在哪裡? 主要是想了解參與過技術難度最大的專案難點,技術難點在哪裡,你是怎麼來解決的,考察專案經驗(技術難度)。 第三步:開始切入

如何快速成長為技術大阿里資深技術專家的總結亮了

阿里妹導讀:你是否有類似這樣的問題——“天天寫業務程式碼的程式設計師,怎麼成為技術大牛,開始寫技術程式碼?”今天,阿里資深無線開發專家李運華,系統梳理了自己的思考和理解,希望幫助更多同學少走一些彎路。 寫在前面 不管是開發、測試、運維,每個技術人員心裡多多少少

大資料阿里面試筆試題總結,我的結果 當然是涼涼

我  秀兒  在學習大資料一年後去了阿里面試,這是我筆試的時候題目,雖然我涼了,但是希望大家加油 總結給大家看看 參考下面的M R系統的場景:HDFS 塊大小為64MB;輸入型別為FileInputFormat;有三個檔案大小分別是: 0.在Hadoop中定義的

阿里P7總結:JavaScript面試頻繁出現的幾個易錯點

一 前言 這段時間,金三銀四,很多人面試,很多人分享面試題。在前段時間,我也臨時擔任面試官,為了大概瞭解面試者的水平,我也寫了一份題目,面試了幾個前端開發者。在這段時間裡面,我在學,在寫設計模式的一些知識,想不到的設計模式的這些知識,就是面試題裡面,頻繁讓人掉坑的考點。所以,今天就總結一下,那些

2018 iOS實習生是如何拿到阿里騰訊百度頭條美團Offer的【面試總結

面試基本已經結束了,目前已拿頭條、百度、騰訊offer,現在可以好好來寫寫總結了,關於面試題,可能沒那麼多時間來總結答案,有什麼需要討論的地方歡迎大家指教。主要記錄一下我的準備過程,和麵試的一些總結,希望能幫助到正在面試或者將要面試的同學吧。 準備階段 我其實從寒假前就有

技術阿里內網的公開信:“王堅,你為什麼要放棄”

王堅,你為什麼要放棄 中文不佳,全用英文寫又無法讓更多的同學瞭解我的心路旅程,所以請各位原諒我蹩腳的中文。 *一個簡單的道理:一塊2TB桌面級硬碟今天的價格約為700元,相同大小的企業級硬碟一塊今天的要價仍然超過1,500元,這兩個硬碟最大的差別 是RVI震動率的設定(因此

面試經歷(一)

應屆生上泡了兩年,一直都是下資料,下筆試題,面試題。一直都在感謝那些默默付出的人。寫這個帖子花了我兩個夜晚的時間,不是為了炫耀,只是為了能給那些“迷惘”的學弟學妹,一點點建議而已。大家何必那麼認真,更沒必要說髒話。我不在乎你們怎麼評價我。只要有人覺得帖子有用,我就欣慰了。謝謝大家,別說髒話,以和為貴。飲水思

阿里巴巴天貓事業部java大資料方向電話面試總結201805

內容簡介:阿里巴巴天貓事業部java大資料方向電話面試,總結交流的主要問題和自己的體驗,希望給自己和大家共勉。 第一印象:面試老師是非常守時的人,約定八點面試,就是八點準時給你面試,如果有急事,也會八點準時通知,說現在有點事,半個小時後再面試,說八點半然後也是準時的八點半,很贊。 主要交流的問題

逼程式設計師面試總結

首先說說我拿到的offer情況: 微軟,3面->終面,搞定 百度,3面->終面,口頭offer 搜狗,2面,悲劇 騰訊,1面,悲劇 布丁移動,3面,搞定 塗鴉遊戲,3面,搞定 友盟,3面->CEO面,搞定 雅虎,4面->終面,搞定

java面試總結(控制層裡可以過載方法嗎)

        2018年12月19日上午10點,去途牛總部面試,本以為是一輪普通面試,到地方才發現,要先做一份筆試,筆試時間1小時。筆試題大都是java基礎,多執行緒之類,springmvc原理,sql等等,不是太難。做完之後,一面,根據你的簡歷問些java

國外總結的機器學習領域的框架、庫以及軟體

本文彙編了一些機器學習領域的框架、庫以及軟體(按程式語言排序)。 C++計算機視覺 CCV —基於C語言/提供快取/核心的機器視覺庫,新穎的機器視覺庫 —它提供C++, C, Python, Java 以及 MATLAB介面,並支援Windows, Linux, An

byvoid阿里第二彈:不是技術,如何拿到國內IT巨頭的Offer

不久前,byvoid面阿里星計劃的面試結果截圖洩漏,引起無數IT屌絲的羨慕敬仰。看看這些牛人,NOI金牌,開源社群名人,三年級開始寫Basic...在跪拜之餘我們不禁要想,和這些牛人比,作為絕大部分技術屌絲的同學們,是否真的與國內IT巨頭遙不可及呢?當你開啟這個帖子的時候,我已經預設你是此文的目標讀者,也就是

阿里巴巴 研發崗 面試 總結(乾貨)

一遍一遍地刷阿里網站,今天發現“面試中”變成“待跟進offer”了,寫個面經攢人品,希望offer通知郵件早點來吧。 我當時投簡歷時投了C/C++工程師,其實也沒經過啥考慮,因為我一開始是把重點放在進網易遊戲或者騰訊遊戲部門,投阿里就純粹出於增加點面試經驗,隨便找了個C/

【轉載】總結的科研經驗!

一、研究生必備四本 俗話說好記性不如爛筆頭,所以一定要首先養成做筆記的好習慣!作為研究生下面這幾個本子是必不可少的 1,實驗記錄本(包括試驗準備本),這當然首當其衝必不可少,我就不多說了。 2,Idea記錄本,每次看文獻對自己有用的東西先記下,由此產生的idea更不能放過,這可是做研究的