發表文章

目前顯示的是 2017的文章

106年推甄通訊所心得(下)

圖片
恭喜學弟妹們通過第一階段的審查,不過在此時才是推甄真正的考驗.接續上一篇的主題,這次來跟大家分享研究所面試的心得. 本篇文主要包括了在大學畢業前於系上舉辦的考研分享會的內容,並再多補充些當時時間有限,未能在分享會上提及的小技巧. 若覺得這篇文章對你們有幫助&有任何問題的話,請不吝在此篇文章下支持&留言,並分享給其他有需要的同學們. 跟之前上篇一樣,就以這張心智圖來概括講解面試的注意事項吧~~! 預先準備:準備甚麼? 在接到面試通知時,你就必須開始計畫好當天面試的細節.若是面試地點需要通勤前往,就要提前準備訂好來回車票甚至是要下榻的飯店住宿; 若是面試好幾間學校,更要注意是否有學校科系撞期?若有的話就要趕緊打電話至學校系辦調換時間(例如:上午場改換成下午場)或是找人替換順序,確保不會有錯過面試時間,或是使自己太趕來不及在面試下一個科系時, 擁有最好的狀態 . 以去年為例,當時中央通訊跟成大電通所面試恰巧在同一天,若你沒及時找到人可調換順位或上下午場,一天南北來往的時間可是會非常緊湊. 接著就是要好好準備面試會問的問題了.推甄面試會問到的問題,大致上可以分成這幾類: (1)自我介紹 自我介紹無論是研究所面試,就算未來應徵正職工作時也是必定常問的題目,所以一定要多多練習,時間控制在1~3分鐘之內.推甄時的自我介紹主要是講述你的 名字,學校,科系,以及專題 ,這是教授比較想聽到的內容.講這些時間也大概3分鐘內跑不掉了.假如講完還有多餘的時間,可以再講述你 未來想研究的方向 .關於這點本文等等還會提及到 (2)專題內容 誠如(1)所述,就算你自我介紹沒提及到專題內容,教授也一定會想問你在大學時的研究為何, 所以專題可說是必須要清楚不過的東西. 專題算是大學生涯裡不容忽視的項目,它代表了學生的研究技巧&解決問題的能力, 關於構思問題、蒐集資料、分析、並且撰寫的學問,類似「大學畢業論文」,若要推甄研究所除了課業成績優秀之外,就是要顧專題研究 你可以藉由這些問題來判斷你對專題的了解有多少: 能否7句話以內的篇幅來描述你的專題內容? 專題研究是用甚麼方法? 專題的結果是甚麼? 此結果符合你的問題模型嗎?有沒有不合理的地方? 你對這專題有甚麼心得嗎?

[思路]LeetCode Problems-121. Best Time to Buy and Sell Stock

圖片
此篇文章要探討的問題Best Time to Buy and Sell Stock,意指如何在股市波段中找出最大的利潤.題目原文如下: Say you have an array for which the  i th  element is the price of a given stock on day  i . If you were only permitted to complete at most one transaction (ie, buy one and sell one share of the stock), design an algorithm to find the maximum profit. Example 1: Input: [7, 1, 5, 3, 6, 4] Output: 5 max. difference = 6-1 = 5 (not 7-1 = 6, as selling price needs to be larger than buying price) Example 2: Input: [7, 6, 4, 3, 1] Output: 0 In this case, no transaction is done, i.e. max profit = 0. 在這題中假設只能買賣一次,你必須在這一次買賣中就獲得最大的利潤.對我們來說這是很簡單從肉眼即可判斷出解答為何(意即:投資者常在看的"K線圖"),那麼對電腦來說,這應該要如何解決? 首先要思考的是:我們自己是 如何判別怎樣算賺錢呢? 對投資者來說,股票賺錢的本質就只是低買高賣,所以重要的往往不是單一的價格本身,而是兩個價格之間的差為多少? 因此,以題目的範例來說,我們感興趣的不是陣列中[7,1,5,3,6,4]的每個值,而是前後兩兩之間的 差 : [ (1-7) , (5-1) , (3-5) , (6-3) , (4-6) ] = [  -6 , 4 , -2 , 3 , -2 ] 接者就可以再進一步判斷, 要從哪一個數開始作連續相加,並要停在哪一個數值上呢? 例如假設是要從-6開始加到4,-2,3的值,還是要從4開始連續加到-2,3的值? 處理序列的連續相加問題,我們

