數碼公司筆試經驗

才智咖 人氣:6.86K

以下是由應屆畢業生筆試頻道介紹的數碼公司筆經了

數碼公司筆試經驗

1.%o。太遙遠的都忘得不行了~

C語言書真是個寶貝~%o是以八進位制形式輸出整數。%x是以十六進位制數形式輸出整數。%e以指數形式輸出實數。%g用來輸出實數,它根據數值的大小自動選擇f或e格式(選擇輸出時佔寬度較小的一種)輸出,且不輸出無意義的零。

2.程序和執行緒的區別

什麼是程序(Process):普通的解釋就是,程序是程式的一次執行;而什麼是執行緒(Thread),執行緒可以理解為程序中的執行的一段程式片段。在一個多工環境中下面的概念可以幫助我們理解兩者間的'差別:

程序間是獨立的,這表現在記憶體空間,上下文環境;執行緒執行在程序空間內。

一般來講(不使用特殊技術)程序是無法突破程序邊界存取其他程序內的儲存空間;而執行緒由於處於程序空間內,所以同一程序所產生的執行緒共享同一記憶體空間。

同一程序中的兩段程式碼不能夠同時執行,除非引入執行緒。

執行緒是屬於程序的,當程序退出時該程序所產生的執行緒都會被強制退出並清除。

執行緒佔用的資源要少於程序所佔用的資源。

程序和執行緒都可以有優先順序。

在執行緒系統中程序也是一個執行緒。可以將程序理解為一個程式的第一個執行緒。

說法一:程序是具有一定獨立功能的程式關於某個資料集合上的一次執行活動,程序是系統進行資源分配和排程的一個獨立單位.

執行緒是程序的一個實體,是CPU排程和分派的基本單位,它是比程序更小的能獨立執行的基本單位.執行緒自己基本上不擁有系統資源,只擁有一點在執行中必不可少的資源(如程式計數器,一組暫存器和棧),但是它可與同屬一個程序的其他的執行緒共享程序所擁有的全部資源.

 從邏輯角度來看,多執行緒的意義在於一個應用程式中,有多個執行部分可以同時執行。但作業系統並沒有將多個執行緒看做多個獨立的應用,來實現程序的排程和管理以及資源分配。這就是程序和執行緒的重要區別。

程序(Process)是最初定義在Unix等多使用者、多工作業系統環境下用於表示應用程式在記憶體環境中基本執行單元的概念。以Unix作業系統為例,程序是Unix作業系統環境中的基本成分、是系統資源分配的基本單位。Unix作業系統中完成的幾乎所有使用者管理和資源分配等工作都是通過作業系統對應用程式程序的控制來實現的。

Java語言中定義的執行緒(Thread)同樣包括一個記憶體入口點地址、一個出口點地址以及能夠順序執行的程式碼序列。但是程序與執行緒的重要區別在於執行緒不能夠單獨執行,它必須執行在處於活動狀態的應用程式程序中,因此可以定義執行緒是程式內部的具有併發性的順序程式碼流。

Unix作業系統和Microsoft Windows作業系統支援多使用者、多程序的併發執行,而Java語言支援應用程式程序內部的多個執行執行緒的併發執行。多執行緒的意義在於一個應用程式的多個邏輯單元可以併發地執行。但是多執行緒並不意味著多個使用者程序在執行,作業系統也不把每個執行緒作為獨立的程序來分配獨立的系統資源。程序可以建立其子程序,子程序與父程序擁有不同的可執行程式碼和資料記憶體空間。而在用於代表應用程式的程序中多個執行緒共享資料記憶體空間,但保持每個執行緒擁有獨立的執行堆疊和程式執行上下文(Context)。

基於上述區別,執行緒也可以稱為輕型程序 (Light Weight Process,LWP)。不同執行緒間允許任務協作和資料交換,使得在計算機系統資源消耗等方面非常廉價。