---
# System prepended metadata

title: 2023 資訊科技產業專案設計 作業2

---

# 2023 資訊科技產業專案設計 作業2
>拍手-clap
>🧔：interviewer 
>👶：interviewee
>[模擬面試1(中文)]
>[模擬面試2(中文)]
>[模擬面試3(英文)]

## [148. Sort List](https://leetcode.com/problems/sort-list/)
### 面試過程
>[影片](https://youtu.be/YVher2oySAk)

🧔:您好我來自是XXX公司的主管，今天擔任你的面試官，等等會出一到題目當作今天面試的主題，當然面試中有問題歡迎提問，就算打斷我也沒有關西，還有甚麼其他問題嗎?

👶:很榮幸能參與貴公司的面試，也非常感謝您抽空來幫我面試，我沒有其他的問題。

🧔:OK!那我們就開始今天的面試吧!成為一個合格的工程師要努力的在deadline前生出成品，所以管理各個計畫的deadline並分清楚哪一個比較緊急就變得很重要，所以一開始會給你一個陣列，陣列裡面的index代表是哪一個工作，這邊數值代表這份工作還有幾天讓你完成，最後請你依照數值大小將工作由小排到大

👶:這邊想確認一下題目，會有一個陣列，假設是[1 8 9 6 3 4 78]，1代表工作0還有1天能完成，3代表工作4還有3天能完成，然後最後會output出[task0 task4 task5 task3 task1 task2 task6] 這樣我理解有錯嗎?

🧔:沒有錯你理解的很好，但是最後可以直接印出[0 4 5 3 1 2 6]就好，不用再加額外的字

👶:了解，那我這邊講一下我的想法，這邊會想先建一個structure來儲存index與他對應的值，然後在依照他的值對index做排列，最後就可以得出我們要的答案了。

🧔:了解你的想法了，我覺得沒甚麼問題，你可以開始實做了

![](https://hackmd.io/_uploads/H1VnxutbT.png)

![](https://hackmd.io/_uploads/Sk1BeOFW6.png)


👶:這就是我的程式碼，上半部因為依序存入index以及data所以這邊的時間複雜度是O(n)然後下半部是採用bubble sort所以時間複雜度是O( n^2 )，兩個部份加總的整體時間複雜度是O(n^2)

🧔:了解，看起來沒甚麼問題，但是保險起見可以驗證一下你的程式碼嗎?

👶:將[1 8 9 6 3 4 78]帶入中.........

🧔:OK!現在已經確認程式碼的正確性了，但是還有一個地方我覺得可以在優化一點，就是關於整體時間複雜度的部分，有沒有甚麼方法可以讓時間複雜度比O(n^2)還要小呢?

👶:如果要改善整體時間複雜度的話，那就要針對時間複雜度高的地方做優化，那就是我的排序的部分，原本是採用bubble sort如果改成merge sort或是heap sort就可以將時間複雜度控制在O(nlogn)裡

🧔:了解，這樣的確可以改善整體的時間，如果沒有其他問題，那我們今天的面試就到這邊結束了，之後一兩周內會通知你面試的結果。

👶:我沒有問題，再次感謝你抽空來幫我面試，掰掰~~

🧔:掰掰~~


----
### 看完其他人的影片在可改進地方寫了以下幾點:
#### 1.面試官與面試者缺乏互動感
#### 2.打程式時可以將螢幕放大點便於閱讀
#### 3.題目可以適當包裝
#### 4.邊打程式可以加入註解
---

### 從第一次作業學習到的地方
看到他評以及別人影片的有點
讓我更能知道面試官大概會往哪個延伸
也讓我知道可能要注意甚麼地方
像是REACTO步驟真的非常實用
之後遇到面試就知道要怎麼準備也不會哪摸緊張了

## 第四次作業-他評01
### 優點
* interviewee 邊打程式邊講解而且不會卡，很棒
* interviewee 註解很詳細
### 可改進的地方
* [3:24](https://youtu.be/YVher2oySAk?t=205) interviewer 沒有說明回傳的型態，interviewee 也假定可以回傳一個自定義的`Struct`，建議 interewee 可以先詢問一下 interewer，說不定 interewer 想要你回傳 array。 
* [5:22](https://youtu.be/YVher2oySAk?t=322) interviewee 可以詢問 interviewer `val` 是否有可能會有負數? 需不需要偵錯? 如果有需要再打 `if ((a+i)->val<0) {Printf("error"); return;}` 這段程式碼，增加互動性。
