添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
1. [軟體工程師求職 (1)履歷撰寫](https://www.ptt.cc/bbs/Tech_Job/M.1485621882.A.714.html) 2. [軟體工程師求職 (2)公告於市](https://www.ptt.cc/bbs/Tech_Job/M.1485622180.A.C4B.html) 3. [軟體工程師求職 (3)面試準備](https://www.ptt.cc/bbs/Tech_Job/M.1485622697.A.337.html) 4. [軟體工程師求職 (4)面試工具篇](https://www.ptt.cc/bbs/Tech_Job/M.1506226845.A.685.html) 5. [分享技術部落格: 酷殼](https://www.ptt.cc/bbs/Tech_Job/M.1485709329.A.A46.html) 6. [中年找工作心得](https://www.ptt.cc/bbs/Tech_Job/M.1524879194.A.7AA.html) 7. [軟體職缺準備心得](https://www.ptt.cc/bbs/Soft_Job/M.1657873542.A.6AB.html) 8. [ptt salary 轉職面試心得 - 歐美、中國、台灣工作](https://www.ptt.cc/bbs/Salary/M.1501726432.A.4C3.html) ### 刷code心得 1. [LeetCode高效刷題心得分享](https://www.ptt.cc/bbs/Soft_Job/M.1602732913.A.BD9.html) 2. [COVID期間拿到Google FB 微軟 Offer Part3](https://www.ptt.cc/bbs/Soft_Job/M.1605589986.A.CBA.html) 3. [面試分享 Google/MS/Amazon/Roku](https://www.ptt.cc/bbs/Soft_Job/M.1628870944.A.C3B.html) 4. [Google TW SWE 面試心得(上)](https://www.ptt.cc/bbs/Soft_Job/M.1625756279.A.914.html) 5. [Google TW SWE 面試心得(下)](https://www.ptt.cc/bbs/Soft_Job/M.1625903945.A.52F.html) 6. [0到100的軟體工程師面試之路](https://ithelp.ithome.com.tw/users/20152262/ironman/5615) 7. [程式語言面試考題集錦](https://softnshare.wordpress.com/2016/02/21/%E7%A8%8B%E5%BC%8F%E8%AA%9E%E8%A8%80%E9%9D%A2%E8%A9%A6%E8%80%83%E9%A1%8C%E9%9B%86%E9%8C%A6/) ### 薪資比較 1. [薪資透明化](https://www.ptt.cc/bbs/Soft_Job/M.1628006709.A.6E5.html) 2. [levels.fyi](https://www.levels.fyi/Salaries/Software-Engineer/Taiwan/) ### 推薦題庫 1. [Blind Curated 75](https://leetcode.com/list/xoqag3yj/), [(我的整理)](/B5OJc3twTAOJg6yEysmOoA) 2. [Leetcode 题解](http://www.cyc2018.xyz/%E7%AE%97%E6%B3%95/Leetcode%20%E9%A2%98%E8%A7%A3/Leetcode%20%E9%A2%98%E8%A7%A3%20-%20%E7%9B%AE%E5%BD%95.html#%E5%89%8D%E8%A8%80) 3. [花花酱 LeetCode Problem List 题目列表](https://zxi.mytechroad.com/blog/leetcode-problem-categories/) 4. [Leetcode 101](https://github.com/changgyhub/leetcode_101/) 5. [NeetCode 150](https://neetcode.io/) 6. [Grind 75 questions](https://www.techinterviewhandbook.org/grind75) ### 解題網站 1. [Grandyang](https://www.cnblogs.com/grandyang/) 2. [花花酱](https://zxi.mytechroad.com/blog/) 3. [wisdompeak](https://github.com/wisdompeak/LeetCode) ### 教學網站 1. [LABULADONG 的算法网站](https://labuladong.github.io/algo/) 2. [LEARN C++](https://www.learncpp.com/) ### 面試時的反問 1. [面試時的反問](https://github.com/NeroCube/reverse-interview-zh-tw) ### 資訊科技產業專案設計(2021年秋季) 1. [課程進度表和公告](https://hackmd.io/@sysprog/info2021/https%3A%2F%2Fhackmd.io%2F%40sysprog%2FSJ3QpJJNY) 2. [作業1](https://hackmd.io/@sysprog/info2021-homework1) + Repeat: 重複提問,確認自己理解原本的要求 + Examples: 針對題目條件,舉出符合的案例,不限於特例 + Approach: 說明自己打算採用的方案 + Code: 撰寫程式 + Test: 若不能實際測試,那說明驗證程式的方案 ### [Google Tech Dev Guide](https://techdevguide.withgoogle.com/) ### 超牢記憶法Make It Stick 1. 努力回想才是記憶的關鍵(retrieve檢索) + 奮力回想(從題目到解答自己做一次) + 不要重複翻閱(不要只看code不動手做,試著回想解答的流程) 2. 穿插式練習(同時練習好幾種類型的題目) + 將練習當成比賽,才能把比賽當成是練習。 3. 每天回想學習過的東西,不能拿出筆記來參考 5. 費曼學習法(把學過的東西給12歲小孩聽得懂,看見事物的原始結構) 6. 找一個好的教練(簡答題考試) + 當一個在某個領域越不擅長時,就越容易高估自己的能力。 + 花幾分鐘為幾天後自己出一張考卷(周末把一個禮拜的每日精選做一次) + 考試的時機點,在大腦開始遺忘,但還沒完全遺忘之前。(隔天)(每天選一題隔天再做一次) {%youtube k-MOeKIkvfs %} + 演算法 + [Recursive](/231S57V1QcmoVFfMr2c5_A) 把問題切成相同的小題目。 + [Tree Traversal](/k_fIImRKQlSvwXp-OUMS9A) 分為pre-order, in-order,post-order和level-order,可以使用DFS或BFS. + [Depth-First-Search/Breadth-First-Search](/Rs3M7lf1TzOR0Lx_RhgpNg) 依深度或是廣度瀏覽所有的資料 + [Dynamic Programming](/474VEENxSVSGMRRRtfvetQ) 通常是求maximal或是minimal或是幾種方法的時候會用到。 + [Divide and Conquer](/KRNZe1ZKRIu79PJDR1KPLg) 將題目分成一樣的小題目,最後將結果合併起來。 + [Binary Search](/u7dufNJ-SAq7z0WmS-Semw) 在排序過的資料中,尋找目標值。用二分法找效率為O(logN)。 + [Two Pointers](/gg-708HfRomJ66P7XX_QKQ) 通常為array中,使用前後兩個pointer來比較資料。 + [Fast Slow Pointers](/jO2mrGfpSiyZ_WlZIG7Aeg) 在linked-list中使用快慢pointer來解決問題。 + [Combination](/BRtCz4qGR-y4XevyNbchzg) 在所有的組合中,找出最佳的答案。 + [Sliding Window](/6lto0AbFTjCDxw7ohUkd3Q) 需要找出連續資料的關聯性。ex. substring, subarray. + [Backtracking](/h4ghhABcT9yyDC0JcSPRPw) + Sort algorithm + [Selection/Bubble/Insertion/Heap sort](/qxzTY7A4Sha_jFHpGJx5Wg) + [Bucket Sort](/K5s3M6TkS0q2HrRpCBpnnQ) 把數字分成一個一個的區段,ex: [0] : 0~9, [1] : 10~19, [2] : 20~29 + [Counting/Radix Sort](/I-kxuqAqSsiB6wlIddQpGA) + [Greedy + heap](/dqDTmv4jQMeuOOQYdzEG_Q) 如果問題是詢問max或是min,最直覺的解法就是依序把最大或是最小的數值相加,但是有時候必須刪減就是用heap提供的數值。 + [Greedy](/p9hSX0fpSQGwCUL3QF7cLA) 每次都把目前的狀態update到最有利的狀態。 + 資料結構 + [Set](/zoTq--X9Ri6RruOyCRcP1A) 只能儲存value,必把value當成key。 + [Map](/XfUiK191STCsppXWkgjbXQ) 把資料做成key-value的對應,可以快速找到key對應的value。
或是使用==客製的key==來對資料做統計。 + [stack](/7JBTdRgkQnmDaTlUacYuTA) [後進先出] 利用後進先出的特性,可以解決pair的問題或是反轉的效果。兩個stack也可以組成不同的特性。 + [Queue](/TNlZeQk_T-qqsLS7caigZQ) 先進先出,可以用在BFS。使用BFS通常可以解決最小數量的問題。 + [monotonic stack](/zEgS9fqBSzScisni9JNm_A) 一樣是stack,但是stack的內容有照一定的順序排列。遞增或遞減。找出前後比自己大或小的element。 + [Binary Search Tree(BST)](/neNmzsZsRrmYQ-RtPWbYxA) 他是一個binary tree,但是準守著左邊的node小於root, 右邊的node大於root。 + [Graph](/dIurYyg1T5ue-KlCoj9reA) 有向圖和無向圖。 + [Disjoint set/Union Find](/wU2PrLOpSZmcgiu64UYnRQ) 使用root array來紀錄每個vertex的root或是parent node + Minimal spinning tree 最小weight和,可以把全部的node連起來的tree,通常使用greedy演算法,==每次都從最小的weight開始選,如果沒在graph裡面就加進來。== + Single Source Shortest Path Algorithm + [Dijkstra](/3IcoorPnRX66_oBNZd6Inw) 類似BFS,但是使用priority_queue來取最小weight路徑。 + [Shortest Path Faster Algorithm(SPFA)](/Uy6iSrZSTHa32c_tO6Zx_w) 使用vector和queue來記錄從source到每個node的最短路徑。可用在negative weight。 + [Topological sorting]() 走訪有相依性的圖。 + [Trie](/QDEA_oTZTwOqDc35dWwOHw) 統計字串或是數字的bit + [Priority_queue](/m_6sQq4DS9u3TXsGYEcUTw) 統計最大最小值的出現。 + [Binary Index Tree(BIT)](/ogxY5ToqTT-RAZUqRhxbgw) 計算range sum可以達到 update是O(logN),getSum也是O(logN) 使用prefix sum只能達到 update是O(N), getSum是O(1) 使用array sum 只能達到 update是O(1), getSum是O(N) + [Math數學解法](/ncPyegzYSdGq1G6xCP4gPQ) 有些時候分析完題目,發現用數學解反而更精簡。 + [Randomized](/zOR7woWNRwyVGtir5Lj_4A) 選取element並且每個的機率都一樣。 + [Bit Manipulation](/3VK0v_k7TpiJwtArT1otxg) 對bit做處理。 + [加法器設計](/fxpMUrR7Sd6bt_mrzUMkYg) + [prefix sum](/Io-i2knhQvaqqXSOKn2BcA) prefix_sum[i] = sum(nums[0:i - 1]); 前i個的和,適合用來解區段sum的題目。 + [subset sum](/FbvqYdi1SsCc-R96j0jVAA) 把一個數列分成若2個subset,求出兩個subset的特殊 關係。例如sum(s1) = sum(s2) 或是 sum(s1) - sum(s2) = target等等。 + [Interval](/fiSdDPowTOywK9g9Rl_jLg) 使用[start, end)來表示一個區間。 + [Line Sweep](/kAUQzqmBQKSfB8Kw7QSk1Q) 依序掃描x或是y,來得到答案。 + [解題技巧](/4qhm9YxKSZSs76s9qi0Low) + [小技巧/code snippet](/3I17t2spT6GDLFRftfEOZA) + [關鍵字/keyword](/jrO24dggStyloQy6nO3OZw) + [C++API/STL整理](/_LIBYTzATYWdOTpEu3dV0Q) + [C++ Operator Precedence]([/gxs9HkI_QmyHpl9mq8bbJA](https://en.cppreference.com/w/cpp/language/operator_precedence)) + [Learn C++](https://www.learncpp.com/) + [名詞解釋](/WXlO8tuoS1yyD_RGmyPGyQ) + [Time/Space Complexity](/nPCWaocaSEedyO0-07plZg) ## 面試題目整理 ### 公司_職稱 - 面試題目: - 流程: - 出處:[面試](https://hackmd.io/PN-X3NwWQkOunpXIHrhC9w?both) ### 聯發科_軟韌體職缺 - 面試題目: - 選擇與填充題 1. Global 直接宣告參數不給值 跟function 裡面宣告參數不給值 直接印會印出什麼XDDDDD 2. 兩個 String還是Char陣列 分別丟同樣的字串 問如果直接 = =會有什麼樣的結果 true,false或不能編譯 3. SWAP( int*a, int*b){ temp=a; b=temp;} 問:丟10和20進去求output 覺得有點怪怪的應該都是10吧(x a) int a; // An integer b) int *a; // A pointer to an integer c) int **a; // A pointer to a pointer to an integer d) int a[10]; // An array of 10 integers e) int *a[10]; // An array of 10 pointers to integers f) int (*a)[10]; // A pointer to an array of 10 integers g) int (*a)(int); /* A pointer to a function a that takes an integer argument and returns an integer*/ h) int (*a[10])(int); /* An array of 10 pointers to functions that take an integer argument and return an integer*/ 這題型感覺算重要,有舉出一個考 5. 有考extern用法 印象有點模糊 但記得有全域跟區域還有加上extern宣告的x問會輸出哪個值 a丟20之類求output int x= 10; //global void func(int a) int x = 15; if (a>10) extern int x; cout<< x ; 6. C裡面的memory 程式段(.text)主要存放程式的機器碼, 資料段(.data)則是存放全域變數的資料, BSS 段(.bss)存放的是未初始化的全域變數, 堆積段(.heap)程式使用 malloc 進行記憶體分配時,可以分配的動態記憶空間 堆疊段(.stack)則存放「參數、函數返回點、區域變數、框架指標」等資料 有出多選題問Stack裡面放什麼資料 感覺算常考建議詳細再上網多查QQ 7. Macro的陷阱題 這題真的太精彩了看到的時候笑了出來XDDD 跟我之前去聯發科參加活動時的題目完全一樣 #define INC(x) x*=2; x+=1 for(i=0,j=1;i<5;i++) INC(j); 求j =? 答案是33 據說答對率3% XDDD - 上機考 有提供Library可以查 上機考得我覺得算簡單 第一題就SWAP不過要用bitwise void swap(int *a, int *b) *a = *a ^ *b; *b = *a ^ *b; *a = *a ^ *b; 第二題稍微難了一點點 系統會給一個陣列大小n 跟一串陣列 你要找出連續加起來最大值跟其數字 [1, 2, -1 ,3, 0, 1] 那你就要output連續最大值是3+0+1=4 跟[3,0,1] An integer array is given. The system gives you a series of integers, and please find it as a correct position in the sequence then print the corresponding value. For example: arr = [5, 8, 4, 9, 1] is given Please find the position 2 , 1, 3 , 4, 0in this array Print: 5, 4, 8 , 9 , 1 簡單來說就是sort之後query 就ok了 - 流程: 1. 筆試14題(C/C++),包含填充題跟選擇題 & 兩題上機考, 共50分鐘C語言考蠻多東西,例如 function pointer, static, global, volitile, macro, C++ template 2. 個人自我介紹(使用精美ppt做簡報),在過程中盡量把你自己負責過的專案做個簡單扼要的說明,尤其是你負責的部分,這很能提起面試官的興趣,這邊我有跟面試官討論一下平行化該怎麼做比較好,他給了我一個沒想過的答案 3. 面試官提問攻擊,你負責接下攻擊並反擊,可能包含了你剛剛報告的內容,資料結構,作業系統,計算機概論… etc.我個人被問到 dead lock, synchronization, critical section 4. 白 板 題!!!面試官看我有記錄一些LeetCode題目在github上,他就挑了兩題(1) Are two trees equal (2) Reverse LinkedList ~~(面試官: 我知道你比較熟Python,但現在你當然要用C寫)~~~ 5. 面試官說明工作內容 & 你的提問時間 - 出處:[聯發科 面試心得分享](https://jaime-lin.medium.com/%E8%81%AF%E7%99%BC%E7%A7%91-c%E8%AA%9E%E8%A8%80%E6%B8%AC%E8%A9%A6%E9%A1%8C%E7%9B%AE-7097f09add02)、[新竹聯發科軟韌一面](http://arc2453.blog.fc2.com/blog-entry-31.html) ### 聯發科_4G工具軟體工程師 - 面試題目: 1. ask: the value of v? unsigned long v1 = 0x 00001111; unsigned long v2 = 0x 00001202; unsigned long v; v = v1&(~v2); v = v | v2; 2. ask: the value of *(a+1), (*p-1)? int a[5] ={1,2,3,4,5}; int *p = (int *)(&a+1); 3. Re-write void(*(*papf)[3])(char *); typedef__________; pf(*papf)[3]; 4. Explain lvalue and rvalue. - 流程:N/A - 出處:[wubui MTK 面試心得分享](https://wubui.pixnet.net/blog/post/41242054-%5B面試%5D-聯發科技-mtk-(內含考題)) ### 群暉科技_軟體工程師 - 面試題目: 1. 講解一下 Process 及 Thread 的差別跟比較: 2. Stack 跟 Heap 的差別: 3. 請解釋一下 Virtual Function: 4. 請解釋一下 Synchronous call 跟 Asynchronous call 的差別: 5. 比較 Stack 跟 Queue 的差別 => 實作一下 Stack。 1. pointer操作、pointer/reference的差別與實作 2. 最短路徑演算法等等圖論的東西 3. 找出array中重複的數字 4. 動態擴充的stack和queue實作 5. Multi-Process / Multi-Thread之間的同步與溝通問題 6. Virtual Memory的觀念、Page Fault、LRU演算法 7. 算樹的高度、節點數量、BFS/DFS 8. Linked-List相關的題目(排序、插入等) 1.實做f(n) = 1-2+3-4...+/-n 2.實做矩陣相乘,如[3*4] * [4*2] = [3*2]的矩陣 3.給你一binary tree,求樹高、節點數 4.解釋const、static、volatile、程式在記憶體中的配置->stack與heap 1.什麼是OS 2.講解一下 Process 及 Thread 的差別跟比較 3.講解一下如何避免 Race Condition 4.講解一下什麼是 Hazard 1. 在嵌入式平台上面使用過哪些Linux tool、Debug tool、Profiling tool 2. 你說你使用過perf 效能分析工具,那它的原理是什麼,為什麼可以作到。 3. 請講一下你用過GDB的什麼功能,用來解決什麼問題。 4. 在嵌入式平台上開發跟在一般PC上開發有什麼不一樣和要注意的地方。 5. TCP/UDP差別在哪,用途?Socket程式大概怎麼寫?(三向交握那些) 6. Client和Server在做網路通訊時,recv buffer包含了什麼資訊。 7. Critical section是什麼?(之後我提到了Mutex) 8. Mutex程式大概怎麼寫?撰寫時有什麼要注意的地方? 9. Process 和 thread 差別?如果是不同process,如何保護Critical section? 10. 有沒有寫過shared memory,大概怎麼寫,寫的時候要注意什麼。 11. 原本好像要問我fork(),不過之後不知道為什麼就沒問了 12. 講講虛擬記憶體和分頁機制。 13. 現在有兩個整數集合要進行差集,怎麼寫?為什麼用這種資料結構?有沒有更快的方法?時間和空間複雜度各是多少?(我舉了array、linked list、binary search tree、hash table的實作方式) 14. 解釋對稱式和非對稱式加密,為什麼他們可以運作,如何運作。 15. 公鑰跟私鑰的差別跟用途?數位簽署的原理? 16. Linux 系統如何儲存使用者密碼。 17. 為什麼能確保加密資料不會被字典攻擊。 18. 講講SQL injection 跟XSS 攻擊。 19. 為什麼宣告並初始一個超大陣列會crash,而宣告成static就不會,他們的儲存方式有什麼差別。(之後我有講到stack、heap、global) 20 .stack 和 heap差別是什麼。 21. function在進行呼叫的時候OS會作什麼事情,組合語言大概怎麼寫。 22. 白板題:給定一個數列和一個數字,請寫出partition的程式,左邊小於此數字,右邊大於等於此數字,要確保所有特殊數列都能通過測試。 23. 白板題:順時鐘旋轉一張 NxN 的灰階圖片,不可以使用額外的二維陣列。 - 流程:N/A - 出處:[面試](https://hackmd.io/@86E3gZKuToKwjVavw4Wdpw/BJoOqyo6?type=view#1) ### 群暉科技_研替 - 面試題目: OS相關的問題: 1.process, thread的差異 2.shared memory 3.mutex, semophore 4.paging 5.dll如何運作 data structure/algorithm相關的問題: 1.(不用寫code) 給兩個set A,B. 想輸出A - B要怎麼做?複雜度呢? 2.(不用寫code) 描述一下經典算法LCS怎麼做的 講一下array, linked list, tree的優缺點, 以及使用時機 Coding 題: 1.給你一個BST的struct 結構,寫出insert操作 2.給你一個N bit的數字,輸出他有幾的bit是1 3.給你一張圖,寫一個function參數是起點跟終點,找出最短路的長度 4.追加問題:那如果我想印出這條path有辦法嗎? "你要不要描述一下你印象最深刻的project是什麼?" "為什麼是這個?" "那你們怎麼分工的?" "這個project裡最有印象的是哪一份code?是做什麼的?" "你寫過的code以來,最難debug的code是怎樣的?" - 流程: 1. 進來一位RD, 看起來很活潑可愛XD 首先請我簡單自我介紹一下 聊聊我的論文寫了些什麼 2. 進來一位主管,笑容滿面XDD 問了我最近有沒有什麼興趣,我說我最近喜歡在coursera上看ML的課程 然後就開始跟我聊ML了! <-- 自爆的下場XD 聊到paper的部分也是讓我介紹一下,為什麼會找這個題目, 跟別人有什麼不一樣,複雜度部分好了多少之類的 3. (第二天的面試) 進來的是人資姊姊 這是我覺得面試到現在最煎熬的一關XD 人資姊姊的問題都是偏向個性,人格特質相關的問題 4. 進來的是一位RD 跟我聊聊履歷上project的內容 做的過程是如何分工的 有沒有遇到什麼樣的困難 5. (之前跟別人聊過,這一關通常是講一下你有沒有offer 薪水,公司狀況,給你問問題之類的) 進來的人遞了張名片給我,是位經理 然後,他就開始問我問題了XDDDDD 最後面試結束後閒聊及介紹公司 - 出處:[[心得] 群暉面試 研替](https://www.ptt.cc/bbs/Tech_Job/M.1444375205.A.EB3.html) ### 趨勢科技_研替 - 面試題目: - C/C++ 考題 1. 搜尋 List 的時間複雜度 (10%) 搜尋 Binary Tree 的時間複雜度 搜尋 Hash Table 的時間複雜度 2. 一段程式要你判斷 output value。 (15%) Class A { A(){print();} virtual print(){cout << “in A”<1; 1->0); Q9: Re-write typedef _____; void(*(*papf)[3](char *); pf(*papf)[3]; Q10: write a code that check the input is a multiple of 3 or not without using division or mod Q11: Explain lvalue and rvalue Q12: 寫一個 function 可傳入正整數參數 N,回傳 1 + 2 + 3 +…+N 的和 Q13: reverse a string Q14: reverse a linked list Q15: 下面是一個 union ,請問要參考 ival 的值語法為何 ? Q16: 寫一個“標準”巨集MIN ,這個巨集輸入兩個參數並返回較小的一個。 Q17: Write a code to swap integer a, b, without temporary variable. Q18: Write a MARCO to calculate the square of integer a. - 流程:N/A - 出處:[學長留下的考古題](https://chun-ikuo.hackpad.com/-Prepare-RsOrTLMnkXQ) ### 普安科技_軟韌體工程師研替 - 面試題目: 1.data size 2.struct and union 3.利用c語言,將字串*str2接序在*str1後 4.解釋deadlock、Race conidtion 5.write a program :copy 4,5,6,7bits of 0x1234567 to 0x145678f 1,2,3,4 bits 6.stack point跳轉到function需要哪些暫存器 - 流程:N/A - 出處:[2017Homework1-整理面試題目](https://hackmd.io/oDOttJ0rTYmROnLayzehFA?both)