1. 程式人生 > >筆試錯題記錄1

筆試錯題記錄1

####選擇題 1.C++中的const。

int b = 2;
const int * a = &b;  //這種情況是表示指標所指的資料是常量,但是a這個指標可以指向其他記憶體。
int * const  c = &b; //這種情況是表示指標是常量,也就是c只能指向b,但是b這個記憶體裡面儲存的值是可以變得。

2.ARM開發整合環境 只讀的程式碼段常量被稱作RO段,是程式中的指令和常量; 可讀寫的全域性變數靜態變數稱為RW段,是程式中已初始化變數; RW段中要被初始化為0的變數稱為ZI段,是程式中未初始化變數。 則不同程序載入同一個動態庫的時候,不能共享的部分是RW和ZI。因為只有只讀程式碼和常量是可以分享的。

3.同一個程序不同的執行緒,不可以共享的是。 因為執行緒共享的是程序程式碼段,程序的公共資源,程序檔案描述符,程序使用者ID等等。但是每一個執行緒都有一個執行緒ID,使用者棧和記憶體棧等等。

4.關於Java中自動裝箱的問題。 Byte a = 126; Byte b = 127; Byte c = a +b; 最後出現的情況是最後一行編譯錯誤。因為a和b進行加法運算時自動提升為Int型別,沒有辦法賦值給Byte型別。

####填空題 1.在32位系統中,void *p = malloc(100);則sizeof§=4。 因為p是一個指標型別的資料,所以無論p指向的記憶體多大,p的大小都是固定的。在32位地址下,8位一個位元組,就是4個位元組。

2.設迴圈佇列的容量為50,且頭指標front=5,尾指標rear=29,則該迴圈佇列中是共有24個數值 演算法(rear-front+size)%size

3.已知程式碼char* p=(char*)malloc(val);其中p在執行的時候獲得了一個空指標,請列舉三種可能的原因?

  1. 分配的空間太小
  2. 分配的空間被當做記憶體碎片處理
  3. val取值過大,導致分配之後會導致記憶體空間溢位

4.程序間的通訊方式

  1. pipe 也就是管道通訊
  2. socket
  3. signal 訊號處理機制
  4. memory share 記憶體共享
  5. message 訊息佇列
  6. file 檔案的讀寫

5.Android四大元件

  1. Activity 活動
  2. Service 服務
  3. Broadcast 廣播
  4. Content Provider 內容提供器

6.Java中的final

  1. final類不可以再派生出新的子類。因此一個類不可以既是abstract也是final。
  2. final變數可以保證變數在使用中不會被改變。則只能在宣告變數或構造器初始化。
  3. final函式不能被子類重寫。

7.如何定義C++類,阻止C++類物件的相互賦值(obj2=obj1)。 只要過載=的定義在private或protected下面即可,過載原型的const修飾及函式體內容無所謂。

class A{
	protected:
		A& operator = (const A&){}
}
class A{
	private:
		A& operator = (const A&){}
}

8.java中Thread.sleep()和 Object.wait() 有什麼區別? sleep是使執行緒休眠一段時間。在sleep休眠時間到期後,執行緒不一定立即恢復執行,除非系統沒有其它更高優先順序的任務正在執行。wait是執行緒間實現同步的一種機制。呼叫wait的執行緒會主動進入等待狀態,直到被其它執行緒喚醒或者等待超時

9.sprintf、strcpy、strncpy及 memcpy 函式,請問這些函式功能有什麼區別?從安全形度考慮一般應該用哪個函式複製字串?

  1. sprintf為格式化字串函式
  2. strcpy為字串複製函式
  3. strncpy也是字串複製函式,但是可以指定最大複製長度
  4. memcpy為記憶體複製函式 從安全形度應該選strncpy,不易出現越界異常

####程式設計題 約瑟夫環是一個數學應用題:已知n個人(編號1、2、…n)圍坐在一張圓桌周圍。從編號為1的人開始報數,數到m的那個人出列;他的下一個又從1開始報數,數到m的那個人又出列;依次規律重複下去,直到圓桌周圍的人全部出列。請編寫一個程式,給定n、m計算出列人員先後順序。 這道題先考慮用Java中已有的LInkedList來解決。 ArrayListLinkedList的不同點

  1. ArrayList基於動態陣列實現,它適合於隨機訪問元素,但是插入和刪除元素較慢。
  2. LinkdList基於連結串列實現,在LInkedList中間進行插入和刪除的代價較低,但是在隨機訪問方面LInkedList效能較慢。