106年推甄通訊所心得(上)

圖片
每年的九月底到十月初這段期間是大學生準備推甄研究所的繁忙時刻,去年的我在這個時間點也是忙得焦頭爛額. 這次想利用此篇文章來跟讀者分享版主我個人在準備碩班推甄的經驗,希望可以幫到同樣也是有意願來讀通訊相關科系的學弟妹們. 本篇文主要包括了在大學畢業前於系上舉辦的考研分享會的內容,並再多補充些當時時間有限,未能在分享會上提及的小技巧. 若覺得這篇文章對你們有幫助&有任何問題的話,請不吝在此篇文章下支持&留言,並分享給其他有需要的同學們. 正文開始就用這張心智圖來概括講解推甄需要準備些甚麼吧~~! 研究所推甄主要可分為三個階段: 1.初試繳交備審資料2.複試參加面試3.錄取找指導教授 我就先從第一點開始講起 1.備審資料 備審資料是個很需要花費心思的東西,這是張你是否能有機會進入研所殿堂的入門票.會有同學認為說"推甄不過就是在看成績好不好而已,不需要花時間準備"但我個人是保持著好的心態: 不管你的成績是好是壞,都應該要準備出完美的資料 .假如你的成績沒特別好,卻又不想考試只要靠推甄錄取研究所,更得在備審資料上花費心思. 在進一步解說如何做備審之前,有些資料是必須提早準備的,甚至於是應該在9月前就該做好, 我是在升大四的暑假在公司實習之餘的空暇時間完成這三大工作: *選好目標科系 ,並事先查好去年度的研究所簡章,心裡大致上曉得該準備甚麼資料 *預先準備以下資料: 大學時期拿過的獎狀 幹部/服務證明 英文證照 整理好重要的研究/計畫成果 參加活動的照片 事先查好這些資料,在做備審時會省力許多 *著手撰寫自傳草稿 自傳這種東西在備審資料中的地位其實是蠻尷尬的,審閱資料的教授不一定會對你的生平起興趣, 但同時這也是 整份資料中原創性最高,最難寫的部分 . 畢竟和讀書計畫不同,基本上你碩一碩二該做的事情其實每個人都寫得差不多,有些同學可能還會有學校學長姊經驗可以參考, 可是自傳每個人都應該是完全不同的,講白一點就是沒得抄襲. 所以我會建議這個部分,能早點想清楚如何寫是越好 假如你這三個步驟都有提早做好,那麼就可以來詳細講述備審資料的成分有哪些: *在校成績!!!!! 這可以算是蠻重要的考量之一,畢竟這個社會就如此寫實,成績越好則越有高機率能夠通過審查 以趴數

[思路]LeetCode Problems-231.326.342. Power of Two/Three/Four (冪次題型)

