面試我的是一個(gè)小姑娘,目測(cè)年齡和我相似。由于之前已經(jīng)在電話中,聊過(guò)一些,所以,并沒(méi)有讓我做自我介紹。這點(diǎn)我很滿意,我一直比較討厭自我介紹這個(gè)問(wèn)題,盡管我面試別人的時(shí)候,也會(huì)問(wèn)這個(gè)問(wèn)題。 小姑娘先問(wèn)我覺(jué)得招聘是否好做,因?yàn)槲疫@段時(shí)間一直在做關(guān)于技術(shù)人員的招聘,所以,就回答了最近的一些感想。我說(shuō)現(xiàn)在這個(gè)階段招聘已經(jīng)進(jìn)入淡季,就Android開發(fā)人員來(lái)說(shuō),現(xiàn)在市場(chǎng)處于求大于供的階段。但對(duì)于招聘人員來(lái)講,招聘沒(méi)有好做難做之分,因?yàn)槊總€(gè)企業(yè)都有優(yōu)點(diǎn),也存在缺點(diǎn),你只需要堅(jiān)持正確的方法,一定可以找到合適的人。比如,更加積極主動(dòng)的搜索簡(jiǎn)歷、打電話,在招聘過(guò)程中給予面試人員更多的關(guān)懷。
面試官問(wèn)的面試題:AlibabaHR面試題
你們的組織架構(gòu)是什么?在這個(gè)項(xiàng)目中你覺(jué)得最困難的地方是什么?如果再讓你做一次你會(huì)在哪些方面優(yōu)化他?
2018年3月28日 阿里巴巴電話一面
當(dāng)天下午4點(diǎn)左右,阿里巴巴從浙江杭州打來(lái)的電話:0571-28223456 ,一開始我沒(méi)接到,5分鐘后我才發(fā)現(xiàn)這個(gè)電話(提醒:手機(jī)一定不要靜音,隨時(shí)保證能接到電話),當(dāng)我發(fā)現(xiàn)后就立即打回去,幸運(yùn)的是,能夠接通,阿里的接線系統(tǒng)還是很智能的,主動(dòng)提示5分鐘前有打我電話,并且自動(dòng)轉(zhuǎn)接到那個(gè)電話。接通之后我解釋了一下,面試官語(yǔ)氣很和藹,主動(dòng)提出給我打過(guò)來(lái),我表示要花2分鐘拿紙和筆,實(shí)際上我還拿了電腦,機(jī)智吧!
alibaba后臺(tái)開發(fā)工程師面試題
接下來(lái)就是面試內(nèi)容:
面試主要分為三個(gè)部分:基礎(chǔ)知識(shí)、項(xiàng)目?jī)?nèi)容和實(shí)習(xí)經(jīng)歷、應(yīng)聘崗位相關(guān)知識(shí)和其他
一:基礎(chǔ)知識(shí)
面試官會(huì)問(wèn)你主要熟悉的語(yǔ)言,我是學(xué)C++的,然后他就開始問(wèn)C++相關(guān)的知識(shí),我主要問(wèn)到了:
A: C++的指針和引用的區(qū)別:
指針是一個(gè)對(duì)象,這個(gè)對(duì)象里存儲(chǔ)的是它所指向的另一個(gè)對(duì)象的地址。引用其實(shí)是一個(gè)對(duì)象的別名,引用是必須在初始化時(shí)與對(duì)象綁定,而且一經(jīng)聲明,就不能再更改綁定到其他對(duì)象。
問(wèn)題引申:
指針定義:值為地址的變量。
指針的運(yùn)算:兩個(gè)基本的運(yùn)算符:&(取址運(yùn)算符)和*(間接訪問(wèn)運(yùn)算符/解引用指針),除此之外,還有加減算數(shù)運(yùn)算,關(guān)系運(yùn)算(== 和 !=),以及指針的類型轉(zhuǎn)換:強(qiáng)制類型轉(zhuǎn)換和C++類型轉(zhuǎn)換操作符 static_cast<類型>(表達(dá)式) ,注意:void類型指針 void * pVoid 可以從任意類型的指針賦值(強(qiáng)制轉(zhuǎn)換)而來(lái)。
指針?lè)诸悾焊鶕?jù)所指對(duì)象類型區(qū)分:int、char、double、class等,還有 nullptr 指針 和 void *指針; 常量指針(指向常量的指針) 和 指針常量(該指針是常量);
常量指針: const int * p ; 特點(diǎn)就是 const 是對(duì) int 的修飾,說(shuō)明所指對(duì)象是一個(gè)int 型常量。
指針常量: int * const p ; 特點(diǎn)就是 const 是對(duì) * 的修飾,說(shuō)明該指針是個(gè)常量。
升級(jí)問(wèn)題:迭代器(iterator)和指針(pointer)區(qū)別:STL 容器類的 iterator 迭代器是類模板,它可以遍歷容器內(nèi)的全部或者部分元素,本質(zhì)是封裝了原生指針,提供了
比指針更高級(jí)的行為,可以成為智能指針,有++,-- ,->,*等操作,一共分為輸入迭代器(input iterator)、輸出迭代器(output iterator)、前向迭代器(forward iterator)、雙向迭代器(bidirectional iterator)、隨機(jī)存取迭代器(random access iterator)。
在范圍上,pointer 屬于 iterator 的一種(random access iterator)
在功能上,iterator 有著比 pointer 更細(xì)的劃分并對(duì)應(yīng)能力不同的功能(重載不同的運(yùn)算符)
在行為上,iterator 比 pointer 更統(tǒng)一和良好的用法(更輕易使用 begin()、end()且不用擔(dān)心越界)
B:面向?qū)ο蟮娜齻€(gè)基本特征:封裝、繼承、多態(tài)
封裝,也就是把客觀事物封裝成抽象的類,并且類可以把自己的數(shù)據(jù)和方法只讓可信的類或者對(duì)象操作,對(duì)不可信的進(jìn)行信息隱藏。
繼承是指這樣一種能力:它可以使用現(xiàn)有類的所有功能,并在無(wú)需重新編寫原來(lái)的類的情況下對(duì)這些功能進(jìn)行擴(kuò)展。
多態(tài)性(polymorphisn)是允許你將父對(duì)象設(shè)置成為和一個(gè)或更多的他的子對(duì)象相等的技術(shù),賦值之后,父對(duì)象就可以根據(jù)當(dāng)前賦值給它的子對(duì)象的特性以不同的方式運(yùn)作。簡(jiǎn)單的說(shuō),就是一句話:允許將子類類型的指針賦值給父類類型的指針。
實(shí)現(xiàn)多態(tài),有二種方式,覆蓋,重載。覆蓋,是指子類重新定義父類的虛函數(shù)的做法。重載,是指允許存在多個(gè)同名函數(shù),而這些函數(shù)的參數(shù)表不同(或許參數(shù)個(gè)數(shù)不同,或許參數(shù)類型不同,或許兩者都不同)。其實(shí),重載的概念并不屬于“面向?qū)ο缶幊獭保剌d的實(shí)現(xiàn)是:編譯器根據(jù)函數(shù)不同的參數(shù)表,對(duì)同名函數(shù)的名稱做修飾,然后這些同名函數(shù)就成了不同的函數(shù)(至少對(duì)于編譯器來(lái)說(shuō)是這樣的)。
多態(tài)的作用是什么呢? 封裝可以隱藏實(shí)現(xiàn)細(xì)節(jié),使得代碼模塊化;繼承可以擴(kuò)展已存在的代碼模塊(類);它們的目的都是為了——代碼重用。而多態(tài)則是為了實(shí)現(xiàn)另一個(gè)目的——接口重用!多態(tài)的作用,就是為了類在繼承和派生的時(shí)候,保證使用“家譜”中任一類的實(shí)例的某一屬性時(shí)的正確調(diào)用。
C:C++內(nèi)存管理:存儲(chǔ)內(nèi)容:
靜態(tài)區(qū):保存自動(dòng)全局變量和static變量(包括static全局和局部變量)。靜態(tài)區(qū)的內(nèi)容在整個(gè)程序的生命周期內(nèi)都存在,有編譯器在編譯的時(shí)候分配(數(shù)據(jù)段(存儲(chǔ)全局?jǐn)?shù)據(jù)和靜態(tài)數(shù)據(jù))和代碼段(可執(zhí)行的代碼/只讀常量))。
棧:保存局部變量。棧上的內(nèi)容只在函數(shù)范圍內(nèi)存在,當(dāng)函數(shù)運(yùn)行結(jié)束的時(shí)候,這些內(nèi)容也會(huì)自動(dòng)銷毀。其特點(diǎn)是效率高但是空間大小有限。
堆:由malloc系列函數(shù)或者new操作符分配的內(nèi)存。其生命周期由free和delete決定。在沒(méi)有釋放之前一直存在,直到函數(shù)結(jié)束。其特點(diǎn)是使用靈活,空間比較大,但容易出錯(cuò)。
值得注意的一點(diǎn)是:代碼段中存儲(chǔ)的是可執(zhí)行的代碼和只讀常量,很多人看到代碼段就認(rèn)為里面只有代碼,數(shù)據(jù)段里面才是存儲(chǔ)數(shù)據(jù)的,其實(shí)不是這樣的。
內(nèi)存申請(qǐng)和釋放:
malloc和free函數(shù)是一一對(duì)應(yīng)的,如果malloc兩次但是只free一次就會(huì)存在內(nèi)存泄漏,如果malloc一次但是free了兩次,就會(huì)出錯(cuò)
我們知道c++是兼容c的,那我們明明已經(jīng)有了malloc和free來(lái)進(jìn)行動(dòng)態(tài)內(nèi)容的管理,為什么c++還要定義new和delete運(yùn)算符來(lái)動(dòng)態(tài)管理內(nèi)存。
實(shí)際operator new/operator delete 只是malloc和free的一層封裝。
來(lái)看一下它們之間的區(qū)別和聯(lián)系:
1.它們都是動(dòng)態(tài)管理內(nèi)存的入口。
2.malloc/free是c/c++標(biāo)準(zhǔn)庫(kù)的函數(shù),new/delete是c++操作符。
3.malloc/free只是動(dòng)態(tài)分配/釋放內(nèi)存空間。而new/delete出來(lái)分配空間還會(huì)調(diào)用構(gòu)造函數(shù)和析構(gòu)函數(shù)進(jìn)行初始化與清理。
4.malloc/free需要手動(dòng)計(jì)算類型大小且會(huì)返回void*, new/delete可以自己計(jì)算類型的大小,返回對(duì)應(yīng)類型的指針。
我們?cè)赾++中是允許進(jìn)行重載的,那我們也可以重載一下new和delete,我在這就不做了(其實(shí)new和delete是不能重載的,即使你進(jìn)行了重載,也只是重載了operator new和operator delete)。
new和delete在內(nèi)存中所做的事
new做的事: 1.調(diào)用operator new分配空間 2.調(diào)用構(gòu)造函數(shù)初始化空間
delete做的事: 1.調(diào)用析構(gòu)函數(shù)清理對(duì)象 2.調(diào)用operator delete釋放空間
new[N]做的事: 1.調(diào)用operator new分配空間 2.調(diào)用N次構(gòu)造函數(shù)分別初始化每個(gè)對(duì)象
delete做的事: 1.調(diào)用N次析構(gòu)函數(shù)清理對(duì)象 2.調(diào)用operator delete釋放空間
用一張圖來(lái)解釋:
D:sleep()和wait()這兩個(gè)方法的區(qū)別
1、sleep()是讓某個(gè)線程暫停運(yùn)行一段時(shí)間,其控制范圍是由當(dāng)前線程決定,也就是說(shuō),在線程里面決定.
2、而wait(),首先,這是由某個(gè)確定的對(duì)象來(lái)調(diào)用的,將這個(gè)對(duì)象理解成一個(gè)傳話的人,當(dāng)這個(gè)人在某個(gè)線程里面說(shuō)"暫停!",也是 thisOBJ.wait(),這里的暫停是阻塞
3、區(qū)別:
sleep()和wait()函數(shù)的區(qū)別:
(1)兩者比較的共同之處是:兩個(gè)方法都是使程序等待多少毫秒。
(2)最主要區(qū)別是:sleep()方法沒(méi)有釋放鎖。而wait()方法釋放了鎖,使得其他線程可以使用同步控制塊或者方法。
(3)sleep()指線程被調(diào)用時(shí),占著CPU不工作,形象的說(shuō)明為“占著CPU”睡覺(jué)。
sleep(2000)表示:占用CPU,程序休眠2秒。
wait(2000)表示:不占用CPU,程序等待2秒。
引申:掛起和阻塞區(qū)別:
(1)掛起是一種主動(dòng)行為,因此恢復(fù)也應(yīng)該要主動(dòng)完成。而阻塞是一種被動(dòng)行為,是在等待事件或者資源任務(wù)的表現(xiàn),你不知道它什么時(shí)候被阻塞,也不清楚它什么時(shí)候會(huì)恢復(fù)阻塞。
(2)阻塞(pend)就是任務(wù)釋放CPU,其他任務(wù)可以運(yùn)行,一般在等待某種資源或者信號(hào)量的時(shí)候出現(xiàn)。掛起(suspend)不釋放CPU,如果任務(wù)優(yōu)先級(jí)高,就永遠(yuǎn)輪不到其他任務(wù)運(yùn)行。一般掛起用于程序調(diào)試中的條件中斷,當(dāng)出現(xiàn)某個(gè)條件的情況下掛起,然后進(jìn)行單步調(diào)試。
程序狀態(tài)變化圖:
E:進(jìn)程和線程的區(qū)別
進(jìn)程是cpu資源分配的最小單位,線程是cpu調(diào)度的最小單位。進(jìn)程是資源的分配單位,線程是CPU在進(jìn)程內(nèi)切換的單位,線程屬于進(jìn)程。
接下來(lái)是場(chǎng)景問(wèn)題:
I-面試--超大文件取交集:?jiǎn)栴}:現(xiàn)有兩個(gè)各有20億行的文件,每一行都只有一個(gè)數(shù)字,求這兩個(gè)文件的交集。
我的回答:1.先將文件進(jìn)行排序(外存排序),然后對(duì)兩個(gè)文件中的數(shù)選一個(gè)hash函數(shù),能將數(shù)據(jù)集范圍的整數(shù)分到若干個(gè)桶中,每個(gè)桶中落入的數(shù)的個(gè)數(shù)能夠內(nèi)存處理即可 2. 每個(gè)桶內(nèi)進(jìn)行常規(guī)求交集即可
此題牽涉到外存排序:外排序分兩個(gè)步驟:預(yù)處理和合并排序。先將文件分段;然后利用內(nèi)部排序方法(快排,歸并,堆排序等),將每一段排序成為順串,生成后寫入外存。這樣外存上就得到了m個(gè)順串。最后,對(duì)這些順串進(jìn)行歸并,使得其長(zhǎng)度逐漸增大,直到所有帶排序的數(shù)字成為一個(gè)順串為止。
外部排序最常用的算法是多路歸并排序,即將原文件分解成多個(gè)能夠一次性裝入內(nèi)存的部分,分別把每一部分調(diào)入內(nèi)存完成排序。然后,對(duì)已經(jīng)排序的子文件進(jìn)行歸并排序。
第二部分:?jiǎn)柕捻?xiàng)目相關(guān)內(nèi)容和實(shí)習(xí)內(nèi)容
問(wèn):1、項(xiàng)目具體內(nèi)容和分工;2、你負(fù)責(zé)的部分簡(jiǎn)單描述,分析其中的難點(diǎn)和收獲;3、實(shí)習(xí)的具體工作職責(zé)和成效;4、實(shí)習(xí)收獲到的知識(shí)。
第三部分:?jiǎn)枩y(cè)試相關(guān)的知識(shí),這塊問(wèn)得比較淺,比如說(shuō)平時(shí)用什么工具測(cè)試
通過(guò)獵頭推薦,直接進(jìn)入業(yè)務(wù)面。兩位業(yè)務(wù)面試官,問(wèn)了問(wèn)題都以簡(jiǎn)歷的經(jīng)歷為主,也有一些對(duì)于近段時(shí)間行業(yè)內(nèi)MKT事件的看法。最后有一輪HRG面試,很常規(guī)的hr面試,不要緊張應(yīng)該都可以通過(guò)。
面試官問(wèn)的面試題:alibabamarketing manager面試題
1.自我介紹
2.為什么選擇這個(gè)公司
3.為什么選擇這個(gè)行業(yè)
4.簡(jiǎn)歷經(jīng)歷分享
5.未來(lái)職業(yè)規(guī)劃
6.有什么問(wèn)題問(wèn)面試官
alibaba工資待遇 共15 條
alibaba面試經(jīng)驗(yàn) 共 20 條
(共2425條) 北京字節(jié)跳動(dòng)科技有限公司
(共2146條) 阿里巴巴
(共2145條) 京東商城
(共31條) 武漢網(wǎng)上網(wǎng)科技有限公司
(共53條) 藝龍旅行網(wǎng)
(共17條) 河南銳之旗信息技術(shù)有限公司
(共5條) 上海吉田拉鏈有限公司
(共5條) 珠海偉創(chuàng)力集團(tuán)
(共8條) 中國(guó)電器科學(xué)研究院有限公司
(共4條) 永清環(huán)保股份有限公司
(共9條) 長(zhǎng)春捷翼汽車零部件有限公司
(共9條) 深圳鵬鼎控股