阿里的一道在線編程測(cè)試題
一道編碼解碼的題目
就是用
0xxxxxxx 表示0-127
10xxxxxx 10xxxxxx 表示128-65535
輸入一個(gè)string,然后讓你來(lái)解碼,明明簡(jiǎn)單的很的一道編程題,硬是沒(méi)做出來(lái)…
感覺(jué)自己有點(diǎn)緊張,而且狀態(tài)很差,不過(guò)沒(méi)關(guān)系,慢慢來(lái)吧。
感覺(jué)之后有筆試什么的還是在宿舍自習(xí)室里做吧,狀態(tài)應(yīng)該會(huì)好一些。
今天狀態(tài)實(shí)在是差,大腦暈乎乎的做什么測(cè)試題呢,唉,下次注意一點(diǎn)吧。
有點(diǎn)尷尬的是求內(nèi)推的時(shí)候稱呼寫錯(cuò)了,是師妹結(jié)果以為是師兄,尷尬尷尬……
螞蟻金服公司電面
先吐槽一下你這沒(méi)什么項(xiàng)目經(jīng)歷啊,挑一個(gè)可以的講講吧。
然后我挑了個(gè)本科畢業(yè)設(shè)計(jì)…確實(shí)沒(méi)什么可講的,現(xiàn)在想想應(yīng)該挑資助中心項(xiàng)目的。然后感覺(jué)自己投了一個(gè)錯(cuò)誤的崗位,或者說(shuō)沒(méi)有根據(jù)這個(gè)崗位來(lái)寫我的簡(jiǎn)歷…
數(shù)據(jù)庫(kù)都怎么用?都用了啥數(shù)據(jù)庫(kù),了解其他數(shù)據(jù)庫(kù)嗎?
HBase MongoDB MySQL Oracle Redis
關(guān)系型數(shù)據(jù)庫(kù):關(guān)系模型指的就是二維表格模型,而一個(gè)關(guān)系型數(shù)據(jù)庫(kù)就是由二維表及其之間的聯(lián)系所組成的一個(gè)數(shù)據(jù)組織
非關(guān)系型數(shù)據(jù)庫(kù):以鍵值對(duì)存儲(chǔ),且結(jié)構(gòu)不固定,每一個(gè)元組可以有不一樣的字段,每個(gè)元組可以根據(jù)需要增加一些自己的鍵值對(duì),這 樣就不會(huì)局限于固定的結(jié)構(gòu),可以減少一些時(shí)間和空間的開(kāi)銷。
適合存儲(chǔ)一些較為簡(jiǎn)單的數(shù)據(jù)
結(jié)構(gòu)化查詢語(yǔ)言(Structured Query Language)
- 關(guān)系型數(shù)據(jù)庫(kù) V.S. 非關(guān)系型數(shù)據(jù)庫(kù)
關(guān)系型數(shù)據(jù)庫(kù)的最大特點(diǎn)就是事務(wù)的一致性:傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)讀寫操作都是事務(wù)的,具有ACID的特點(diǎn),這個(gè)特性使得關(guān)系型數(shù)據(jù)庫(kù)可以用于幾乎所有對(duì)一致性有要求的系統(tǒng)中,如典型的銀行系統(tǒng)。
但是,在網(wǎng)頁(yè)應(yīng)用中,尤其是SNS應(yīng)用中,一致性卻不是顯得那么重要,用戶A看到的內(nèi)容和用戶B看到同一用戶C內(nèi)容更新不一致是可以容忍的,或者 說(shuō),兩個(gè)人看到同一好友的數(shù)據(jù)更新的時(shí)間差那么幾秒是可以容忍的,因此,關(guān)系型數(shù)據(jù)庫(kù)的最大特點(diǎn)在這里已經(jīng)無(wú)用武之地,起碼不是那么重要了。
相反地,關(guān)系型數(shù)據(jù)庫(kù)為了維護(hù)一致性所付出的巨大代價(jià)就是其讀寫性能比較差,而像微博、facebook這類SNS的應(yīng)用,對(duì)并發(fā)讀寫能力要求極 高,關(guān)系型數(shù)據(jù)庫(kù)已經(jīng)無(wú)法應(yīng)付(在讀方面,傳統(tǒng)上為了克服關(guān)系型數(shù)據(jù)庫(kù)缺陷,提高性能,都是增加一級(jí)memcache來(lái)靜態(tài)化網(wǎng)頁(yè),而在SNS中,變化太 快,memchache已經(jīng)無(wú)能為力了),因此,必須用新的一種數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)來(lái)代替關(guān)系數(shù)據(jù)庫(kù)。
關(guān)系數(shù)據(jù)庫(kù)的另一個(gè)特點(diǎn)就是其具有固定的表結(jié)構(gòu),因此,其擴(kuò)展性極差,而在SNS中,系統(tǒng)的升級(jí),功能的增加,往往意味著數(shù)據(jù)結(jié)構(gòu)巨大變動(dòng),這一點(diǎn)關(guān)系型數(shù)據(jù)庫(kù)也難以應(yīng)付,需要新的結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)。
于是,非關(guān)系型數(shù)據(jù)庫(kù)應(yīng)運(yùn)而生,由于不可能用一種數(shù)據(jù)結(jié)構(gòu)化存儲(chǔ)應(yīng)付所有的新的需求,因此,非關(guān)系型數(shù)據(jù)庫(kù)嚴(yán)格上不是一種數(shù)據(jù)庫(kù),應(yīng)該是一種數(shù)據(jù)結(jié)構(gòu)化存儲(chǔ)方法的集合。
必須強(qiáng)調(diào)的是,數(shù)據(jù)的持久存儲(chǔ),尤其是海量數(shù)據(jù)的持久存儲(chǔ),還是需要一種關(guān)系數(shù)據(jù)庫(kù)這員老將。
問(wèn)我申請(qǐng)內(nèi)存這些用的多不多…我說(shuō)不多。
問(wèn)我分布式有啥經(jīng)歷沒(méi)…我說(shuō)沒(méi)有。
問(wèn)我多進(jìn)程多線程的用的多不多…我說(shuō)不多。
問(wèn)我啥了我忘了…
問(wèn)我進(jìn)程和線程的區(qū)別…
然后問(wèn)了兩道題
- 兩個(gè)數(shù)組,一個(gè)有1000萬(wàn),一個(gè)有100萬(wàn),求交集。
我答了哈希,然后讓我再想想,也沒(méi)想出啥來(lái)。 - 一個(gè)數(shù)組,求有多少個(gè)不同的數(shù)及其數(shù)目。
我答了哈希,然后讓我再想想,我想了想說(shuō)排序再遍歷。沒(méi)了…
我覺(jué)得自己弱爆了…
然后晚上和師兄聊了聊,發(fā)現(xiàn)自己還是得多學(xué)習(xí)!
3.13 小米公司
一個(gè)數(shù),如何求根號(hào)數(shù),不能調(diào)用系統(tǒng)函數(shù),我說(shuō)用二分,先設(shè)一個(gè)初始值,然后比較其平方和該數(shù)的大小,然后繼續(xù)搜索對(duì)比。
注意先判斷數(shù)是大于1還是小于1。一個(gè)字符串,由一些單詞組成,間隔符是空格,然后將其反轉(zhuǎn)。
我想了想,leetcode做過(guò),只要先把整個(gè)反轉(zhuǎn),然后再把里面的每個(gè)word反轉(zhuǎn)一下就可以了。一個(gè)系統(tǒng),有一大堆的定時(shí)任務(wù)。
每個(gè)任務(wù)包括開(kāi)始時(shí)間、周期以及回調(diào)函數(shù)。
然后問(wèn)你怎么更有效率的執(zhí)行。
我說(shuō)用哈希,直接存儲(chǔ)時(shí)間,key是時(shí)間,value是任務(wù)的id。然后結(jié)束之后把這個(gè)map銷毀掉,新建一個(gè)周期之后的map。
問(wèn)了下操作系統(tǒng)任務(wù)是怎么調(diào)度的,說(shuō)隊(duì)列,隊(duì)列是用什么數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)的。一個(gè)100萬(wàn)數(shù)字的數(shù)組,數(shù)字范圍0-999999。讓你找里面重疊的數(shù)字。
我說(shuō)了哈希,說(shuō)了排序,然后沒(méi)想到O(1)空間,O(n)時(shí)間來(lái)做的方法。
然后提示了說(shuō)用位圖,沒(méi)聽(tīng)說(shuō)過(guò)…
然后后來(lái)想了想,可以直接把數(shù)值i調(diào)換到i位置,假如i位置原值是i的話,那么i就是重復(fù)的。
看了下位圖,差不多就是這個(gè)意思,就比如說(shuō){1,1,1,0,1,0,1,1}來(lái)表示{3,5,7,8,2,1}的排序結(jié)果
想想這一類的題目做的也不少了,就是說(shuō)用原有空間來(lái)替代哈希所需要的空間?。?!
網(wǎng)易游戲公司電面,在線視頻面試
首先問(wèn)了之前在線筆試中沒(méi)有做出來(lái)的題目的想法和思路,NTES那道題目。
然后問(wèn)哪種語(yǔ)言比較熟悉…我說(shuō)C++,然后換了個(gè)哥們問(wèn)我C++。
然后我就傻逼了,啥都不會(huì)啊臥槽。
- 問(wèn)四種轉(zhuǎn)換操作符有什么區(qū)別
- static_cast
最常用的類型轉(zhuǎn)換符,在正常狀況下的類型轉(zhuǎn)換,如把int轉(zhuǎn)換為float,如:int i;float f; f=(float)i;或者f=static_cast<float>(i);
- const_cast
用于取出const屬性,把const類型的指針變?yōu)榉莄onst類型的指針,如:const int *fun(int x,int y){} int *ptr=const_cast<int *>(fun(2.3))
- dynamic_cast
該操作符用于運(yùn)行時(shí)檢查該轉(zhuǎn)換是否類型安全,但只在多態(tài)類型時(shí)合法,即該類至少具有一個(gè)虛擬方法。dynamic_cast與static_cast具有相同的基本語(yǔ)法,dynamic_cast主要用于類層次間的上行轉(zhuǎn)換和下行轉(zhuǎn)換,還可以用于類之間的交叉轉(zhuǎn)換。在類層次間進(jìn)行上行轉(zhuǎn)換時(shí),dynamic_cast和static_cast的效果是一樣的;在進(jìn)行下行轉(zhuǎn)換時(shí),dynamic_cast具有類型檢查的功能,比static_cast更安全。如:
class C
{
//…C沒(méi)有虛擬函數(shù)
};
class T : public C {
//…
}
int main()
{
dynamic_cast<T*> (new C);//錯(cuò)誤
}
此時(shí)如改為以下則是合法的:
class C
{
public:
virtual void m() {};// C現(xiàn)在是 多態(tài)
}
- reinterpret_cast
interpret是解釋的意思,reinterpret即為重新解釋,此標(biāo)識(shí)符的意思即為數(shù)據(jù)的二進(jìn)制形式重新解釋,但是不改變其值。如:int i; char *ptr="hello freind!"; i=reinterpret_cast<int>(ptr);這個(gè)轉(zhuǎn)換方式很少使用。 - 問(wèn)多態(tài)的實(shí)現(xiàn)
我說(shuō)用虛函數(shù)實(shí)現(xiàn),通過(guò)基類指針來(lái)調(diào)用派生類。 - 以對(duì)象管理資源的好處
我說(shuō)了有利于資源的釋放。 - 讓寫string的構(gòu)造函數(shù),拷貝函數(shù)和賦值運(yùn)算
完全不會(huì)…
class String
{
public:
String(const char *str = NULL);
String(const String &other);
~String(void);
String & operator = (const String &other);
private:
char *m_data;
};
String::String(const char *str) //構(gòu)造函數(shù)
{
if (str == NULL) {
m_data = new char[1];
*m_data = '\0';
}
else {
auto length = strlen(str);
m_data = new char[length + 1];
strcpy(m_data, str);
}
}
String::~String() {
delete [] m_data;
}
String & String::operator=(const String &other)
{
if (this == &other)
return *this;
delete [] m_data;
auto length = strlen(other.m_data);
m_data = new char[length+1];
strcpy(m_data, other.m_data);
return *this;
}
String::String(const String &other) //拷貝構(gòu)造函數(shù)
{
auto length = strlen(other.m_data);
m_data = new char[length + 1];
strcpy(m_data, other.m_data);
}
- 寫sqrt(n)
這個(gè)比較好寫。 - 是否了解一些比較前沿的技術(shù)。
我說(shuō)了解一些,比如新的非關(guān)系型數(shù)據(jù)庫(kù)啊,Hbase之類的,看看博客啊之類的… - 讓說(shuō)一下項(xiàng)目中印象最深,啟發(fā)最大的事情。
我說(shuō)了懷教那個(gè)項(xiàng)目,和別人之間的溝通…完全在瞎扯淡… - 聊了下最后一個(gè)項(xiàng)目。
這個(gè)聊了比較多。
最后還是慣例看有沒(méi)有什么問(wèn)題問(wèn)他。
我就問(wèn)了工作內(nèi)容工作職責(zé)啥的,沒(méi)有問(wèn)太多東西。
主要用python,會(huì)用一些C++。
今日頭條公司當(dāng)面面試
- const和static的區(qū)別以及基本用法。
static作用:“改變生命周期” 或者 “改變作用域”
- 作用于變量:
用static聲明局部變量,使其變?yōu)殪o態(tài)存儲(chǔ)方式(靜態(tài)數(shù)據(jù)區(qū)),作用域不變;用static聲明外部變量,其本身就是靜態(tài)變量,這只會(huì)改變其連接方式,使其只在本文件內(nèi)部有效,而其他文件不可連接或引用該變量。 - 作用于函數(shù):
使用static用于函數(shù)定義時(shí),對(duì)函數(shù)的連接方式產(chǎn)生影響,使得函數(shù)只在本文件內(nèi)部有效,對(duì)其他文件是不可見(jiàn)的。這樣的函數(shù)又叫作靜態(tài)函數(shù)。使用靜態(tài)函數(shù)的好處是,不用擔(dān)心與其他文件的同名函數(shù)產(chǎn)生干擾,另外也是對(duì)函數(shù)本身的一種保護(hù)機(jī)制。
如果想要其他文件可以引用本地函數(shù),則要在函數(shù)定義時(shí)使用關(guān)鍵字extern,表示該函數(shù)是外部函數(shù),可供其他文件調(diào)用。另外在要引用別的文件中定義的外部函數(shù)的文件中,使用extern聲明要用的外部函數(shù)即可。
const作用: “只讀(readonly)”
- 定義常量
(1)const
修飾變量,以下兩種定義形式在本質(zhì)上是一樣的。它的含義是:const修飾的類型為TYPE的變量value是不可變的,readonly。
TYPE const ValueName = value;
const TYPE ValueName = value;
(2)將const改為外部連接,作用于擴(kuò)大至全局,編譯時(shí)會(huì)分配內(nèi)存,并且可以不進(jìn)行初始化,僅僅作為聲明,編譯器認(rèn)為在程序其他地方進(jìn)行了定義.
extend const int ValueName = value; - 指針使用CONST
(1) 指針本身是常量不可變
char * const pContent;
const (char*) pContent; ???
(2) 指針?biāo)赶虻膬?nèi)容是常量不可變
const char *pContent;
char const *pContent;
(3) 兩者都不可變
const char* const pContent;
(4) 還有其中區(qū)別方法,沿著*號(hào)劃一條線:如果const位于*的左側(cè),則const就是用來(lái)修飾指針?biāo)赶虻淖兞?,即指針指向?yàn)槌A浚蝗绻鹀onst位于*的右側(cè),const就是修飾指針本身,即指針本身是常量。sdfs - 函數(shù)中使用CONST
(1) const修飾函數(shù)參數(shù)
a. 傳遞過(guò)來(lái)的參數(shù)在函數(shù)內(nèi)不可以改變(無(wú)意義,因?yàn)閂ar本身就是形參)
void function(const int Var);
b. 參數(shù)指針?biāo)竷?nèi)容為常量不可變
void function(const char* Var);
c. 參數(shù)指針本身為常量不可變(也無(wú)意義,因?yàn)閏har* Var也是形參)
void function(char* const Var);
d. 參數(shù)為引用,為了增加效率同時(shí)防止修改。修飾引用參數(shù)時(shí):
void function(const Class& Var); //引用參數(shù)在函數(shù)內(nèi)不可以改變
void function(const TYPE& Var); //引用參數(shù)在函數(shù)內(nèi)為常量不可變
這樣的一個(gè)const引用傳遞和最普通的函數(shù)按值傳遞的效果是一模一樣的,他禁止對(duì)引用的對(duì)象的一切修改,唯一不同的是按值傳遞會(huì)先建立一個(gè)類對(duì)象的副本, 然后傳遞過(guò)去,而它直接傳遞地址,所以這種傳遞比按值傳遞更有效.另外只有引用的const傳遞可以傳遞一個(gè)臨時(shí)對(duì)象,因?yàn)榕R時(shí)對(duì)象都是const屬性, 且是不可見(jiàn)的,他短時(shí)間存在一個(gè)局部域中,所以不能使用指針,只有引用的const傳遞能夠捕捉到這個(gè)家伙.
(2) const 修飾函數(shù)返回值
const修飾函數(shù)返回值其實(shí)用的并不是很多,它的含義和const修飾普通變量以及指針的含義基本相同。
a. const int fun1() //這個(gè)其實(shí)無(wú)意義,因?yàn)閰?shù)返回本身就是賦值。
b. const int * fun2() //調(diào)用時(shí)
const int *pValue = fun2(); //我們可以把fun2()看作成一個(gè)變量,即指針內(nèi)容不可變。
c. int* const fun3() //調(diào)用時(shí)
int * const pValue = fun2(); //我們可以把fun2()看作成一個(gè)變量,即指針本身不可變。
內(nèi)存分配的使用場(chǎng)景
一個(gè)數(shù)組求重復(fù)數(shù)字的問(wèn)題,老問(wèn)題。
給一個(gè)數(shù)組,求其前k大的元素。
可以用快速排序,找出前k大的,然后再對(duì)那一堆進(jìn)行排序。給一堆字符串集合,假如兩個(gè)集合有一樣的元素則把兩個(gè)合并。
基礎(chǔ)知識(shí)還是太弱,然后人不夠open!下次面試不要這么拘謹(jǐn)!好好準(zhǔn)備一下自我介紹吧!然后結(jié)束的時(shí)候記得問(wèn)下面試官有什么建議,然后討論下之前問(wèn)的題目!
HULU公司面試
一面
先扯項(xiàng)目扯了會(huì),然后問(wèn)了倆題
1.一個(gè)篩子 怎么將40個(gè)人隨機(jī)分成4組,每組10人
2.一個(gè)長(zhǎng)度為n字符串,只包含a和b,問(wèn)有多少種有循環(huán)節(jié)的情況
第二題寫代碼
二面
扯了會(huì)項(xiàng)目,問(wèn)一些設(shè)計(jì)方面的,比如一個(gè)非技術(shù)公司想讓你設(shè)計(jì)開(kāi)發(fā)官網(wǎng),怎么搞
扯了挺久怎么搞怎么搞…
讓寫了道題,
sqrt,精確到k位小數(shù)點(diǎn)
微軟面試
一面
問(wèn)兩個(gè)有序數(shù)組,如何確定其中位數(shù),拓展一下,如何求第k大。
用二分的方法來(lái)做。
二面
問(wèn)了下給定n個(gè)數(shù),如何隨機(jī)的取其中k個(gè)數(shù)。
假如不知道一共有多少個(gè)數(shù)字,怎么隨機(jī)取。
然后問(wèn)了下docker和虛擬機(jī)的區(qū)別,然后問(wèn)了下海量圖數(shù)據(jù)的管理與挖掘課程都講了啥…
- Docker源自Linux核心的系統(tǒng)層功能,如控制資源的控制群組機(jī)制cgroups、命名空間Namespaces,還有實(shí)現(xiàn)層級(jí)化功能的共通檔案系統(tǒng)AUFS等。
Windows系統(tǒng)的docker,微軟為了docker特意實(shí)現(xiàn)了幾種系統(tǒng)層機(jī)制。
Namespace解決的問(wèn)題主要是環(huán)境隔離的問(wèn)題
Linux CGroup解決對(duì)計(jì)算機(jī)資源使用上的隔離 - 海量圖數(shù)據(jù)的管理與挖掘主要講了一些數(shù)據(jù)挖掘有關(guān)的算法,講了一些老的算法以及比較新的一些paper提出的算法,比如
- 頻繁模式挖掘,在一個(gè)數(shù)據(jù)集中頻繁出現(xiàn)的模式(一些項(xiàng)、子序列、子結(jié)構(gòu)等)
應(yīng)用:銷售記錄里的啤酒與尿布,牛奶與面包。Apriori算法,例子見(jiàn)這里。
1)支持度:表示某個(gè)item集合在數(shù)據(jù)表中出現(xiàn)的比例。
2)K-項(xiàng)候選集:由K-1項(xiàng)頻繁集組合而成,支持度大于等于指定支持度的含有K個(gè)項(xiàng)的集合,供計(jì)算K項(xiàng)頻繁集使用。
3)K-項(xiàng)頻繁集:支持度大于等于指定支持度的含有k個(gè)項(xiàng)的集合,由K項(xiàng)候選集計(jì)算而得。 - 圖上的可達(dá)性問(wèn)題研究
- 挖掘網(wǎng)絡(luò)上的最大影響力節(jié)點(diǎn)(比如說(shuō)推廣手機(jī)的預(yù)算是100萬(wàn)元,預(yù)計(jì)每個(gè)新浪博主的宣傳費(fèi)是1萬(wàn)元,如何利用這100萬(wàn)元預(yù)算,使這款手機(jī)在新浪微博上的推廣效果最好?)
- 頻繁模式挖掘,在一個(gè)數(shù)據(jù)集中頻繁出現(xiàn)的模式(一些項(xiàng)、子序列、子結(jié)構(gòu)等)
三面
問(wèn)了倆題,一道是求字符串中最長(zhǎng)不重復(fù)子串,然后擴(kuò)展下,怎么求可以有一個(gè)字母重復(fù)兩次的。
另一道是說(shuō)一個(gè)矩陣,矩陣數(shù)值表示高度,問(wèn)一個(gè)球從高處往低處最多能降低多少。
宜信大數(shù)據(jù)面試
被虐翻了…問(wèn)了許多基礎(chǔ)知識(shí)各種不會(huì)
問(wèn)如何刪除鏈表里的重復(fù)元素。
多態(tài)的實(shí)現(xiàn)
一般繼承及多重繼承看這里
菱形繼承看這里
哈希表是如何實(shí)現(xiàn)的
哈希表類項(xiàng)中必須存儲(chǔ)key,因?yàn)榕鲎驳拇嬖?,往往不能夠通過(guò)散列函數(shù)直接得到地址,還需要進(jìn)一步的判斷,因此列表項(xiàng)中需要存儲(chǔ)key值。
解決hash沖突的辦法
- 開(kāi)放定址法(線性探測(cè)再散列,二次探測(cè)再散列,偽隨機(jī)探測(cè)再散列)
- 再哈希法
- 鏈地址法
- 建立一個(gè)公共溢出區(qū)
面向?qū)ο笳Z(yǔ)言的特性
多態(tài)和繼承
問(wèn)各種排序算法,詳細(xì)的可以看看這里。
- 冒泡排序
它重復(fù)地走訪過(guò)要排序的數(shù)列,一次比較兩個(gè)元素,如果他們的順序錯(cuò)誤就把他們交換過(guò)來(lái),直到?jīng)]有任何一對(duì)數(shù)字需要交換。 - 選擇排序
在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。
再?gòu)氖S辔磁判蛟刂欣^續(xù)尋找最?。ù螅┰兀缓蠓诺揭雅判蛐蛄械哪┪?。
以此類推,直到所有元素均排序完畢 - 插入排序
插入排序的工作原理是,對(duì)于每個(gè)未排序數(shù)據(jù),在已排序序列中從后向前掃描,找到相應(yīng)位置并插入。 - 希爾排序
希爾排序,也稱遞減增量排序算法,實(shí)質(zhì)是分組插入排序。 - 歸并排序
歸并排序的思想就是先遞歸分解數(shù)組,再合并數(shù)組。 - 快速排序
“挖坑填數(shù)+分治法”,
首先令i =L; j = R; 將a[i]挖出形成第一個(gè)坑,稱a[i]為基準(zhǔn)數(shù)。
然后j--由后向前找比基準(zhǔn)數(shù)小的數(shù),找到后挖出此數(shù)填入前一個(gè)坑a[i]中,再i++由前向后找比基準(zhǔn)數(shù)大的數(shù),找到后也挖出此數(shù)填到前一個(gè)坑a[j]中。
重復(fù)進(jìn)行這種“挖坑填數(shù)”直到i==j。再將基準(zhǔn)數(shù)填入a[i]中,這樣i之前的數(shù)都比基準(zhǔn)數(shù)小,i之后的數(shù)都比基準(zhǔn)數(shù)大。
因此將數(shù)組分成二部分再分別重復(fù)上述步驟就完成了排序。 - 堆排序
堆排序是采用二叉堆的數(shù)據(jù)結(jié)構(gòu)來(lái)實(shí)現(xiàn)的,雖然實(shí)質(zhì)上還是一維數(shù)組。二叉堆是一個(gè)近似完全二叉樹(shù) 。

