創新工場2023年校園招聘筆試題

2021-06-07 14:42:33 字數 3530 閱讀 4913

1、#include

union

a;

void main()

執行結果:266

3、路由器與交換機的區別:

4、程序與執行緒的差別

a、作業系統只排程程序,不排程執行緒

b、執行緒共享記憶體位址空間,程序不共享

c、執行緒間可以共享記憶體資料,但程序不可以

d、程序間可以通過ipc通訊,但執行緒不可以

5、下面排序演算法的時間複雜度不是nlogn的是

二分法插入排序快速排序歸併排序堆排序

6、字串匹配

void getnext(char *s,int next)

else ? }

} int kmp(char *m,char *s,int next)

else

j=next[j]; }

return -1; }

7、某工作有5道工序,某個工作不能在最後做,請問有多少種工作情況

8、記憶體中有3頁,初始為空,頁面走向為4,3,2,1,4,3,5,4,3,2,1,5,分別使用先進先出,最近最少使用,理想頁面置換演算法,請問缺頁次數是多少?

10,9,8 9,10,8 10,9,7 9,10,7

9、tcp具有但udp不具有的特點不包括:

a、對上層應用而言,收到資料報的順序與對方傳送的順序一致

b、源ip、目的ip均相同的資料報經過同樣的路由路徑

c、傳輸過程中個別資料報丟失,接收端存在檢測機制

d、傳輸資料前必須使用握手方式建立連線

10、#include

int func(int n)

void main()

執行結果:無結果

11、括號匹配的檢驗

#include

#include

#define true 1

#define false 0

#define stack_init_size 100

#define stackincrement 10

typedef int status;

typedef char selemtype;

typedef struct

sqstack;

status initstack(sqstack &s)

status push(sqstack &s,selemtype e)

*(s.top++)=e;

return true; }

status pop(sqstack &s,selemtype &e)

status cmp(selemtype a,selemtype b)

status check()

')

}if(s.top==s.base)return true;

return false; }

void main()

*****=

第一題:

#include

union

a; void main()

答案:266

解析:c語言中的聯合體(union)的概念是,聯合體中的多種資料型別共享同乙個記憶體空間。就拿你舉的例子來說: 

在聯合體a中定義了兩種資料型別,字元陣列x以及整形變數i.其中整形變數是16位的,陣列大小為2的字元陣列為8x2=16位。如此一來,編譯器便會為聯合體a在記憶體中開闢乙個16位的空間,這個空間裡儲存聯合體的資料,但是這個空間只有16位,它既是整形變數的資料,也是字元陣列的資料。如果你的程式從字元陣列的角度解析這個空間,那麼它就是兩個字元,如果你的程式從整型的角度解析這個空間,那麼它就是乙個整數。

以你的程式為例子,現在已經開闢了乙個16位的空間,然後我們假定現在空間還沒有被賦值,為:

00000000 00000000

那麼在執行完**

a.x[0] = 10;

a.x[1] = 1;

之後,16位的空間變為:

00001100 00000001

然後程式執行

printf("%d",a.i);

就是把聯合體a當成乙個整數來解析,而不是字串陣列。那麼這樣一來,程式就把這16位變成了乙個完整的整數:

(00000001 00001100)二進位制 = (266)十進位制

注意,你可以看到程式在把16位弄成整數的時候把後面八位放在了前面,前面八位放在了後面。這個反序是計算機儲存結構造成的,這個和聯合體沒有直接關係。如果感興趣的話可以參考組合語言。

就是這個道理。

第二題:

main()

half;

}number;

number.i=0x4241; /*聯合成員賦值*/

printf("%c%c/n", number.half.first, mumber.half.second);

number.half.first='a'; /*聯合中結構成員賦值*/

number.half.second='b';

printf("%x/n", number.i);

getch();

} 答案: ab

解析:

發表於:2008-03-30 15:48:12

5樓 得分:0

第二個例子同樣,

unionhalf;

}number;

定義了聯合體number,這個聯合體有兩種資料型別,整形i(16位),以及乙個結構體(struct half)(2個char,16位)。所以編譯器為這個聯合體開闢乙個16位的空間:

00000000 00000000

然後賦值:

number.i=0x4241;

這個時候,聯合體以整形的身份出現,16位的空間將被整體認為是乙個整數賦值。

注意(0x4241)(16進製制) = (01000010 01000001)二進位制。還記得剛才說的,計算機儲存的時候是反著存的嗎,先存低位,再存高位(參考組合語言),因此16位位址被賦值位

01000001 01000010

然後 printf("%c%c/n", number.half.first, mumber.half.second);

實際上是把16位空間以結構體half的角度解析,也就是兩個char.

那麼第乙個:number.half.first = (01000001)二進位制 = (65)十進位制 = a(ascii碼)

同理number.half.second = b(ascii碼)

當然後頭又給first和second賦值位"a"和"b",這樣會把16位空間弄成是:

01100001 01100010

然後用

printf("%x/n", number.i);

就是把16位看成整數,記住高地位反過來

(01100010 01100001)二進位制 =   (0x6261)16進製制

所以結果就是:0x6261.

getch();

最後記得按任意鍵結束程式。

********************===

創新工場 2014創新工場校園招聘之回文串修復

題目 所謂回文,就是正序和倒序遍歷結果一樣的字串,比如 aba abcdedcba 實現乙個方法pal 輸入乙個字串,列印出以這個字串為字首的乙個回文。比如輸入 abc pal 方法列印出 abcdcba 或 abcba 輸入 abcb 可以輸出 abcbcba 或 abcba 如果可能,輸出盡量短...

創新工場筆試題

1.輸入乙個整型無序陣列,用堆排序的方法是陣列有序 2.求乙個正整數的開方,要求不能使用庫函式sqrt,結果精度在0.01即可 3.給定乙個矩陣int matrixa m n 每行沒列都是增序的,實現乙個演算法尋找矩陣中的某個元素element 下面做出我的題解,能力有限,望見諒!第一題 堆排序 考...

創新工場筆試小記(創新工廠演算法筆試題)

筆試題量很小,答題時間1個小時。1道填空題,9道左右選擇題,最後一道程式設計題。第一題 c intf intx return c int f int x return c 對於int a 65536 1024 8 1 int b f a 執行後b等於多少?第二題 5個骰子,六個面分別標有1 6,現在...