面試題整理 -- 計算機基礎知識篇
數據結構
隊列、棧、鏈表、樹、堆、圖
棧和隊列的相同和不同之處
棧:先進后出 java.util.Stack(類)
隊列:先進先出 java.util.Queue(接口)
棧和隊列的共同點是只允許在
端點處插入和刪除元素;隊列的操作與棧的操作類似,不同的是隊列的刪除是在
表的頭部(front)進行.
棧通常采用的兩種存儲結構
一是順序棧;二是鏈式棧。棧的順序存儲結構是利用一組地址連續的存儲單元依次存儲自棧底到棧頂的數據元素,同時附設指針top指示棧頂元素的位置。由於棧的操作是線性表操作的特例,相對而言,鏈式棧的操作更易於實現。
ArrayList,Vector, LinkedList的存儲性能和特性
ArrayList和Vector都是使用數組方式存儲數據,此 數組元素數大於實際存儲的數據以便增加和插入元素,它們都允許直接按序號索引元素,但是插入元素要涉及數組元素移動等內存操作,所以索引數據快而插入數據 慢,Vector由於使用了synchronized方法(線程安全),通常性能上較ArrayList差,而LinkedList使用雙向鏈表實現存 儲,按序號索引數據需要進行前向或后向遍歷,但是插入數據時只需要記錄本項的前后項即可,所以插入速度較快。
同步性:Vector是線程安全的,也就是說是同步的,而ArrayList是線程序不安全的,不是同步的
數據增長:當需要增長時,Vector 默認增長為原來一培,而ArrayList卻是原來的一半
各種樹(平衡樹,排序樹,B樹,B+樹,R樹,多路樹,紅黑樹)
算法
實現鏈表排序的一種算法。說明為什么你會選擇用這樣的方法?
排序有哪幾種方法?
排序的方法有:
插入排序(直接插入排序、希爾排序),
交換排序(冒泡排序、快速排序),
選擇排序(直接選擇排序、堆排序),
歸並排序,
分配排序(箱排序、基數排序)
參考鏈接
各種排序的復雜度

Linux常用命令
cd,ls,grep,find,cp,mv,rm,ps,kill,file,tar,cat,tail
參考鏈接
參考鏈接2
計算機網絡
TCP,UDP區別
基於連接與無連接;
對系統資源的要求(TCP較多,UDP少);
UDP程序結構較簡單;
流模式與數據報模式 ;
TCP保證數據正確性,UDP可能丟包,TCP保證數據順序,UDP不保證。
TCP(Transmission Control Protocol):為典型的傳輸大量數據或需要接收數據許可的應用程序提供連接定向和可靠的通信。
UDP(User Datagram Protocol):提供無連接的通信,並不保證數據包被發送到。典型的即時傳輸少量數據的應用程序使用UDP。應該說可靠的發送是應用程序的責任。

HTTP請求和響應的全過程
HTTP是一個應用層的協議,在這個層的協議,是一種網絡交互需要遵守的一種協議規范。
連接:當輸入一個請求時,首先建立一個socket連接,因為socket是通過ip和端口建立的,所以,之前則還有一個DNS解析過程。如把www.baidu.com變成一個ip,如果url不包含端口號,則會使用該協議的默認端口號,HTTP協議的默認端口號為80。
請求:連接成功后,開始向web服務器發送請求,這個請求一般是GET或POST請求。
應答:web服務器收到這個請求,進行處理。web服務器會把文件內容傳送給響應的web瀏覽器。 包括:HTTP頭信息,體信息。
關閉連接:當應答結束后,web瀏覽器與web服務器必須斷開,以保證其它web瀏覽器能夠與web服務器建立連接
osi七層模型以及tcp/ip四層模型(每一層主要功能,傳輸的內容,主要協議,主要應用)

◇ 網絡接口層:在模型的最底層是網絡接口層。本層負責將幀放入線路或從線路中取下幀。
◇ Internet層:Internet協議將數據包封裝成Internet數據包並運行必要的路由算法。
◇ 傳輸層:傳輸協議在計算機之間提供通信會話。數據投遞要求的方法決定了傳輸協議。
◇ 應用層:在模型的頂部是應用層。本層是應用程序進入網絡的通道。在應用層有許多TCP/IP工具和服務,如:FTP、Telnet、SNMP、DNS等等。該層為網絡應用程序提供了兩個接口:Windows Sockets和NetBIOS。
TCP協議采用滑動窗口的方式控制數據流的傳輸,用三次握手了解對方情況。