智力題:一排犯人,1,2,3,4,5,前面的可以看到后面人身上穿的衣服,有紅黑兩種,不能看到自己的。從1開(kāi)始報(bào)自己身上衣服顏色,報(bào)對(duì)了活,報(bào)錯(cuò)了槍斃。犯人們可以提前商量好,問(wèn)如何報(bào)使得犯人死的最少。
測(cè)試工具:apache ab
測(cè)試一般要考慮一下幾點(diǎn):
Thoughput吞吐量,Latency響應(yīng)時(shí)間,資源利用(CPU/MEM/IO/Bandwidth…),成功率,系統(tǒng)穩(wěn)定性
這次測(cè)試屬于局域網(wǎng)環(huán)境進(jìn)行,排除了外網(wǎng)的網(wǎng)速限制及不穩(wěn)定性
延遲在1s左右,然后大概能夠支持的并發(fā)用戶數(shù)量大概是
反正都在扯淡…
滴滴新銳計(jì)劃面試
一共三面
感覺(jué)沒(méi)問(wèn)什么c++基礎(chǔ)題,就主要問(wèn)了問(wèn)項(xiàng)目,出了幾道簡(jiǎn)單算法題讓你寫
一面:
扯項(xiàng)目,讓寫個(gè)鏈表去重
二面:
扯項(xiàng)目,
給一堆元素,假如一個(gè)元素大于另一個(gè)元素的兩倍,則能組成一對(duì),問(wèn)最多能有多少對(duì)。
想了想,只能想到暴力方法…然后換了道簡(jiǎn)單的。
一個(gè)三角形的數(shù)組,如下
[1]
[2, 3]
[3, 4, 5]
[6, 4, 6, 3]
問(wèn)從最頂端到最底端數(shù)值和最小是多少。每個(gè)元素只能和上下層的相鄰元素連接,比如說(shuō)第三層的4可以和第二層的2,3連接,第三層的3只可以和第二層的2連接。一道簡(jiǎn)單的dp題。
三面:
又扯項(xiàng)目,感覺(jué)現(xiàn)在扯項(xiàng)目扯的很溜了。然后讓寫鏈表反轉(zhuǎn)…
然后就結(jié)束了。