Lunski's Clutter

This is a place to put my clutters, no matter you like it or not, welcome here.

0%

面試計畫

知道越多就越有發展性

  1. 蒐集: 重點知識
  2. 理解: 讀懂問題
  3. 歸納: 組織解法
  4. 演繹: 寫虛擬碼
  5. 實做: 轉為程式
  6. 完善: 修正解題

這趟旅程從鐵人賽開始,從比賽過程熟悉python跟機器學習,也養出看書興趣,始於我在公司借的最後一本書心流,累了就去健身,現在是衝刺的時候了。

O

通過面試

KRs

前置作業:(100%)

Note

Problem Solving Steps

  1. 所寫語言與職缺,面試官相關
  2. 釐清問題 Edge case,scale大小,自己的假設 0-5min
  3. 大聲說出基礎想法,為什麼解法可行 5-10min
  4. 分析TC, SC Bug優化, 10-15min
  5. 邊寫程式邊說出思路,一開始寫optimal,想不到再暴力 45min
  6. 用例子邊說邊測試優化 35-50 min
  7. 面試官提問 50 min-1 hr

題型回顧: (2022/9: 100%)

結構

List: 特定順序加入

ArrayList
適合
Random Access: Quick Sort TC:O(nlogn), SC:O(n)
Add, Get:O(1)

不適合
Append, Delete: Merge Sort
Add(index, element), remove, indexof, contains: O(n)

LinkedList (Circular Detection)
適合
Merge Sort TC:O(nlogn), SC:O(n)
Add: O(1), Append, Delete O(1)

不適合
Random Access: Quick Sort O(nˆ2 logn),Quick sort nlogn基礎上再random access找刪除元素,所以要再乘以n
Add(index, element), remove, contains: O(n)

小資料
Bubble sort[不斷交換]:小scale容易達到Best O(n)
Average:O(nˆ2)
Space: O(1)

Inserting sort[取第一筆當排好,後面不斷插入適當位置]: 大部分排好容易達到Best O(n)
Average:O(nˆ2)
Space: O(1)

Traverse

Stack, Queue 類似串列 都不適合 Random Access pop(idx),任意刪data O(n)

Stack, DFS, FILO
適合 Function call,Sequential access
push, pop, peek: O(1)
List: O(V+E)
Matrix: O(V^2)

Queue, BFS, FIFO
適合 Tree level traverse: Pop O(1)
List: O(V+E)
Matrix: O(V^2)

Priority Queue
streaming 頻繁push,pop O(logn)
適合 Get, Min, Max O(1)
不適合 Random Access,Delete

Tree

Binary tree
不能假設左子比右子小

Binary search tree
左子比右子小
Search, Insert
Tc:
Best: O(1) avg: O(logn) wst:O(n)
Sc: O(n)

Delete
Tc:
Best: O(n) avg: O(logn) wst:O(n)
Sc: O(n)

Balance tree
左右子同深度 access: O(logn)
適合 Append,Search
不適合 Delete,Copy,Change Order,In-place sorting

Trie
適合 Auto-completion O(logn)
不適合 Delete,Copy
BFS, DFS,各有利弊 Tree 很深DFS可能Stack overflow,可以假定深度D,比較方便討論複雜度

Map

HashMap
可以為之後要處理的做preprocessing, reduce time complexity
適合 無順序
Put, Get,Remove, ContainsKey: O(1),良好hash function下

TreeMap
適合 有順序
Put, Get, Remove, ContainsKey: 樹狀結構 O(logn)
Implement紅黑樹
紅黑樹是self-balancing binary search tree

Set:元素不重複

HashSet
適合 無順序
Add, Remove, Contains: O(1) ,因為底層是HashMap

TreeSet
適合 有順序
Add, Remove, Contains: O(logn) ,因為底層是TreeMap

演算法

Sorting

Quick Sort: Average: O(nlogn), Worse: O(nˆ2), SC:O(n)

Merge Sort: Average: O(nlogn), Worse: O(nlogn), SC:O(n)

Searching

二元搜尋 : 每次步驟砍半: O(logn)

動態規劃

小問題升至大問題
一維決策樹
二維轉移矩陣
0/1背包
多重背包

Multithreading

Deadlock, busy wating…
List的CopyOnWriteArrayList是thread-safe
Get: O(1)
Add, remove, contains: O(n)

Mock Interview (80%)

Behavioral
任何經驗都有可取之處,所以要保持正向
依職位可能不會談到領導力,但還是要知道

  • System Design
    前端,後端針對自己專業回答就好,要了解Domain knowledge
    Backend: 使用者很多,可用load balancer

時程:2022/09/1-2022/10


如果你覺得這篇文章很棒,請你不吝點讚 (゚∀゚)

Welcome to my other publishing channels