圖片
本篇文章要闡述的是筆者在LeetCode上碰到的一種題型:冪次(Power),大概有三個題目與其相關.題目的原文為: Given an integer, write a function to determine if it is a power of two/three/four. 給定一個整數,則你能否撰寫一個布林函數來判斷這是不是為2/3/4的冪次項呢? 根據這種類型的題目,於演算法的角度來看我們可以用多種不同的方法來解.以下在此一一分析: (一)暴力破解 對於不熟悉撰寫程式或是投機取巧的人常會用的方法,單純就是為了解題而迫不得已才使的笨方法. 暴力破解還可分成兩種: (1)把所有的2/3/4的冪次項列出來 由於變數型態Int的數值範圍在-2147483648 ~ 2147483647之間, 我們把因此在此範圍的 所~~有~~次方項 的值都列出來, 看給定的整數符不符合來判斷. 但這畢竟是個曠日廢時且效率極差的寫法 (2)只找出2/3/4的最大次方值 由於變數型態Int的數值範圍在-2147483648 ~ 2147483647之間 所以我們找出在此範圍所能容納的最大次方數為多少 (例如3的19次方為1162261467) 那麼我們只要看給定的整數能否被這數字整除即可,即寫成: bool isPowerOfThree(int n) {         return (n > 0 && 1162261467 % n = = 0);     } 這比第一種暴力解法還要省事的多,但終究是取巧的辦法 (二)迴圈解題 這算是大部分人會想嘗試下手的寫法,利用while迴圈或是函數本身遞迴解題. 通常我們在做數學題碰到這題的時候 很直覺地會用直向因數分解的辦法來找這個數是否因數皆為2/3/4, 因此在程式中最直接的方法就是不斷地對數值除以2/3/4, 看最後的餘數是否為1,若是1則傳回true,不是的話即傳回false. 並加上考慮是否為大於0的情況, 最後程式的寫法即為如下(舉3為例): if (n==0)      return false else {   while (n % 3 = = 0){     n=n/3;    }   if (n==1)

[思路]LeetCode Problems- 657. Judge Route Circle

圖片
Leetcode於每周末都會舉辦線上的程式解題比賽,在比賽結束後便會釋出最新的題目供大家練習.這次要介紹的便是上週出現的新題目.題目原文如下: Initially, there is a Robot at position (0, 0). Given a sequence of its moves, judge if this robot makes a circle, which means it moves back to  the original place . The move sequence is represented by a string. And each move is represent by a character. The valid robot moves are  R  (Right),  L (Left),  U  (Up) and  D  (down). The output should be true or false representing whether the robot makes a circle. Example 1: Input: "UD" Output: true Example 2: Input: "LL" Output: false 題目假設有一機器人在原點位置,則給定字串UDLR來讓它上下左右在二維平面中移動,回傳最後位置是否還停留在原點上. 一開始看到時我的想法是先假設好一個二維的空間, 若程式偵測到有'U'的話,則在Y軸方向加1, 有'R'的話則在X軸方向加1....諸如此類. 但是其實就程式的結果來看,我們並不需要知道機器人最後會落在座標平面上的哪個位置,重點是只要知道"在不在原點上"就好了. 因此程式設計的邏輯還可以再簡單 精簡成為一目標就是"走向左邊的步數"等於"走向右邊的步數",並且"走向上的步數"等於"走向下的步數" 意指在要看字串中"U的個數=D的個數"並且"L的個數=R的個數" 達成這個條件就知道

[思路]LeetCode Problems- 617. Merge Two Binary Trees

圖片
本篇的問題與處理資料樹狀結構有關,題目原文如下: Given two binary trees and imagine that when you put one of them to cover the other, some nodes of the two trees are overlapped while the others are not. You need to merge them into a new binary tree. The merge rule is that if two nodes overlap, then sum node values up as the new value of the merged node. Otherwise, the NOT null node will be used as the node of new tree. Example 1: Input: Tree 1 Tree 2 1 2 / \ / \ 3 2 1 3 / \ \ 5 4 7 Output: Merged tree: 3 / \ 4 5 / \ \ 5 4 7 Note:  The merging process must start from the root nodes of both trees. 除此之外,原始程式碼還有附上二元樹的定義: /**  * Definition for

[心得]"把合理當正確"的謬誤--邏輯謬誤鑑識班 Lesson 1

圖片
購書連結: http://www.books.com.tw/products/0010733317 (此文章僅為個人學習用途並針對書籍做重點心得摘要,若要更多細節,實例與圖示請購買本書支持作者) 小時候看卡通"名偵探柯南"一定對這名言不陌生:"真相永遠只有一個" 真相的確只有一個,但是根據此真相而得出的[合理推測]卻有非常多個. 當我們聽到一個 合理的 推測時,常常就會將其當作是 正確的 事實,這算是大部分人日常會犯的思考問題.學術上的名詞又稱作 訴諸可能(Appeal to Possibility/Probability) .是非形式謬誤的一種. 就以名偵探柯南這類的推理文本來說,常會有推理的劇情不夠嚴謹,就只把一個合理的推論當作是真相的情節發生.而在案件當中,其實 還有其他很多合理的解釋,只找到其中一個合理解釋,並不等於找到正確的真相. 好的推理劇情會考慮各種的可能性,而不只專注於單一證據.如同柯南道爾借福爾摩斯之口在小說中提到: "......拿現場做證據是很靠不住的.它好像可以直接了當地證實某一種情況,但是如果你稍微改變一個觀點,那你就可能會發現,他同樣可以明確無誤地證實另一種迴然不同的情況." 當然這情況在電影小說中無傷大雅,當作是娛樂消遣看看也好,但是在實際生活中則不能太隨便看待. 例如前幾天在報章雜誌看見的新聞為例 藍智庫質疑臉書搞「綠色恐怖」籲公開審查機制 國民黨智庫開記者會指控臉書會將批評蔡政府的貼文與帳號停權下架,質疑臉書被台灣的政府控制言論自由 因為臉書會刪批評政府的貼文與帳號,所以覺得臉書偏袒民進黨,是綠色恐怖.這樣的推論字面上看是合理的, 但對於熟悉社群網路機制的人而言,就曉得這樣的解釋並不正確. 根據臉書的社群守則,如果用戶針對特定族群發表仇恨言論,或是涉嫌濫用帳號,反覆發送垃圾訊息,就會導致用戶帳號遭停權、貼文被刪除. 所以反過來看,也許是因為批評的貼文素質不佳,所以才會被臉書刪文. 這個謬誤另一種常見變形是 "把合理的謠言當正確的事情" . 若沒有針對這些謠言與誤傳做查證,我們自然而然地 思考容易會被謠言或是誤傳所影響尤其當這些傳言很合理時,其作用力就越大 在前幾年台灣有一波反韓的熱潮,

[書摘]研究所這條路 第八章:贏在起跑點

圖片
(此文章僅為個人學習用途並針對書籍做重點整理摘要,若要更多細節,實例與圖示請購買本書支持作者) 購書連結: http://www.books.com.tw/products/0010599014 <研究所這條路:升學、研究、社交、謀職一把罩的研究所生存術>由Robert L. Peters所著, 是在教美國研究所的介紹,挑選,論文,甚至是謀職等和研究生密切相關的建議. 全書共有23個章節, 書本前半部花了很長時間討論是否該讀研究所,如何申請研究所,以及挑選論文指導教授, 一直到第八章才開始進入本書的正題: 進入研究所該做的事 *馬上要做的八件事 一.買一台好電腦 電腦如今已經成為必備品.你可以透過電腦上網搜尋資料,收發郵件,紀錄與分析資料,撰寫自傳與論文,以及尋找工作 二.設定行事曆 包含預定的研究所課程與計畫.只要設定好行事曆,便能專注於長期目標,並藉此激勵自己規律工作.行事曆最好包括下列六個部分: 1.研究所學程規劃表 你若要保持進展,就要專注於長期目標. 紀錄所有重要事件的截止日期.可以使用專案管理軟體來製作時間表,讓自己知道寫論文的每個階段該花多少時間,以及如何多工處理事情 規畫好之後貼到顯眼之處 2.月曆 並列兩個月的月曆表 ,如此才不會忘記下個月初該做甚麼.每天都要花點時間檢查月曆 3.周曆 把每天劃分小時來記錄行程.規劃課程與例行會議 4.可攜式周曆 隨身攜帶它提醒自己該做甚麼 5.日誌 激勵自己與紀錄生產力.知道每天的工作量 6.任務表 提醒自己尚待完成的工作 三.設定好歸檔系統 研究所文件太多,必須好好整理檔案 分類文件方式: 申請研究所資料 論文構想 論文計畫書 畢業論文 訪談紀錄 期刊論文題目的構想 參與研究所支援團體時紀錄的筆記 會議與研討會檔案 考試資料 過去的任務表 每月進度報告 每個月都要寫一到兩頁的報告 ,內容包括: (1)總結該月的進度 (2)每月進度跟長期研究計劃之間的關聯 (3)下個月該採取的步驟 (4)遭遇的困難 拿給教授過目使其明確知道你需要哪些協助 經濟資助與申請資料 求職資料 專業資格的文件 影印資料 四.每天寫日誌 每天晚上都要回想自己做了甚麼,藉此評估進

[思路]LeetCode Problems- 476. Number Complement

圖片
這篇要講的題目是Number Complement,即為"補數"的意思.題目原文如下: Given a positive integer, output its complement number. The complement strategy is to flip the bits of its binary representation. Note: The given integer is guaranteed to fit within the range of a 32-bit signed integer. You could assume no leading zero bit in the integer’s binary representation. Example 1: Input: 5 Output: 2 Explanation: The binary representation of 5 is 101 (no leading zero bits), and its complement is 010. So you need to output 2. Example 2: Input: 1 Output: 0 Explanation: The binary representation of 1 is 1 (no leading zero bits), and its complement is 0. So you need to output 0.題目的ㄧㄠ 題目是要求某數二進位翻轉過後的結果是甚麼數字. 這題跟我先前解過的  [思路]LeetCode Problems- 461. Hamming Distance  有些相似, 都要求出十進位轉二進位, 所以一開始我的想法是: 1.十進位轉二進位 2.0跟1互換,1變0,0變1 3.在反求二進位轉十進位的數值 看起來還蠻合理的,但是在開始著手之後,就發覺整個過程變得很複雜.... 首先是在於,我在算十進位轉二進位的方法,主要是一開始先創設32位元的0元素陣列(考慮到int變數的位元範圍下), 再用除法除2時,把求得的餘數1或0放進去 例如對5做轉換求到的值,在陣列中被表

[思路]LeetCode Problems- 537. Complex Number Multiplication

圖片
 這次要來解決的問題是複數相乘Complex Number Multiplication. C語言不像在大學時期所碰的MATLAB一樣有方便的數學函數工具箱,可以幫學生做計算-----應該說要用C計算數學也是可以,但基本上兩種軟體的功用大不相同-----這次的問題在為自己將來有可能會碰到MATLAB轉C的需求作準備. 題目原文如下: Given two strings representing two  complex numbers . You need to return a string representing their multiplication. Note i 2  = -1 according to the definition. Example 1: Input: "1+1i", "1+1i" Output: "0+2i" Explanation: (1 + i) * (1 + i) = 1 + i 2 + 2 * i = 2i, and you need convert it to the form of 0+2i. Example 2: Input: "1+-1i", "1+-1i" Output: "0+-2i" Explanation: (1 - i) * (1 - i) = 1 + i 2 - 2 * i = -2i, and you need convert it to the form of 0+-2i. Note: The input strings will not have extra blank. The input strings will be given in the form of  a+bi , where the integer  a  and  b  will both belong to the range of [-100, 100]. And  the output should be also in this form . 題目的大意為給定兩個以a+bi表示的複數,並且還是字串的形態, 求兩個複數相乘的結果,同樣要以a

[書摘]跟誰都能聊不停---這樣說話,讓你到處受歡迎

圖片
(此文章僅為個人學習用途並針對書籍做重點整理摘要,若要更多細節,實例與圖示請購買本書支持作者) 前言 *對話無法持續的原因 緊張(未曾見面的人,長輩,心儀異性) 怕生 話說得不好 不知道該說些甚麼 初次見面 對方是"不熟的人" 缺乏主動開口的勇氣 沒有自信 沒有話題 不知道如何選擇話題 不曉得該如何回應 想太多 目的不明 認為自己非說話不可 第一章:這麼做,就不怕冷場! *緩和緊張的三個要點 告訴自己對方也很緊張 不要過度自我意識,用 平常心 與對方接觸 用心累積經驗: 越怕就越要說 *對話不中斷的基本技巧 精簡才能達意--> 縮短句子 讓說出來的話簡單明瞭 視對象改變措辭 腹式呼吸 練習發聲 4.肢體語言 活絡對話 *克服結巴口吃 =>多做嘴巴體操,練習有節奏地說話,腹式呼吸 *笑容讓聊天更愉快 擺出笑容的要訣: 正面思考 有意識地露出笑容 促進對話的重點: 禮儀 說話時的姿勢 穿著打扮 *初次見面的對話 事前蒐集資料 (個人資訊:工作地點,所屬單位,職位,出生地,母校,個性,興趣) (企業資訊:業種,員工人數,歷史,董事,營業概要,客戶) 準備好話題 外表推測個性 *展現真正的自己: 做腹式呼吸 告訴對方自己也很尷尬 自我暗示 *在對話中臨機應變 * 日常對話 的目的:培養彼此的感情,建立良好的人際關係 ==> 正確性並不重要 ,立刻糾正對方的話是無法建立關係的 * 工作對話的目的:講求正確性,讓工作順利進行 第二章:這麼說,越聊越熱烈! *聊天就像 傳接球 球=>話題 只顧著自己傳球,很快就沒有話聊 -->請對方將球傳回來對話才能繼續下去 接住對方傳來的球再傳出對方容易接的球 說話的分配=> 對方說七成,自己說三成 *搭腔的技巧 1.同意對方的話 就是啊-一點也沒錯-嗯-對-真的耶 2.簡短陳述自己的意見 噢~真了不起啊-你已經很努力了-這樣當然會生氣了-真的很不容易啊!-有機會想和你一起試試-一定很好吃吧!

[思路]LeetCode Problems- 461. Hamming Distance

圖片
有鑑於上次按隨機鍵出來的題目難度特高,花了不少心思, 並且上週去成大一個禮拜沒碰到程式許久, 我決定這次來解決一些較簡單的題目, 並嘗試不用C++而用C語言來完成 這次練習的題目是Hamming Distance,題目原文如下: The  Hamming distance  between two integers is the number of positions at which the corresponding bits are different. Given two integers  x  and  y , calculate the Hamming distance. Note: 0 ≤  x ,  y  < 2 31 . Example: Input: x = 1, y = 4 Output: 2 Explanation: 1 (0 0 0 1) 4 (0 1 0 0) ? ? The above arrows point to positions where the corresponding bits are different. 漢明距離(Hamming Distance)在通訊領域裡是頗重要的編碼應用,個人最早是在學習通道編碼的Viterbi演算法中碰到的. 在Viterbi演算法中需要透過編碼器的格狀架構找出一條最短路徑,找出擁有「最大可能性」路徑的方法,而這就需要應用到漢明距離.最簡單的解釋 就是 位元數不同的數目總和 例如:(wiki) 10 1 1 1 01 與 10 0 1 0 01 之間的漢明距離是2 2 14 3 8 96 與 2 23 3 7 96 之間的漢明距離是3 跟先前寫過的題目來比,這一題的邏輯脈絡就清楚許多,可分成三個步驟: 1.十進位轉換成二進位 2.轉換後資料存成字串或陣列 3.比對兩個字串或陣列的內容 首先要來處理的就是位制轉換問題,十進位轉換成二進位的方法如下所示: 簡言之 這演算法有兩個重要skill: 1.取得餘數(1或者是0) 2.針對除法所得到的商數繼續做除法 有了這兩個概念後我們就可以用FOR迴圈來實現這個轉換問題 已知輸入的十進