面試問答
第一題:code smell(題目是憑印象回憶的)
一共三題:
1.
...
HR 會寄信給你一個連結,在期限內自行完成即可。
面試一共有四個階段:
第一個階段:找出程式碼寫的怪怪的地方
第二個階段:英打,會有練習
第三個階段:類似leetcode,簡單的資料結構
第四個階段:演算法
以上這些都在線上平台進行,過程會錄影。
不過我因為操作不熟悉,沒有注意到第一個階段有時間限制,還有做到第三題的時候不知道是不是沒有主動按 Finish 所以沒有做到第四題。
面試問答
第一題:code smell(題目是憑印象回憶的)
一共三題:
1.
class Switch {
private Lamp lamp = new Lamp();
public SwitchOn () {
this.lamp.TurnOn();
}
public SwitchOff () {
this.lamp.TurnOff();
}
}
class Lamp {
public TurnOn() {...}
public TurnOff(){...}
}
2.
class Car extends AirPlane {
@Override
public Fly () {
throw NotImplementError("Cars cannot fly");
}
}
3.
Time time = GetTimeZone.Now;
if(time < 12) {
Console.WriteLine("Good Morning");
} else if (time > 12) {
Console.WriteLine("Good Afternoon");
}
第二題:英打
就是英打,是一個一個的單字,不是文章,有提供練習。
第三題:資料結構(用AI回憶的)
問題描述
有一系列字串輸入:ENqueue(入列)數字和 dequeue(出列)
給定一個 target 數字
要求:計算在 target 前面還有多少個數字
解題思路
因為佇列是 FIFO(First In First Out) 結構:
依序處理所有操作,維護一個佇列
當遇到 ENqueue 時,將數字加入佇列尾端
當遇到 dequeue 時,從佇列前端移除數字
最後找到 target 在佇列中的位置,它前面有多少個數字就是答案
範例
假設輸入如下:
ENqueue5
ENqueue3
dequeue
ENqueue7
target = 7
執行過程:
ENqueue 5 → 佇列:[5]
ENqueue 3 → 佇列:[5, 3]
dequeue → 佇列:[3](移除 5)
ENqueue 7 → 佇列:[3, 7]
target = 7,前面有 1 個數字(就是 3)
答案:1
面試建議
要注意時間限制
第三題跟第四題可能是共用時間(我不確定)
第三題完成可能要主動按finish,不然可能直接結束
第三題可以用變數去存結果,也不用真的去寫一個 queue。
目前看起來應該是涼涼了,感覺內容沒到很難,可以多把握,不過這家好像是波菜。