應哥們要求特意記得,與大家共享!
原文全是英語,我按自己理解寫了一些,難免出錯,望大家見諒!
一、
1. Debug和Release build的區別,速度有差異嗎?why or why not?
一、Debug 和 Release 編譯方式的本質區別
Debug 通常稱為除錯版本,它包含除錯資訊,並且不作任何優化,便於程式設計師除錯程式。Release 稱為釋出版本,它往往是進行了各種優化,使得程式在程式碼大小和執行速度上都是最優的,以便使用者很好地使用。
二:
只有DEBUG版的程式才能設定斷點、單步執行、使用TRACE/ASSERT等除錯輸出語句。REALEASE不包含任何除錯資訊,所以體積小、執行速度快。
三
在debug的版本里會錯的,在release裡面不一定會錯誤,但是程式碼是肯定有錯的.
2. 死鎖的四個必要條件;
死鎖產生有四個必要的條件:互斥條件,不可剝奪條件,部分分配,迴圈等待
3. “assignment operator”and “copy constructor”的差異
呼叫時間不一樣,假設A同時擁有兩者,b是A的一個例項:
A a(b)與A a=b 呼叫opy constructor
A a;
a=b;
呼叫的是assignment operator
's serialization,how does it work in or Java
5. what's reflection in java
many data types can be used in swith (Java)?
7.定義 a) 含有十個元素的指標陣列;
b) 陣列指標;
c) 函式指標;
d) 指向函式的指標陣列;
ribe scope of public/private/frined/protected/protected frined
(C#)
二、
array,Bubble sort.
e current platform using big endion or little endition(高位元組還是低位元組存放)
微處理機中的`存放順序有正序(big endian)和逆序(little endian)之分。正序存放就是高位元組存放在前低位元組在後,而逆序存放就是低位元組在前高位元組在後。例如,十六進位制數為A02B,正序存放就是A02B,逆序存放就是2BA0。摩托羅拉(Motorola)公司的微處理器使用正序存放,而英特爾(Intel)公司的微處理器使用逆序。
void endian()
{
int x = 0x12345678;
char *a = (char *)&x;
cout << (*a == 0x12? "big endian":"little endian");
}
三、
1-1000放在含有1001個元素的陣列中,只有唯一的一個元素值重複,其它均只出現
一次。每個陣列元素只能訪問一次,設計一個演算法,將它找出來;不用輔助儲存空
間,能否設計一個演算法實現?(今天唯一的收穫就是做出了這個題)
將1001個元素相加減去1,2,3,……1000數列的和,得到的差即為重複的元素。
int Find(int * a)
{
int i;//變數
for (i = 0 ;i<=1000;i++)
{
a[1000] += a;
}
a[1000] -= (i*(i-1))/2 //i的值為1001
return a[1000];
}
利用下標與單元中所儲存的內容之間的特殊關係,進行遍歷訪問單元,一旦訪問過的單
元賦予一個標記,利用標記作為發現重複數字的關鍵。程式碼如下:
void FindRepeat(int array[], int length)
{
int index=array[length-1]-1;
while ( true )
{
if ( array[index]<0 )
break;
array[index]*=-1;
index=array[index]*(-1)-1;
}
cout<<"The repeat number is "<
此種方法不非常的不錯,而且它具有可擴充套件性。在罈子上有人提出:
對於一個既定的自然數 N ,有一個 N + M 個元素的陣列,其中存放了小於等於 N 的所有
自然數,求重複出現的自然數序列{X} 。
對於這個擴充套件需要,自己在A_B_C_ABC(黃瓜兒才起蒂蒂)的演算法的基礎上得到了自己的演算法
程式碼:
按照A_B_C_ABC(黃瓜兒才起蒂蒂)的演算法,易經標記過的單元在後面一定不會再訪問到,除非它是重複的數字,也就是說只要每次將重複數字中的一個改為靠近N+M的自然數,讓遍歷能訪問到陣列後面的單元,就能將整個陣列遍歷完。
程式碼:
*/
void FindRepeat(int array[], int length, int num)
{
int index=array[length-1]-1;
cout<<"The repeat number is ";
while ( true )
{
if ( array[index]<0 )
{
num--;
array[index]=length-num;
cout<
if ( num==0 )
{
cout<
}
array[index]*=-1;
index=array[index]*(-1)-1;
}
}
群碩筆試歸來
題目:
一概念
1.過程化程式設計和物件導向程式設計的區別
面向過程就是分析出解決問題所需要的步驟,然後用函式把這些步驟一步一步實現,使用的時候一個一個依次呼叫就可以了。
物件導向是把構成問題事務分解成各個物件,建立物件的目的不是為了完成一個步驟,而是為了描敘某個事物在整個解決問題的步驟中的行為
2.(a-1)xora==0和條件
age Collection
中 equals() 和== 的區別
5.C++中類的定義 :函式重載出錯
6.資料庫理論中的資料完整性
mic(?) wed programming 中 redirect 和forward
8.雙向連結串列的插入
二演算法
字串倒置
eg. this is a string =>gnirts a si siht
三logic thinking
四個女人過橋,夜間有一火把,每次最多過兩個,必需帶火把,
過橋速度不一樣
no.1 1min
no.2 2min
no.3 5min
no.4 10min
兩個人過用最慢一個的速度,火把不能扔
如何在17min內四個女人都過橋