美國拿第二個CS碩士or台灣碩士硬上 - 面試

Delia avatar
By Delia
at 2012-12-12T00:53

Table of Contents

我只是想來解謎的XD
: 1. Sereialize and deserialize a b-tree

我第一個想到的是偷吃步做法:
b-tree存的不是指標,而是index to memory pool

unsigned char* const pool = (unsigned char*)malloc(BIG_N);
typedef struct node {
size_t left_node_idx;
size_t right_node_idx;
size_t data_idx;
size_t data_size;
} Node;
Node* const nodes = (Node*)malloc(N*sizeof(Node));

Node* node_iter = nodes;
unsigned char* pool_iter = pool;

// Assume we have input: unsigned char * input_data
// here's how we store the data into a node
Node* node_1 = node_iter++;
size_t size = sizeof(*input_data);
memcpy(pool_iter, input_data, size);
node_1->data_idx = pool_iter - pool;
node_1->data_size = size;
pool_iter += size;

由於資料都是存在pool以及nodes裡面,所以serialize很簡單,直接輸出index就行了
使用pool的好處是,可以realloc,直接擴充長度
free的時候也可以整個pool一起處理,不需要遞迴一個一個free
缺點是存取node資料時,syntax比較不方便
不過如果node資料是固定的值,例如只是一個int,那倒還好
以上使用長度不一的unsigned char是比較麻煩的case

如果不是用這種形式來存b-tree
那我想..直接輸出lisp form 最直接吧
(((1 2 3) 4 nil) 5 ((nil 7 8) 6 9))
等價於
5
/ \
4 6
/ / \
2 7 9
/ \ \
1 3 8
畢竟lisp本來就是一種很適合處理遞迴結構的語言,用這種方式輸出很自然
也很好parse: 碰到左括號就推到stack,右括號就pop...

: 2. 3 sum: find x+y+z=A in an integer array (at least O(n^2) solution)

碰到array題目,不求最速解,先從算起來不會太慢的方式來做,就是先sort
O(nlogn) 得到sort過的array
從頭開始找 x O(n)
然後從array裡找所有的y O(n^2)
最後是z,可用binary search O(n^2 logn)

要能算出O(n^2)以內的...
我會想試著用鎖定一個,另外兩個用兩個指針從前後包夾去算
但詳細算法要慢慢試才弄得出來,不是解面試題玩家很難在15分鐘內弄出來吧...

: 3. find the medium in an integer array (O(n) solution)

這題如果array內容沒先sort過,那也是玩家等級才有辦法在15分鐘內給出演算法+程式
不求最速解,那還是一樣先sort --> O(nlogn)
看奇偶直接給解n/2+1 or n/2 --> O(1)
不求玩家等級的話,這樣就是標準解了,很好想
身為面試官倒是可以看看這人對基本的程式語言操作熟不熟悉
例如呼叫c q_sort


我給的解法都蠻直觀的,也沒有達到效能的要求,可是光打完就遠不只15分鐘啦
能夠真的在15分鐘過關的,打字或線上考試的速度一定超快 = =

--

All Comments

Cara avatar
By Cara
at 2012-12-13T18:56
serialize那題,pool及nodes當然也要輸出。忘記寫
Jake avatar
By Jake
at 2012-12-14T08:47
我只想說.對方要你給O(n). 你給 O(nlogn).你在答非所問嗎
Daniel avatar
By Daniel
at 2012-12-17T23:36
你要解要馬O(n)或更快的time complexity. 不是給更慢的解.
Ivy avatar
By Ivy
at 2012-12-21T14:02
第三題用 median of medians worst case O(n)
Madame avatar
By Madame
at 2012-12-26T09:43
不過沒做過不太可能面試時想出來
Elvira avatar
By Elvira
at 2012-12-27T18:11
我其實近期也面試過不少美國公司,其實別人最想要看的,不
是你把題目背得多熟,而是你解題的過程。
Frederica avatar
By Frederica
at 2013-01-01T10:49
就算沒有達到big-O的要求,寫程式時能有一定的洗煉度,少
Genevieve avatar
By Genevieve
at 2013-01-06T03:10
bug,且能呈現一般的演算法及資料結構知識,這樣也夠好了
Poppy avatar
By Poppy
at 2013-01-10T15:45
以上是現場答題時對方想看的。一半,比沒有好...
Tom avatar
By Tom
at 2013-01-12T12:12
沒人想看背出來的答案. 但也不想看答非所問. 不然就不會
Wallis avatar
By Wallis
at 2013-01-17T11:28
告訴你time complexity 要多少. 這個是要求也是 Hint.
Andy avatar
By Andy
at 2013-01-19T11:30
面試不是要求完全答對不然零分的考試。
Jake avatar
By Jake
at 2013-01-22T12:01
科科. 你要這麼認為的話就隨你囉.. :)
Andy avatar
By Andy
at 2013-01-23T13:36
不如請樓上來分享您的經驗,畢竟小弟我也只有寥寥數次而已

美國拿第二個CS碩士or台灣碩士硬上

Yuri avatar
By Yuri
at 2012-12-11T22:24
我這個觀點在tech_job版寫出來先被轟後被同意 你自己聽聽斟酌 實力固然重要啦 第二份工作之後不看學歷只看經歷實力這種話 是用來安慰人的 就像努力 ...

申請綠卡與美國工作...誠心請教大家意見

Ina avatar
By Ina
at 2012-12-11T07:32
※ 引述《agill (Deportivo)》之銘言: : 例如更多的獨立推薦信,發表雜誌的Editor寫信證明你的研究很有價值等 EB2-NIW不用找 Editor說你的研究很有價值 因為� ...

美國拿第二個CS碩士or台灣碩士硬上

Daph Bay avatar
By Daph Bay
at 2012-12-11T06:25
※ 引述《fasthall (Xen)》之銘言: : 各位前輩好 : 我目前就讀NTHU資工所 : 因為個人因素未來打算到北美工作 : 但是我一直在思考到底有沒有必要為了到美� ...

Amazon UX Designer 面試分享

Steve avatar
By Steve
at 2012-12-11T06:24
面試公司: Amazon 面試職位: Sr. User Experience Designer 求職方法: Head Hunter 面試過程: 面試總共有四關 (3關Phone Interviews, 1關on-site Interview) 第一關 Phone ...

美國拿第二個CS碩士or台灣碩士硬上

Catherine avatar
By Catherine
at 2012-12-11T01:46
我經常的在interview人 (一個月大概最少2-3個,這幾周每周2-3個) 我的觀察 1. 名校跟GPA通常跟成度是正比 最近有interview到princeton under, Yale master程度�� ...