我是菜雞

阿里的一道在線編程測(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)

  1. 關(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)了兩道題

  1. 兩個(gè)數(shù)組,一個(gè)有1000萬(wàn),一個(gè)有100萬(wàn),求交集。
    我答了哈希,然后讓我再想想,也沒(méi)想出啥來(lái)。
  2. 一個(gè)數(shù)組,求有多少個(gè)不同的數(shù)及其數(shù)目。
    我答了哈希,然后讓我再想想,我想了想說(shuō)排序再遍歷。沒(méi)了…

我覺(jué)得自己弱爆了…

然后晚上和師兄聊了聊,發(fā)現(xiàn)自己還是得多學(xué)習(xí)!

3.13 小米公司

  1. 一個(gè)數(shù),如何求根號(hào)數(shù),不能調(diào)用系統(tǒng)函數(shù),我說(shuō)用二分,先設(shè)一個(gè)初始值,然后比較其平方和該數(shù)的大小,然后繼續(xù)搜索對(duì)比。
    注意先判斷數(shù)是大于1還是小于1。

  2. 一個(gè)字符串,由一些單詞組成,間隔符是空格,然后將其反轉(zhuǎn)。
    我想了想,leetcode做過(guò),只要先把整個(gè)反轉(zhuǎn),然后再把里面的每個(gè)word反轉(zhuǎn)一下就可以了。

  3. 一個(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)的。

  4. 一個(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ì)啊臥槽。

  1. 問(wèn)四種轉(zhuǎn)換操作符有什么區(qū)別
  2. static_cast
最常用的類型轉(zhuǎn)換符,在正常狀況下的類型轉(zhuǎn)換,如把int轉(zhuǎn)換為float,如:int i;float f; f=(float)i;或者f=static_cast<float>(i);
  1. const_cast
用于取出const屬性,把const類型的指針變?yōu)榉莄onst類型的指針,如:const int *fun(int x,int y){}  int *ptr=const_cast<int *>(fun(2.3))
  1. 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)
}
  1. 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)換方式很少使用。
  2. 問(wèn)多態(tài)的實(shí)現(xiàn)
    我說(shuō)用虛函數(shù)實(shí)現(xiàn),通過(guò)基類指針來(lái)調(diào)用派生類。
  3. 以對(duì)象管理資源的好處
    我說(shuō)了有利于資源的釋放。
  4. 讓寫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);
}
  1. 寫sqrt(n)
    這個(gè)比較好寫。
  2. 是否了解一些比較前沿的技術(shù)。
    我說(shuō)了解一些,比如新的非關(guān)系型數(shù)據(jù)庫(kù)啊,Hbase之類的,看看博客啊之類的…
  3. 讓說(shuō)一下項(xiàng)目中印象最深,啟發(fā)最大的事情。
    我說(shuō)了懷教那個(gè)項(xiàng)目,和別人之間的溝通…完全在瞎扯淡…
  4. 聊了下最后一個(gè)項(xiàng)目。
    這個(gè)聊了比較多。
    最后還是慣例看有沒(méi)有什么問(wèn)題問(wèn)他。
    我就問(wèn)了工作內(nèi)容工作職責(zé)啥的,沒(méi)有問(wèn)太多東西。
    主要用python,會(huì)用一些C++。

今日頭條公司當(dāng)面面試

  1. 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è)變量,即指針本身不可變。
  1. 內(nèi)存分配的使用場(chǎng)景

  2. 一個(gè)數(shù)組求重復(fù)數(shù)字的問(wèn)題,老問(wèn)題。

  3. 給一個(gè)數(shù)組,求其前k大的元素。
    可以用快速排序,找出前k大的,然后再對(duì)那一堆進(jìn)行排序。

  4. 給一堆字符串集合,假如兩個(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ī)在新浪微博上的推廣效果最好?)

三面
問(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ì)的可以看看這里。

  1. 冒泡排序
    它重復(fù)地走訪過(guò)要排序的數(shù)列,一次比較兩個(gè)元素,如果他們的順序錯(cuò)誤就把他們交換過(guò)來(lái),直到?jīng)]有任何一對(duì)數(shù)字需要交換。
  2. 選擇排序
    在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。
    再?gòu)氖S辔磁判蛟刂欣^續(xù)尋找最?。ù螅┰兀缓蠓诺揭雅判蛐蛄械哪┪?。
    以此類推,直到所有元素均排序完畢
  3. 插入排序
    插入排序的工作原理是,對(duì)于每個(gè)未排序數(shù)據(jù),在已排序序列中從后向前掃描,找到相應(yīng)位置并插入。
  4. 希爾排序
    希爾排序,也稱遞減增量排序算法,實(shí)質(zhì)是分組插入排序。
  5. 歸并排序
    歸并排序的思想就是先遞歸分解數(shù)組,再合并數(shù)組。
  6. 快速排序
    “挖坑填數(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ù)上述步驟就完成了排序。
  7. 堆排序
    堆排序是采用二叉堆的數(shù)據(jù)結(jié)構(gòu)來(lái)實(shí)現(xiàn)的,雖然實(shí)質(zhì)上還是一維數(shù)組。二叉堆是一個(gè)近似完全二叉樹(shù) 。
各種排序算法指標(biāo)對(duì)比([圖片來(lái)源](http://wuchong.me/blog/2014/02/09/algorithm-sort-summary/))

智力題:一排犯人,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é)束了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 題目類型 a.C++與C差異(1-18) 1.C和C++中struct有什么區(qū)別? C沒(méi)有Protection行為...
    阿面a閱讀 7,891評(píng)論 0 10
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy閱讀 9,674評(píng)論 1 51
  • 指針是C語(yǔ)言中廣泛使用的一種數(shù)據(jù)類型。 運(yùn)用指針編程是C語(yǔ)言最主要的風(fēng)格之一。利用指針變量可以表示各種數(shù)據(jù)結(jié)構(gòu); ...
    朱森閱讀 3,614評(píng)論 3 44
  • ## 可重入函數(shù) ### 可重入性的理解 若一個(gè)程序或子程序可以安全的被并行執(zhí)行,則稱其為可重入的;即當(dāng)該子程序正...
    夏至亦韻閱讀 808評(píng)論 0 0

友情鏈接更多精彩內(nèi)容