---
# System prepended metadata

title: 技術問題集

---

技術問題集
===

## Misc
1. 為什麼要 code review，你 code review 會看甚麼? 
2. 盡可能詳述 dynamic librady 的載入過程
3. Dockerfile ADD 與 COPY
4. 說說你遇過的 Compiler bug
5. 說明一下南北橋，還有你所知道的中斷處理

## Linux
1. 說明 cp -a 跟 cp -r 的差別
2. 說明安裝 Linux 作業系統步驟
3. 怎麼做一個開機自動啟動，並且以事件驅動的服務?
4. 怎麼用 shell script 寫一個部落格
5. 在 Ubuntu 不重裝系統情況下，改成 Debian?
6. 在 Ubuntu 不重裝系統情況下，改成 RHEL?

## Backend
1. 盡可能詳述送一筆 Google 搜尋，中間發生的全過程

## Frontend
1. 在連上 server 後，你拿到的第一筆回應時，瀏覽器會做甚麼事?
2. 拿到一份完整的 HTML 檔案後，瀏覽器如何把物件算繪到該顯示的地方?

## Language
1. 怎麼透過 C++(或其他原本不支援 serialize 的語言) 實作序列化?
2. 解釋一下 ABI 與 API
3. 說明你對各個語言(比如 Python, C++, Golang, JS...)對於字串記憶體操作方式的理解

## C++
1. 如何相容舊版 ABI
2. 解釋一下 xvalue
3. ++a\-\-
4. i = i++ + j
5. 遇過 std::filesystem::exist(std::filesystem::path) 會 throw exception 嗎
6. 假設我有一個 virtual function 我要怎麼知道他距離 vtable 的 offest 有多少?
7. std::filesystem::temp_directory_path() 取得的路徑，跨作業系統實現方式
8. 請解釋

```cpp
template <class T, class U>
class Conversion
{
   typedef char Small;
   class Big { char dummy[2]; };
   static Small Test(U);
   static Big Test(...);
   static T MakeT();
public:
enum { exists = sizeof(Test(MakeT())) == sizeof(Small) };
};
int main() {
   using namespace std;
   Conversion<double, int>::exists;
}
```
9. 如果有一張定長的表，先進先出，但是要有 append 跟 read 功能（注意定長）使用 STL 實做
10. [indirect callback](https://hackmd.io/@25077667/B1qvCQLNn)
11. 解釋一下 new operator with type

## Git
1. 說明 git tag 跟 git branch 的差別
2. Git 有哪一些指令會碰觸到 remote server

