2020年4月9日 星期四

模擬面試問題

作者:王一哲
日期:2020/4/9

前言


這次幫高三的學生模擬面試,報名的13個學生大致上目標是這幾個科系:電機、電子、機械、土木,不過我是物理老師,怎麼面試的學生都是報名工學院的科系啊?還好我多少懂一些目前熱門的主題,像是 Python、AI、Arduino,再加上一些關於電學的知識,至少能問出一些東西。



必備的問題


自我介紹、申請動機、讀書計畫,這三項是一定要準備的,有些學生會在自我介紹時就接著說明申請動機和讀書計畫,只要教授想聽就繼續講下去。

另一個必備的問題是關於科系的課程,要先仔細研究過這個科系的課程網頁,至少要知道系必修、系選修有什麼課程,科系是否有分組,要如何增加自己的專業能力,這樣連接到未來展望才會有說服力。



從備審資料中找問題


有些學生為了推銷自己,在備審資料中特別強調自己過去修過與科系相關的課程,或是做過與科系相關的作品,這樣應該能引起教授的興趣,但是教授有興趣就會想知道更多訊息,如果教授進一步追問時要能回答才行。簡單地說,敢寫進備審資料就要能回答。以下是這次模擬面試,學生的備審資料中讓我特別想問的主題。



科展作品


有些學生在備審資料中強調他參加過科展,我會請他介紹自己的科展作品,再問他從科展中學到什麼。如果他的科展作品與申請的科系差異較大,例如作品偏化學但申請機械系,我會再問他做科展的經驗如何幫助他學習這個科系的課業。



Python


有些學生宣稱他為了大學科系的需求,已經花了一段時間自學 Python,剛好我也會寫一些簡單的 Python 程式,於是就給他以下這行程式碼,問他如果執行 print(a) 會輸出什麼。

a = [i**2 for i in range(10)]

答案是
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]



如果上一題有回答出來,就可以試試看兩層的 for 迴圈,這是印出九九乘法法的程式
for i in range(2, 10, 1):
    for j in range(2, 10, 1):
        print("{:d} * {:d} = {:d}".format(i, j, i*j), end='\t')
    print('')

輸出是
2 * 2 = 4 2 * 3 = 6 2 * 4 = 8 2 * 5 = 10 2 * 6 = 12 2 * 7 = 14 2 * 8 = 16 2 * 9 = 18 
3 * 2 = 6 3 * 3 = 9 3 * 4 = 12 3 * 5 = 15 3 * 6 = 18 3 * 7 = 21 3 * 8 = 24 3 * 9 = 27 
4 * 2 = 8 4 * 3 = 12 4 * 4 = 16 4 * 5 = 20 4 * 6 = 24 4 * 7 = 28 4 * 8 = 32 4 * 9 = 36 
5 * 2 = 10 5 * 3 = 15 5 * 4 = 20 5 * 5 = 25 5 * 6 = 30 5 * 7 = 35 5 * 8 = 40 5 * 9 = 45 
6 * 2 = 12 6 * 3 = 18 6 * 4 = 24 6 * 5 = 30 6 * 6 = 36 6 * 7 = 42 6 * 8 = 48 6 * 9 = 54 
7 * 2 = 14 7 * 3 = 21 7 * 4 = 28 7 * 5 = 35 7 * 6 = 42 7 * 7 = 49 7 * 8 = 56 7 * 9 = 63 
8 * 2 = 16 8 * 3 = 24 8 * 4 = 32 8 * 5 = 40 8 * 6 = 48 8 * 7 = 56 8 * 8 = 64 8 * 9 = 72 
9 * 2 = 18 9 * 3 = 27 9 * 4 = 36 9 * 5 = 45 9 * 6 = 54 9 * 7 = 63 9 * 8 = 72 9 * 9 = 81



如果這樣還能回答出來,那就再問一個經典的費氏數列 (Fibonacci sequence)

$$0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, \dots$$

表達式為

$$F_0 = 0$$
$$F_1 = 1$$
$$F_n = F_{n-1} + F_{n-2}$$

這是不使用遞迴的寫法
def fib(n):
    a = []
    for i in range(n+1):
        if i == 0:
            a.append(0)
        elif i == 1:
            a.append(1)
        else:
            a.append(a[i-1] + a[i-2])
    return a[-1]

print(fib(10))

這是使用遞迴的寫法
def fib(a):
    if a == 0:
        return 0
    if a == 1:
        return 1
    return fib(a-1) + fib(a-2)

print(fib(10))

如果連使用遞迴的寫法都能看懂,以高中生而言算是程度很不錯了。



Arduino


好幾個申請電子、電機科系的學生,宣稱他在高二多元選修課用 Arduino 以及一些套件製作藍芽自走車,剛好我也會寫一點點 Arduino 程式,就先來個範例程式:使 Arduino Uno 板上內建的 LED 閃爍週期為2秒

# define LED 13

void setup() {
    pinMode(LED, OUTPUT);
    Serial.begin(9600);
}

void loop() {
    digitalWrite(LED, HIGH);
    delay(1000);
    digitalWrite(LED, LOW);
    delay(1000);
}



如果可以的話再多加個可變電阻,用可變電阻控制 LED 的亮度,搭配以下的電路圖。


電路圖



# define LED 5
# define POT A0

int val = 0 ;
int voltage = 0;

void setup() {
    pinMode(LED, OUTPUT);
    pinMode(POT, INPUT);
    Serial.begin(9600);
}

void loop() {
    val = analogRead(POT);
    voltage = map(val, 0, 1023, 0, 255);
    analogWrite(LED, voltage);
    Serial.print("val = ");
    Serial.print(val);
    Serial.print(";   voltage = ");
    Serial.println(voltage);
}



如果學生真的有自己寫過 Arduino 程式碼,應該能夠看懂以上的程式用途才對。



英文面試


有的學生會申請與國外大學合作的雙學位學程,需要用英文面試。首先是用英文自我介紹,說明申請動機及讀書計畫。如果是電機系的學生,我可能會請他念以下這段文字,然後再請他解釋這是什麼物理定律。

The induced electromotive force in any closed circuit is equal to the rate of change of the magnetic flux enclosed by the circuit.

答案是法拉第電磁感應定律 (Faraday's law of induction)。也有可能用英文問一些電磁學或電子學相關的名詞。



結語


由於我不是教授,只能依照我對教授的印象,猜測教授可能會如何面試。如果想要對學生更有幫助,還是需要請教授來模擬面試會更好。

沒有留言:

張貼留言