華為面試題及答案
這是第三次接到華為的面試電話了,第一交是自己投的簡歷,第二次及這次都是華為公司通過網絡搜索到打的電話給我,前面兩次我都是剛剛找到工作,然后就接到電話了,哎,真的是有點背運。這次千萬不能夠錯過,這是搞
IT
的人夢的都進的企業,我也是一樣,希望能夠去一個更好的地方,以便更好的發揮自己。為了不使自己一點准備就去赴考場,還是先找點東西看看。我從網上找到問題,然后再根據問題到網絡尋找問題的,謝謝問題的提供者。

Q2:請你詳細的解釋一下IP協議的定義,在哪個層上面,主要有什么作用? TCP與UDP呢?
UDP
,
TCP
在傳輸層,
IP
在網絡層,
TCP/IP
是英文
Transmission Control Protocol/Internet Protocol
的縮寫,意思是
"
傳輸控制協議
/
網際協議
"
。
TCP/IP
協議組之所以流行,部分原因是因為它可以用在各種各樣的信道和底層協議(例如
T1
和
X.25
、以太網以及
RS-232
串行接口)之上。確切地說,
TCP/IP
協議是一組包括
TCP
協議和
IP
協議,
UDP
(
User Datagram Protocol
)協議、
ICMP
(
Internet Control Message Protocol
)協議和其他一些協議的協議組。
TCP/IP
協議並不完全符合
OSI
的七層參考模型。傳統的開放式系統互連參考模型,是一種通信協議的
7
層抽象的參考模型
,
其中每一層執行某一特定任務。該模型的目的是使各種硬件在相同的層次上相互通信。這
7
層是
:
物理層、數據鏈路層、網路層、傳輸層、話路層、表示層和應用層。而
TCP/IP
通訊協議采用了
4
層的層級結構,每一層都呼叫它的下一層所提供的網絡來完成自己的需求。這
4
層分別為:
應用層
:應用程序間溝通的層,如簡單電子郵件傳輸(
SMTP
)、文件傳輸協議(
FTP
)、網絡遠程訪問協議(
Telnet
)等。
傳輸層
:在此層中,它提供了節點間的數據傳送服務,如傳輸控制協議(
TCP
)、用戶數據報協議(
UDP
)等,
TCP
和
UDP
給數據包加入傳輸數據並把它傳輸到下一層中,這一層負責傳送數據,並且確定數據已被送達並接收。
互連網絡層
:負責提供基本的數據封包傳送功能,讓每一塊數據包都能夠到達目的主機(但不檢查是否被正確接收),如網際協議(
IP
)。
網絡接口層
:對實際的網絡媒體的管理,定義如何使用實際網絡(如
Ethernet
、
Serial Line
等)來傳送數據。
Q3:請問交換機和路由器分別的實現原理是什么?分別在哪個層次上面實現的?
一般意義上說交換機是工作在數據鏈路層。但隨着科技的發展,現在有了三層交換機,三層交換機已經擴展到了網絡層。也就是說:它等於
“
數據鏈路層
+
部分網絡層
”
。交換機中傳的是幀。通過存儲轉發來實現的。
路由器是工作在網絡層。路由器中傳的是
IP
數據報。主要是選址和路由。
Q4:請問C++的類和C里面的struct有什么區別?
結構是一種將數據集合成組的方法,類是一種同時將函數和數據都集合成組的方法。結構和類在表面上的唯一區別是:類中的成員在默認情況下是私有的,而結構中的成員在默認情況下是公用的。
class foo
{
private:
int data1;
public:
void func();
};
可以寫成:
class foo
{
int data1;
public:
void func();
};
因為在類中默認的是私有的,所以關鍵字 private 就可以不寫了。
如果想用結構完成這個類所作的相同的事,就可以免去關鍵字 public ,並將公有成員放置在私有成員之前:
struct foo
{
void func();
private:
int data1;
};
class foo
{
private:
int data1;
public:
void func();
};
可以寫成:
class foo
{
int data1;
public:
void func();
};
因為在類中默認的是私有的,所以關鍵字 private 就可以不寫了。
如果想用結構完成這個類所作的相同的事,就可以免去關鍵字 public ,並將公有成員放置在私有成員之前:
struct foo
{
void func();
private:
int data1;
};
Q5:請講一講析構函數和虛函數的用法和作用?
在
JAVA
里沒有象
C++
中的
,
所謂的析構函數
,
因為當一個對象不在使用的時候
,
它會自動被垃圾回收器回收
,
所以也就用不着析構函數了
,
那個
finalize
也只有在被垃圾回收器回收
,
才會被執行
,
而且很多時候
,
垃圾回收器並不一定執行
,
所以它不能當做
C++
中的
,
所謂的析構函數使用
,
虛函數在
JAVA
里也是沒有的
,
比較象近的應該算是
abstract
。
Q6:全局變量和局部變量有什么區別?是怎么實現的?操作系統和編譯器是怎么知道的?
1
)、全局變量的作用用這個程序塊
,
而局部變量作用於當前函數
2
)、前者在內存中分配在全局數據區
,
后者分配在棧區
3
)、生命周期不同:全局變量隨主程序創建和創建,隨主程序銷毀而銷毀,局部變量在局部函數內部,甚至局部循環體等內部存在,退出就不存在
4
)、使用方式不同:通過聲明后全局變量程序的各個部分都可以用到,局部變量只能在局部使用
Q7:一些寄存器的題目,主要是尋址和內存管理等一些知識。
Q8:8086是多少位的系統?在數據總線上是怎么實現的?
8086
微處理器初次發布時,這塊
16
位芯片僅包含
29000
個晶體管,運行速度為
5
MHz。而當今基於x
86
架構的奔騰
4
處理器,已經包含
5500
萬個晶體管,運行速度提高了
600
倍以上,高達
3
.
06
GHz。
8086
是高性能的第三代微處理器,是
Intel
系列的
16
位微處理器,它是采用
HMOS
工藝制造的,內部包含約
29,000
個晶體管。
8086
有
16
根數據線和
20
根地址線,因為可用
20
位地址,所以可尋址的地址空間達
220
即
1M
字節。
8086
工作時,只要一個
5V
電源和一相時鍾,時鍾頻率為
5MHz
。后來,
Intel
公司推出的
8086-1
型微處理器時鍾頻率高達
10MHz
,
8086-2
型微處理器時鍾頻率達
8MHz
。
再分享一下我老師大神的人工智能教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智能的隊伍中來!https://blog.csdn.net/jiangjunshow