投了聯發科實習,面試軟韌的經驗

交通

4.13

我是從交大搭 uber 去,花了 191 (- 40 優惠碼) 元,從那裡回來則是騎 ubike,地圖秀快 20 分鐘能到,但我沒走過,邊找邊迷路也花了 40 分鐘吧,好累。

由於大概早了 30 分鐘到,進入大樓換證後我先在大廳的沙發等待,複習一下之後可能會考的內容,在約定時間大概 10 分鐘前有人帶我進去。

筆試

筆試部分覺得沒有考得很好 (雖然說是筆試,但都是用電腦啦 XD)

有印象的考了

  • 基本的 bit operation (大概是誰 & 誰等於多少,但沒有這麼直接,搭配了一些 if-else)

  • 簡單的遞迴,trace 幾層而已

  • union 的概念 (union {int a[2]; char c[8];}; a[0] 放 3406,問你 c[0] 會 cout 出什麼)

更新:自己跑了一下,結果是印出 N

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
#include <iostream>

union data{
    int a[2];
    char c[8];
};

int main(int argc, char const *argv[])
{
    union data d;

    d.a[0] = 3406;

    std::cout << d.c[0] << std::endl;

    return 0;
}

3406 = 0xD4E

  • var += bar(++var); … 如果是加號兩邊的話,我知道是沒有規定先後順序的,(i++) + (i++) 之類的是 undefined behaviour, += 我就不確定了

更新:這樣的程式會噴 Warning

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
#include <stdio.h>

int i = 0;

int a(int x) {
    printf("in a(): %d\n", i);
    return i;
}


int main(int argc, char const *argv[])
{
    i += a(i++);

    printf("in main: %d\n", i);

    return 0;
}
1
2
test.c:13:13: warning: unsequenced modification and access to 'i' [-Wunsequenced]
    i += a(i++);
  • include guard: ifdef, idndef, elif, undef,在電腦上 trace 這種沒有縮排的看起來超累,不能直接標註在 code 上,題目又落落長

  • 還有指標 dereference 和 ++, +1 混合著寫。這個部分要很熟悉才行

上機

我大概花 23 分鐘在筆試,留 27 分鐘寫上機,有點趕,因為還有他那難用的環境要熟悉,不像筆試會按上/下一題、會點選擇題、會填入答案就好。

那個 termMsg 鍵詞限制不知道是什麼,感覺很厲害。

筆試 + 上機總共 50 分鐘,如何分配是自己決定,他們建議事先寫筆試,螢幕上也有建議的分配 (忘了)。如果再讓我寫一次,我應該會再分配多一點點在上機,畢竟還有環境要熟悉。

上機他們的介面好難用,編譯也不快,平常習慣邊編譯邊改 code 的習慣在這不太適用,也沒有自動補齊變數、函數的功能,好像只有打左括號會生出右括號。

上機的第一題是輸入 n 個數字,印出當前的中位數,例如

1
2
1   2  3   4 5
1 1.5  2 2.5 3

和 LeetCode 不同的是要處理輸入、輸出的部分 (LeetCode 通常只要寫最核心的部分)。

這題我時間不夠沒寫出來 嗚嗚嗚… 明明就不算難的。

這題在 Leetcode 上類似的題目是 Hard: https://leetcode.com/problems/find-median-from-data-stream/


第二題則是不用 sizeof 但印出某個 struct 的大小,我的想法是用 pointer 的 arithmetic,解法如下。這題應該有答對 (吧)。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
#include <stdio.h>

struct Some_struct
{
    int a;
    char c[10];
};


int main(int argc, char const *argv[])
{
    struct Some_struct ss[2];

    printf("%d\n", (int)(ss+1)-(int)(ss));

    return 0;
}

面試

原本 HR 幫我準備的會議室只有 HDMI,但信件中要我帶 VGA 的,還好後來他們幫我換了一間。下次應該會要去弄一顆 HDMI 的轉接頭,不然好麻煩。

面試部分基本上大部分時間都是圍繞在我準備的投影片,稍微延伸出相關 OS、計算機組織的概念,另外還有通訊相關的問題。

專題方面有問一些基本問題

  • 你在這份專題中負責哪個部分,如何分工
  • 你覺得這個專題中最困難的部分是什麼

專題部分很多地方感覺要再熟悉一些,講得仔細一點。

由於我有放修過的相關課程,所以也有問這些課程中最有心得的是哪一門。

第一次正式的面試,還很多東西要學RRRRR,加油!!

有點意外有上,畢竟我在通訊領域修的課比較少一點。因為我也還沒面其他間,既然上了就去吧,都是去體驗看看的,雖然有點擔心自己在相關背景知識的不足 QQ

聯發科暑期實習的話好像就只有一次面試,沒有二面、三面,所以流程上滿快的。

之前看到一個說法是,如果面試都上了還在懷疑自己的能力有點看不起面試官。面試後他們決定發 offer 就代表有通過他們的標準,如果有些部分比較弱,那就可能代表其他地方特別突出,或者看中的是潛力和其他人格特質。

暑期就在聯發科實習啦,請多指教聯發科 XD

^^^^^^^^^^^^^^^^ 預留結果的區域 XDD