2019年寒武紀暑期實習面試問題總結

一、引言
這篇博文的主要目的是記錄一下,找實習和工作面試過程問的一些問題,都是一些基礎的問題,但往往是比較容易忽略的。所以做一個記錄,方便今後學習。當然,也分享給愛學習的你[手動滑稽]!
我是做自動駕駛視覺方向的,所以一些項目都是關於項目的問題,這個就不多寫了,主要寫一些代碼基礎問題。

某武紀面試問題

1. C++的面向對象解釋。
用官方的定義:面向對象技術是一種以對象爲基礎,以事件或消息來驅動對象執行處理的程序設計技術。它具有封裝性、繼承性及多態性。
我的理解,面向過程是以過程爲中心的,比如先做什麼後做什麼,面向對象是將事物對象化,定義對象的屬性,通過對象之間的交互解決問題。

2.C++多態性。函數重載,虛函數

C++中多態性分爲兩種,一種是編譯時多態,另一種是運行時多態

運行時多態】 就是虛函數,在定義虛函數之後,可以在派生類中對虛函數重定義,來實現想要的功能。多態性(polymorphisn)是允許你將父對象設置成爲和一個或更多的他的子對象相等的技術,賦值之後,父對象就可以根據當前賦值給它的子對象的特性以不同的方式運作。簡單的說,就是一句話:允許將子類類型的指針賦值給父類類型的指針。
最常見的用法就是聲明基類的指針,利用該指針指向任意一個子類對象,調用相應的虛函數,可以根據指向的子類的不同而實現不同的方法。如果沒有使用虛函數的話,即沒有利用C++多態性,則利用基類指針調用相應的函數的時候,將總被限制在基類函數本身,而無法調用到子類中被重寫過的函數。因爲沒有多態性,函數調用的地址將是一定的,而固定的地址將始終調用到同一個函數,這就無法實現一個接口,多種方法的目的了。

編譯時多態】就是函數重載,就是同一函數名可以對應着多個函數的實現,具體調用那個按照參數個數參數類型來決定。
在C++語言中,多態性是指具有不同功能的函數可以用同一個函數名,這樣就可以用一個函數名調用不用內容的函數,發出同樣的消息被不同類型的對象接受時,導致完全不同的行爲。

3. 基本的數據類型。
int double float short char long等
4.int型在32位操作系統和64位操作系統佔多少位?

64位系統64位編譯器 int佔4個字節32位。
char *p;
sizeof§=8;//64位編譯器佔用8個字節,32位編譯器佔4個字節。
sizeof(int)=4;//4個字節

在這裏插入圖片描述

5. STL模板庫中容器有哪幾種?vector的頭文件是啥。

序列容器:vector ,deque ,list
結合容器:set,multiset,map,multimap.

6. 結構體和共用體的區別

兩者最大的區別在於內存利用。

(1)struct和union都是由多個不同的數據類型成員組成,但在任何同一時刻, union中只存放了一個被選中的成員,而struct的所有成員都存在。在struct中,各成員都佔有自己的內存空間,它們是同時存在的。一個struct變量的總長度等於所有成員長度之和。在Union中,所有成員不能同時佔用它的內存空間,它們不能同時存在。Union變量的長度等於最長的成員的長度。

(2)對於union的不同成員賦值,將會對其它成員重寫,原來成員的值就不存在了,而對於struct的不同成員賦值是互不影響的。

結構體struct
各成員各自擁有自己的內存,各自使用互不干涉,同時存在的,遵循內存對齊原則。一個struct變量的總長度等於所有成員的長度之和。
聯合體union
各成員共用一塊內存空間,並且同時只有一個成員可以得到這塊內存的使用權(對該內存的讀寫),各變量共用一個內存首地址。因而,聯合體比結構體更節約內存。一個union變量的總長度至少能容納最大的成員變量,而且要滿足是所有成員變量類型大小的整數倍。不允許對聯合體變量名U2直接賦值或其他操作。
內存對齊原則:
參考這篇博客點擊這裏
7、虛函數和純虛函數的區別
虛函數必須在基類中實現,爲子類提供默認的函數實現。純虛函數在基類中定義,不能實現,只能在子類中new 出對象。C++中的純虛函數更像是“只提供申明,沒有實現”,是對子類的約束,是“接口繼承”。
class A
{
public:
virtual void ss()
{
cout<<“我是基類的虛函數”<<endl;
}
};
class A
{
public:
virtual void out1(string s)=0; //我是基類的純虛函數
};

8. 結構體中內存地址對齊?

這個當時還不懂,參考博客

9. yolov3訓練過程說一下

這個自行百度吧, 我項目中寫的yolo所以面試官就問這個了。

10. TensorFlow中圖的解釋

我的理解就是計算任務的集合。

11. TensorFlow中張量的解釋

在TensorFlow中,所有的數據都爲張量。其中,零階張量表示標量(scalar),代表一個數,一階張量表示向量,代表一維數組,n階張量表示n維數組。

13. Ubuntu16.04和Ubuntu18.04的區別

我tm當時還沒有用過16.04的系統,我哪知道區別是啥,無語。。。

14. Ubuntu中腳本語言用過嗎?shell寫過程序嗎?用shell寫查找文件的代碼?

這個我是真沒用過啊,偶爾用也是找百度,唉。。

最後
最後聊完之後,問能不能實習6個月,導師只讓暑假出去,不到兩個月時間,已經很開明瞭。面試官聽到我說兩個月之後,估計就涼涼了。。。
還有一些其他公司的時間長了忘了,也都是會問項目的一些東西。但是好像他們都比較喜歡做深度學習方面的視覺,不太喜歡傳統的圖像方向。
最後,希望自己也可以發現自己的不足,繼續進步,分享給大家!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章