Company Ghost Story 公司鬼故事 16

contents

  1. 1. 新人面談
  2. 2. 研究報告
  3. 3. 基礎學問
  4. 4. 雜湊

新人面談

找人來面試,如果像某些公司只有聊天,恐怕會忽略下面的狀況。

根據碩士研究的主題進行用人判定

  • 研究 GPU 的人不懂圖像渲染模型
  • 研究資安的人不懂 AES
  • 研究編碼壓縮的人不懂進制轉換
  • 研究機器學習的人不懂線性變換

不排除公司薪水福利差。即便是台清交成的學生,也只能找來有限度的研究能力人才。

研究報告

  • 報告描述沒有單位
    • 記憶體單位是什麼?MB?GB?
    • 時間單位是什麼?秒?毫秒?
  • 比較結果沒有參考對象
    • 相較於哪一個版本的?版本號是多少?
    • 使用哪一個環境的?32 位元?64 位元?
  • 文章標題沒有結構性 H1, H2, H3, …
  • 先描述結果,但定義放最後面。
  • 實驗組合結果,項目描述只有數據單位。

不排除公司薪水福利差。即便是台清交成的學生,論文可能都是教授親自寫的、實驗教授做的。

基礎學問

1
2
// pow(2, x) = y
Given y, find a upper integer x, satisfy pow(2, x) <= y.

拿到兩個自然對數的實作 (log(y)/log(2))。滿心好奇卻得到一個說法「浮點數除法沒有誤差」。那多問一句「取自然對數沒有誤差嗎?」我內心浮上答案驗證了事實「沒有」這個要牽扯說學校沒教嗎?某方面來說,道理過不去。

雜湊

雜湊任何操作都是常數 $\mathcal{O}(1)$

  1. 知道什麼是攤銷複雜度嗎?$\text{amortized} \; \mathcal{O}(1)$
  2. 拿到第一個元素是 $\mathcal{O}(1)$
1
2
3
4
HashSet<Integer> hash = new HashSet<>(input);
while (!hash.isEmpty()) {
hash.remove(hash.iterator().next());
}

這都不好說。實作方式千奇百種,上述看起來簡單,在 Java 裡面卻是 $\mathcal{O}(n^2)$