作者:jesstudy;
來源:牛客網;
鏈接:https://www.nowcoder.com/discuss/144218
秋招結束 感謝牛客

秋招結束,特別感謝牛客網上熱心網友的分享,現回饋我的筆面經~

筆試

◆DJI 嵌入式開發崗

1.const

char str[]=”chen”;

char* const name =str;

const char * const name =”chen”;

三者區別

2.DDR

Double SRAM,速度爲SRAM的兩倍

3.存儲器的掉電易失特性

掉電非易失存儲器:ROM類,包括ROM/EEPROM/HDD/FLASH。

掉電易失存儲器:RAM類。

4.結構體內存對齊

struct student

{ char name;

int id;

} __attribute__ ((packed));

求結構體大小

5.cache概念

6.數組指針 指針數組 函數指針 函數指針數組

7.RTOS

硬實時典型代表:VxWorks

軟實時典型代表:Linux

8.中斷過程

9.實時系統和非實時系統的優缺點及應用場景

10.爲什麼mmap讀速度快於fread

11.unsigned int減法

unsigned int a=5;

unsigned int b=10;

判斷a-b和0的關係

面試

◆招銀網絡科技 軟件開發崗

電話面試:

1.如何理解面向對象

2.堆棧的區別

3.子類可不可以繼承多個父類,爲什麼

4. 項目中有沒有遇到內存泄漏

面試:

1.C++四種強制類型轉換

2.單核如何處理併發

3.100G文件 4G內存 如何找到出現頻率最高的數,手寫代碼

4.大數的加減法,手寫代碼

5.介紹項目

6.TCP連接的狀態,TIME_WAIT狀態持續的時長

◆華爲

兩面技術面基本上都是介紹項目

◆曠視face++ 測試開發崗

1.對崗位的理解

2.設計測試場景

○測試一瓶礦泉水的功能。注意要用物理量,這樣顯得專業一些。

○外觀是否好看,握力需要多少牛頓,擰瓶蓋時需要多少力矩,容量多少毫升,PH值標準多少等等。

○場景類似於用多少牛頓的力能把礦泉水瓶身壓破

3.做題

構造函數

類似於這樣的一道題:

class base1{

private: int a,b;

public:

base1 ( int i ) : b(i+1),a(b){}

base1():b(0),a(b){}

int get_a(){return a;}

int get_b(){return b;}

};

int main()

{

base1 obj1(11);

cout<

return 0;

}

程序輸出結果

4.手寫冒泡排序

面試官2

1.手寫代碼

○反轉int型數字(正負數)

○程序可以通過大部分測試用例,還有部分情況未考慮到:

○由於int能表示的範圍爲:-2147483648~2147483647。1000000009經過翻轉後爲9000000001超出了int所能表示的範圍。

○所以要檢測結果是否超出了範圍:

2.設計測試場景

自動販賣機。

◆小米 軟件開發崗

1.printf變參實現

printf(“%d%d”,a,b);

檢測”%d%d”中%的個數爲需要輸出的參數的個數,相鄰兩個%之間爲參數的類型。

2 .內存分配情況

靜態區

代碼區

常量區

3.TCP慢啓動算法

4. 層序遍歷二叉樹 每一行層輸出換行符

關鍵在於記錄當前行的最後一個結點,和根據當前行得到下一行的最後一個結點。在遍歷當前行結點的時候,做兩件事情:①判斷當前結點是否爲當前行的最後一個結點,如果爲當前行的最後一個結點,則輸出換行符,變爲下一行,即將當前行的最後一個結點更新爲當前行結點②不斷更新下一行的最後一個結點。

void LevelDFS (BiTree *pRoot)

{

if(!pRoot)

return ;

queue< BiTree *>q_temp;

queue .push(pRoot);

BiTree *pTemp,last= pRoot,nextlast= pRoot;

while(queue.size())

{

pTemp= queue.front();

printf(“%d”, pTemp->val);

queue.pop();

if(pTemp->left)

{

queue .push(pTemp ->left);

nextlast= pTemp ->left;

}

if(pTemp->right)

{

queue .push(pTemp->right);

nextlast= pTemp ->right

}

if(pTemp== last)

{

printf(“\n”);

last=nextlast;

}

}

}

5.二分查找旋轉的有序數組

利用二分,將數組分爲(left,mid)及(mid+1,right)兩部分,根據旋轉有序數組的特點,這兩部分肯定有一部分是有序的。如果(left,mid)有序,若data[left]<=key<=[mid],則在(left,mid)中繼續二分查找,否則在(mid+1,right)中繼續查找。對於(mid+1,right)亦如此。

特殊輸入:數組長度爲0 1 2

int RotateSearch(int * data , int length ,int key)

{

if(data==NULL||length==0)

return -1;

int low=0,high=length-1;

int mid=(low+high)/2;

while(low<=high)

{

mid=(low+high)/2;

if(data[mid]==key)

return mid;

if(data[mid]

{

if(data[mid]

low=mid+1;

else

high=mid-1;

}

else //前半段有序

{

if(data[mid]>key)

high=mid-1;

else

low=mid+1;

}

}

return -1;//未找到

}

◆地平線 嵌入式開發崗

面試官1

1.static用法 與extern區別 在文件中的定義

2.i++與++i的區別

3.輸出二叉樹每層的最右結點

4.排序:10M內存容量排100M內存的數據

先將100M內存劃分爲10個10M的內存,對每個10M的內存進行排序,使得每一個10M內存內部有序。接着定義10個指針指向劃分10個內存的起始位置,取出當前10個指針中指向元素最小的那個放入輸出文件中,並且指向最小元素的那個指針++,繼續重複上述過程,直到10個指針每一個都指向內存末尾。

面試官2

1.簡單介紹SPI總線、I2C總線

2.判斷int數中1的個數

簡單方法:將二進制數101110減1會把其最右邊爲1的位的右邊變爲1,最右爲1的位變爲0,最右爲1的爲的左邊保持不變,即可得到101101。將二者數相與,即可得到101100,此時數中1的個數就減少了1。通過累計上述過程的次數,直到二進制數變爲0。可得到時間複雜度爲結果的代碼。

3. 將char型數轉換成int型

面試官3

1.TCP的三次握手 socket程序設計

2.構建二完全叉樹使得其中序遍歷是輸入數組序列

◆百度

前兩面基礎知識跟前文問得差不多,手寫代碼是找序列中第K大的數,實現加減乘除的四則運算。第三面問的是項目以及在項目中如何團隊合作的問題。

◆HR面

1.自己的優缺點

2.未來職業規劃

3.如何看待加班

大致信息就是這樣,還有些我認爲重複的及記不太清的就沒往上寫。

在找工作中也遇見過被面試官diss過的情況,也有很疲憊的時候。我感覺當我們認定做一件事情的時候,就已經創造了一個小小的奇蹟。

希望對大家有點參考作用吧,再次謝謝牛客上的網友,大家都加油~

相關文章