# 2023 資訊科技產業專案設計 作業2 >拍手-clap >🧔:interviewer >👶:interviewee >[模擬面試1(中文)] >[模擬面試2(中文)] >[模擬面試3(英文)] ## [148. Sort List](https://leetcode.com/problems/sort-list/) ### 面試過程 >[影片](https://youtu.be/w5R0EwNkeaw) 🧔:您好我來自是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步驟真的非常實用 之後遇到面試就知道要怎麼準備也不會哪摸緊張了