還蠻經典的,以最簡單的題目可以鑒別出對方瞭不瞭, 深度優先最簡單,比如以2元樹來說,一般中序遞迴函式就是,裡面就先走訪左,中,再右即可。 foo(Tree node) { If node is Null return; foo(node.left); print node; foo(node.right); } 廣度也差不多,先走訪自己,再走訪子節點(樹葉): foo(List nodes){ List nodeList=new List(); for n in nodes { print n; nodeList.add(n的子節點們); If nodeLlst is not empty { foo(nodeLlst); } } } 以最簡單的表示演算大致如上, 可以自行加上子節點怎麼抓的邏輯,並判斷是否有子節點或是null等判斷即可,走訪print可以自己改成搜尋,if node.value == target then return node;
我永遠記得成大某教授說過的話:「很多你覺得沒有用的知識和理論,其實是因為你還沒達到需要用它的高度。」
小明後來發現講得一嘴好DS/Alg的前輩連Big O都不懂。
推:人生沒有白走的路
但是有壞掉的肝,走路前請珍惜健康。
我也是非本科系出身的程式設計師,資料結構與演算法,在一般簡單用途上可能沒啥感覺,但是某些關鍵時刻,會發現這些其實超重要。
印象最深的一件事,就是有一次要比對兩串名單,把相異之處比對出來。我還在思考怎麼用迴圈一筆一筆抓字串比對的時候,隔壁資工出身的同學,直接跟我說,兩串名單轉成陣列或Set,取差集就好了。
瞬間感覺我是用低階語言思考、他是用抽象邏輯思考。這就是差別。
這也是我這半路出家遇到的狀況,同樣也是在想該怎麼對兩串名單做比對,同樣也是一個資工系出來的同事跟我講用差集哈哈!
學習永遠不嫌晚,我也是一名自學而成的前端工程師,目前正在補強資料結構跟演算法。我想無論是自學的還是本科系的開發者,遲早都會遇到這些門檻。
對,如果都遇不到可能都在做 business logic
真的很希望過去幾年就讀資工系的時候,能有人告訴我這些
如果當時能被激發出興趣,或許現在的我就會踏上工程師之路,一邊賺錢一邊做自己喜歡的事
話雖如此,但現在自己正朝著真正熱衷的領域前進,還是很開心有過去這幾年的經歷,深信著未來某些時刻一定會派上用場,而且這就是我比其他人更有優勢的地方
給想念資工或正在就讀但沒興趣的人:
「如同4:19所說,泡在這個環境裡面真的差很多,跟半路出家、速成班只學表面的人相比,差了不只一點。
本身在校成績最爛倒數第一,最好可以拿書卷,程式對我來說只是工具,沒什麼特別的熱忱,所以我四處到各系各校去修課,也包含”社會”學分,只為了興趣與有趣而讀而學,連系辦審畢業時看到琳瑯滿目的修課紀錄,都說我被資工系耽誤了XD
即便如此,身在這個環境還是會被潛移默化,很多東西雖然學不精,但至少還是有個印象與基礎在,也都知道可以哪裡找資源,而且很多原理都是觸類旁通的,讓我們理解吸收相關知識相當快速。
例如:電子學後段有某個概念,跟無線通訊的carrier frequency一樣,一看到馬上就聯想在一起;我寫過幾種不同的物件導向語言,背後的原理都是一致的
以後即便不走這條路,但可預見未來還是程式的天下,這些武器放在腦子裡不保養也沒差,當有需要的時候,就能拿出來快速清潔一下,都還是好用的。」
想當年進公司時遇到公司的副總上台跟菜鳥們講話時說窮舉法最高,
講一堆例子讓我的眼睛翻到後腦勺去,
我心裡想這傢伙絕對不是資工系出生的,
一查才知道是電機出生的......
非本科系,但有去努力讀結構跟演算法的書,裡面的內容大都已有先人寫成插件或是更好的框架,實務上直接套用即可。讀這些內容我覺得最重要的是能學到思考邏輯,在思考解決方案或優化流程時很有幫助。
學海無涯,不管你是否學校有學,遇到瓶頸就是要趕快自修或是進修,找到突破點,避免被別人追過外,還要持續分享阻礙其他人,你越是分享,越是協助他人,只會越來越厲害,除非你患有嚴重自戀症,可以無情利用所有人往上爬,後者這種人都是你的最高主管
感謝 Nic 的分享,速成班如我,看完影片之後背後的冷汗開始直流
目前剛踏入這個領域剛滿一年的我,最近開始學習倦怠,
原本以為影片說的那些東西都是現階段的我不用學的,
想說到時候遇到再學就好了,現在看來機會真的是留給準備好的人!
真的很感謝 Nic 幫我這隻井底蛙開了眼界!!!
資管畢業 當年資料結構睡好睡滿 低空及格 看到影片前半段 汗如滔滔江水濕的我的椅子不要不要的
但看完影片尾 介紹必備技能 資料結構的部分我居然大概聽得懂 謝謝Nic把我打到谷底但又給了一小顆火種
看來還是要找時間把這些內容補點起來了
現在語言越包越簡單,底層運行跟架構概念真的是要經驗跟實作,踩過坑才能累積的能力,抱持著現在學以後也會有機會用到的心態,等到這些東西都累積起來後 你會發現前人當初設計的高端處,自己在開發時也會設計出更直覺的程式碼架構,不然OOP或者FP這些概念我相信很多工程師到現在還是不能理解,等真的融會貫通各個領域的語言跟看很多架構規劃時,新技術出現學習的時間也會越來越短,全端也會變成必經之路,搞到後面反而想回去寫組語,多寫些自己有興趣的side project真的是最快也最有趣增進實力的方法
當年有看這影片演算法就會認真上了
不過小明花了2個月,卻能跟我們做著外觀上差不多一樣的東西
而我們用了4年和幾萬塊才換了張證書
小明或許可以用1~2年時間補足我們4年的課程
機會成本來看我們稍微吃虧
唯一好處可能就像你說的我們泡在這環境裡
身邊同學也在不同公司上班,要跳槽比較有管道
前端工程師前來分享一下,
之前在研究 React.js Concurrent Mode,
看到了這篇文章 [1] 在說明 Concurrent Mode 背後的實作原理,
裡面就有提到 Linked List、Tree、DFS。
我就想到常常有人說前後端用不到資料結構演算法,尤其時前端,
嗯~我想是因為我們多半碰到的都比較偏向單純的商業邏輯吧。
對了,其實很多 UI 背後的邏輯也跟資料結構演算法有關啊!
像是 iOS 的 UITableViewCell 就有用到 Queue [2] 來重複使用 Cell,
所以囉~如果想做出高效能質量好的 UI ,背後也還是需要這些資工知識的。
[1] 深入頗析 Concurrent Mode:zhuanlan.zhihu.com/p/60307571
[2] UITableViewCell 的重用機制:medium.com/@mikru168/ios-uitableviewcell%E7%9A%84%E9%87%8D%E7%94%A8%E6%A9%9F%E5%88%B6-%E7%84%A1storyboard-94e766420b57
只做 business logic layer 確實很少用到
但要從 framework consumer 到 framework creator 勢必就要懂這些東西了
尤其這些工具啊、框架啊,很多優化的原理就是需要這些背景知識的
感謝你的分享,很有條理
问题是99%的公司都不会重新造一个react。也很少会有比它做得好的,因为这是一个投入很大很多人协同制作了N个版本后的产品。它最最最原始的版本也许用的是最最简单的演算法。
@@haha-eg8fj 你說的沒錯,但是當你有需要理解某些技術背後的原理時,就有可能會碰到資料結構或演算法了。
許多人希望學校教的技能工作都用得到 但這樣的心態反而局限了自己能選擇的工作 會為了讓自己之前學的不白學 而去做不適合自己的工作
在學校就是要盡可能的多學習來拓展自己的視野 學的越多 用到的機會就越大 也越能找到適合自己的工作
內卷卷起來
不限於軟工,只要是技術類,在追求品質的時候,勢必會需要理論的支持,科學是人類推砌的結晶,學科是對這些結晶的歸納與分析,怎麼可能會用不到?
但是回過頭來,這些理論使否派上用場,終究要看公司的政策,套句PTT的說法「面試造火箭,工作擰螺絲」,這種事也很常見
在某些領域,「擰螺絲」也是大有學問。
@@swwei 好比說是日本製的螺絲跟德國製的差別...
還有什麼螺絲需求的扭力之類的(?!)
工作上就有新人扭到每個都滑牙.....
雖然我不是學這方面的,但出社會幾年後也有這種體悟。回想起以前所學的知識技能,這些知識技能並不是沒用,只是我不會去使用罷了,懂了學這些知識技能要做甚麼後,在學習的這條路上就像玩遊戲一樣,很有成就感也很有趣。任何微不足道的小事,只要你會別人不會,那麼他就是一種專業技能,就看你怎麼去看待它、使用它了。
感謝Nic的分享
我是機械領域的學生
近幾年來機械產業開始搞起了智慧製造
最近也開始在接觸演算法相關知識
希望一切順利XD
講得很清楚,我是資工系的,原本對自己對未來很沒信心,看完你的影片突然很有動力!
能幫助到你感到非常開心,謝謝你的留言鼓勵 XD
謝謝Nic 大激勵!!! 這學期正在上演算法跟作業系統的課 內容比較硬
但Nic給的經驗值更硬!!!
第一次看到資工背景的YTR能把資工相關的東西講的這麼有趣 大推
這留言我可是等了半年啊!!!!
@@niclin 喜歡你的剪接節奏和說話抑揚頓挫 不像一般影片和講師那樣催眠
了不起,真的講的很好,言簡意賅,精簡,直指核心觀念。太讚了。
這是我目前看過影片中,資訊量最豐富的CZcamsR了...
真可惜我大學時期沒有這個頻道可以看~嗚嗚~
專業~ 講得淺顯易懂, 能讓那些想走捷徑的人了解為什麼當初要對那些枯燥乏味的課下苦功.
有下過苦功才能懂
很實用 感謝你 期待更多這系列的影片
感謝你的回覆,讓我更有動力了 XD
從1986年左右開始寫程式,雖然已經打包回家了。
一個感想,資料結構也好、演算法也罷、計算機概論到系統設計,都是很重要的基礎知識,雖然隨著高階語言越來越多,重要性降低了,但還有一種知識,個人覺得是最重要、最無形、也影響最深刻的,那就是數學。
數學訓練出來的邏輯能力都可以受益無窮,不管什麼樣的新知識,都跳不開邏輯思維的基礎,邏輯越強,汲取知識的速度越快,解決問題的速度也越快。
其實大學教育說到底,訓練的就是邏輯思維,這也是為什麼看似學了很多工作用不上的知識,但大學生比高職生就是有差的原因。
這不是說高職、專科生就真的比不上大學生了,事實上,邏輯思維的訓練是最容易自修的能力,但也是最容易偷懶的,看個人自己願不願意下功夫去做而已。
我唸書的時候是80年代,那時根本沒多少正規課程,程式設計的課程都是掛在各種硬體工程科系下面....所以....多接觸硬體其實也有不少好處的....
你覺得課程編排改為,在大學求學時、甚至高中時就先學速成班的東西然後開始應用,再回頭補足基礎概念,會不會對學習上更有熱情跟效率?
絕對會
會,因為你是之後因為有興趣才學的,知道哪裡不懂就去補足,但你一開始學那些理論根本就不知道這要幹啥
講得非常好,演算法、資料結構可以讓一名軟體工程師站穩腳跟
其實分治法算是萬用的~難的工作可拆成好幾份慢慢做~動態規劃也可
這真的很重要,以前我也覺得實作很好就好,
理論一直以為是那些大公司和製作這些軟體的公司才會用到的東西,
但這些理論越好,在選擇solution的時候會越快,
可惜出社會就轉硬體工程師了,軟體也就用不到了 XD
只是硬體工程師也是一樣 XD
沒錯,就是在選擇 solution 的時候多那麼一份內功
非本科出身的推一個,這些真的很重要,剛開始沒感覺,工作1年以上後才開始發覺這些東西的重要性。
很多公司喜歡本科生不是沒有道理,因為他們潛力、上限都比非本科生高很多,差距就在這些理論知識
那您如何克服呢? 你覺得畢業才轉職的劣勢跟優勢在哪~
@@dwarfking8585 不斷去學就好啦。軟體工程就是一個無止盡的學習坑,跟其他職業比要更新的知識太多了。
當年有人做這影片的話
我就不會理論課都在睡覺了....+1
實際上不會的,最後多數還是泡在Google學理論
別傻了 你還是會睡
睡吧!孩子夢理也有。
已經睡掉了
之前聽過一個演講
說這像是武俠小說的內功和外功
講者說資料結構、演算法、線性代數就像是九陰真經上卷的內功
一開始感覺沒處不大 而且對實戰不如外功直接
直接學前端三劍客或Keras、tensorflow那些就像是九陰真經的下卷的外功
可以較快的看出成果 快速變成堪用的即戰力 但到後期可能會不如前者
當時聽覺得滿有道理的 不知道大家覺得這個說法有什麼看法?
就像學校喜歡講的點線面的概念
每個點看起來都是獨立的一個點,但當你開始把他們連成一條線後你才會知道怎麼使用,最後就會形成一個面,而其大小端看你能成功連起多少條線
我很認同,我自己也是這樣感覺的,很多程式語言的 API 、技巧,只是招式
但要解決更深的問題內功就顯得非常重要了,此時也會增強你的招式
所以才會有很多面向取決於一個工程師的精通程度,從程式語言熟練度、資料結構演算法、設計模式等等
會Fundamental computer science 之後要學什麼都快. 線性代數微積分是看行業. FANNG都是認為你有足夠CS能力,把你丟到任何一個Team都能做事,相反如果只會一些什麼簡單包好的工具. 做的事情規模與深度一定沒多大.
黑客的腳本小子和真懂的🤣🤣
講得太好了
還有一個地方常常會用到,就是把一堆資料如array, list, set的data做分組,實務上是轉到map裡,要分到同一組的就放到同個map key, value可能就用list來存放同組的資料。
感謝分享,現在大二正好在學資料結構,看完之後我覺得更應該要好好學好了>
我是資訊管理所畢業,從事的工作完全和"資料探勘" "資料庫管理" "網路通訊協定原理" "類神經網路演算法" 沒有關係,後來我的碩士論文是寫"密鑰生成" ,在台灣也是天天打EXCEL做報表、 幫主管做POWER POINT,資訊長的位置被業主的親人佔位一坐就是45年,根本不會輪到我,還被公司提前退休(我目前46歲)。結論就是學校敎得東西永遠和實務沒有關係。重要的位置、要職都在老人或企業主的親人佔住了。
目前把學歷經歷PO到求才網上,也是找不到工作,只好重新學習AutoCAD 看能不能找到工作。
請問什麼學校的資管所啊?
資訊所畢業,加上當兵的時間,假設你26歲找到當初那份工作
結果你在這樣一個不適合你專長的工作虛度20年,不計劃跳槽、不思考精進,直到人生最精華的時間被浪費光了,才開始抱怨
那其實不論你學什麼專業,基本上結果都會是一樣的。
找工作不是只看個人能力,運氣也很重要,在大公司,拍馬屁能力比專業能力重要多了.
要不要嘗試蓋溫室種田啊,在台灣種溫室一堆科技業都做得比農科生還要好一大截
身為數學系只修過數學系開的演算法,資料結構那些是自己去資工系旁聽的,目前是寫IC韌體的工程師
以前學的東西在工作上可能不會直接用到,但會是提供你一些解決問題的方向
你說的沒錯,有時候聽過有懂一些知識點,對於解決問題的看法或思路也會有幫助
我目前大學剛畢業, 您拍的這些影片對我非常有幫助, 感謝您
簡單說知識就是工具,只有不會使用工具的人,沒有沒有用的知識。
順便也提醒,不是學了資工系就一輩子只學程式就好,
懂更多機械、電子甚至物理化學相關的知識,對於更專業領域的工作也有極大幫助。
知識科普第一次聽,前部分有點偏工程的事,對工程界也有初步了解,後半部實用在各行上,好棒的分享^^
在初步瞭解的情況下竟然把他聽完了,感謝你的留言鼓勵
當你們為游泳池裡的客流量很穩定而沾沾自喜時,我已經看到你們沒請救生員的悲劇
说白了就是学校在不恰当适宜的时候教了不恰当的事,学校里教的东西肯定是要能够对接企业的,这样才能找到工作,在提升之后对程式有概念之后再学习各种算法,我就是学Python之前完全不清楚内存管理,但是学了c++后我就开始慢慢了解,后面学习CUDA,然后再深入学习了解显卡的架构组成原理,如果一上来就让我学显卡的硬件架构我肯定是学不会,但是在你慢慢自学了解的过程中你构建了一个计算机的认知体系后这才是真正应该学习算法的时候。
我則是大學電機系,研究所工業工程,後來自學人工智慧理論,現在是IT研發,做資料安全的程式,也開始碰到資料庫的東西,深深地感覺人生的不確定性跟知識缺乏的時刻,現在總是很希望有更多的時間來好好的打好基礎學習這方面的知識,學習永遠不嫌晚,永遠覺得自己還可以加強。
寫的越底層 這些知識越重要, 不過我覺得只要有心, 學校教的3年, 在外面大概半年內就能補上 尤其是有案子一邊做的時候學得更直接, 在學校的話就很吃老師教課的能力....
我是計算機工程出身, 學校教的我都是出社會才補上XD
在学校的时候自己做一些开源软件项目来实践这些知识应该是更好的选择。
我遇到过很多这些基础知识不足的人,他们的并没有要补上这些知识的意愿。因为长期不了解这些东西,他们已经形成路径依赖,认为这些知识没有用。
樓上說的我同意,但我也得說台灣在大學教學上,理論跟實務嚴重有落差。
我不覺得是理論課的錯,而是台灣高等教育在設計理論課程的老師的錯,他們當年囫圇吞棗硬啃下知識,然後教學時就基本是囫圇吞棗地再放出來。
@@Mong-Yun_Chen_54088 计算机教育这回事,每个人都认为别人碗里的饭更香。我在大陆读的本科,当时我的感想和你一样。
后来到澳大利亚留学,又是走另一个极端。有接触到一些本科课程和本科生,我发现一些重要的基础课选修(比如操作系统、编译原理)。大家都跑去学应用性强的课程,场面上如同速成班。导致很多高年级学生、毕业生一问三不知。后来进一步和到别的国家留学的人交流,才又知道大家都这样。
现状是大家都做得很烂,要么忽视理论,要么忽视应用,要么只懂某个小方向的理论和应用,于是激光炮插在驴背上这类事情就屡见不鲜了。去考察一下JavaScript社区和Python社区的诸多愚蠢产物可以更直观地了解情况。
计算机教育,教师本身的知识水平的确是很重要的,但是教学工作本身则需要全学术界的投入和研究。遗憾的是,从全世界范围来说, 现在的学术界是重研究而轻教学的。
你講的二元樹例子讓我頗印象深刻,而且也簡單易懂。
雖然現在還在學習演算法,但可能過不久自己也會碰到跟你一樣工作之後會需要碰到的技術問題。
看來還需要把基礎打更好才行。
謝謝分享。
不客氣,也謝謝你的留言
當然跟大家分享我的真實經驗才有共鳴啦
我也是當初沒學好,後來才想到,但要用到的時候確實比完全沒學過的還更容易理解
再來能夠一直往上走的,勢必要解決更多的商業問題、技術深度問題
演算法資料結構超有用的呀!
商業邏輯寫的出來不是重點,重點還有效能與是否易於維護等等。
我真不信解決同一個稍微小複雜的問題,演算法強的工程師跟不會演算法的工程師寫的會一樣。
就算資料量少的時候效能感覺不出差異,資料量大一定見真章XD
時間複雜度跟空間複雜度會有感。
我演算法老師強大如神,所以大學期間能力是巔峰,後來研究所開始爛掉,一邊擔任外商軟體工程師,在公司第一個月就覺得...我要把演算法啃回來😂
作業系統嘛...可能要去刻核心那一塊的才比較用的到🤣
目前作業系統擺爛中,計算機組織我也沒用到,也不希望用到阿阿阿 都還回去了(抖)
這段影片真的講得很好 我超喜歡
我是一名高中生,我其實對數學比較有興趣,跟Nic大大的情況一樣當初對於就理論層面的數學不怎麼有興趣和動力去學,比較想要學一些實際層面的數學,但後來我也忘記是什麼時時候了但是跟Nic大大的情況一樣在某次在檢討數學題目時才發現之前學的知識與當時有了連結,我如果以前沒學,當下一定會覺得書到用時方恨少。
當初在學這些資訊課的東西時雖然有些微了解跟知道一些意義,但是真的不知道應用在哪裡,看了影片後算是聽到了前人的話,受益良多,謝謝Nic大大(*◕ᗜ◕)ノ
真的會這樣 有時候當下因為不能理解而缺乏動力
之後才突然發現知識不是沒用,是還沒用到
感謝你的留言鼓勵 😁
這影片提供我不在迷惘的學習方向,感謝!
絕對有用。不要像某個姓呂的某歷史補習班,他有個影片嘲笑最沒用的課是數學。
你怎麼會對那一個影片認真呢?XD
谢谢nic,无价的知识分享!!!!
大學資工4年,如果其他東西沒學好就算了,但只要資料結構、演算法、程式語言這三個有學好就值得了,以後出社會學東西都會很快,個人甚至覺得花4年打好這三個基底一點也不誇張
這影片早10年出現多好!!!
可惜那時候我才 19 歲 🤣🤣
當然重要,對於一個資工人而言,當你遇到的問題是寫寫程式語言可以解決的問題,就還不是問題。
對,就僅止於比較淺層的問題
謝謝Nic分享~~~
感谢你分享的经验,非常具体,也让我认识到学到的基础知识体系会在未来的某个工作场合中派上用场。
會有用吧
像ReactJS, 他背後就是一個component tree
如果有學過tree, 對於理解運作規則就會比較有感覺
git底層是個acyclic directed graph
哪天要深入底層, 學過DS /Algo 就會比較有感覺
若只是純粹看學校的課 真的會不知道在幹嘛
還是要搭配一些實務的例子連結 就會有感覺了
太猛 很好解釋了知識基礎的重要性
正正回答了我的問題, 謝謝
資料結構、演算法 不是沒有用... 是教授不會用、工程師也不會用... code沒有bug已經很了不起了,在要求資料結構、演算法.... 可以!!! 請問公司給你薪水有多少?誰願意在已經沒有bug的code上無償進行優化? 看到這邊我澄清我不是反對學術,而是大家出來上班就是為了賺錢. 一間重視資料結構、演算法的公司理應給薪也要很高.
資管仔簽到 感謝演算法讓我看到你的影片
雖然我是決定要做MIS但經過這個影片 我想我需要好好學好資料結構
非常必要!
資訊人寫的程式跟其他科系核心差異就在這些地方
只能說 真的會教的老師 不多....只想領錢的大過認真教學的
知識就是力量!先盡量學起來
這部一樣情報量太多了
二刷完早點睡明天再找時間三刷
感謝每次的精華分享也很寫實
感謝你每次都在刷 XDD
感覺程式類的課程還是從商業邏輯實現一路學到深層技術才是循序漸進的
很好的概念,就是先求有再求好,先拿到60分再說,反正學校學的不一定用得到。
相反的,只在學校寫過作業的,畢業後還真銜接不上業界的工作。
支持NIC繼續創作
感謝你的留言支持😁
簡潔有力又實用 超棒的
哪怕我現在已經不走這條路,我也有曾經的歷程,真的覺得這些知識好用
最有用的時候就是你想要進faang的時候......
美國矽谷是FLAG還有個商標的M
日子一久沒碰都忘記了,但是你紅黑樹的那段出來,真的一個瞬間回想到老師當時講的範例~
瞬間湧上的回憶 XD
資管仔路過,有資料結構沒演算法
不過資料結構對我很燒腦,重修第二次
目前工作沒遇到,但是某一次去玩機台遊戲時,因為很多人排隊,因此採用卡牌,也就是先到的人先放卡片,卡排卡夾會寫順序
突然覺得,排隊的方法如果複雜一點也許會很接近演算法可以操作的空間…
二元搜尋我有印象的原因是第二次修這堂課時,我的通過條件就是要解二元搜尋
雖然我不知道為什麼會跳出這個影片
但大大的封面做得好好看,可以請問要去哪裡才能學嗎
我怎麼都搜尋不到
這幾年學得有些迷茫,謝謝up主
有新影片先給讚
感謝感謝!
去年剛讀資工大一時看不太懂這些資料結構 B Tree Big O, 但現在回來看到這個影片 腦袋就會瞬間回想到教授教的東西
你解開了 我多年的疑惑 原來資料結構可以用在那些地方
個人覺得其實資訊工程的實作跟理論其實一直都是的關聯很大,只是要實際用出來或在什麼情況要用會有點難,而且大部分的時候我們實作與到跟理論一樣的東西是才真的懂原來是這樣一回事
如果你要去Google, Apple這些大公司見工就有用! 工作上你根本不需要自己去寫, 懂得call library就可以了.
是沒錯啦!但偶而還是要自己寫 library,有時候商業邏輯非常「前衛」的時候
工程相關工作做了十年、每天都要學習不同領域的知識、但最重要的還是解決問題的態度。
鏈結串列 二元樹 雜湊表 資料結構 演算法 計算機理論
學理論很重要 但是了解理論的用法更重要
過於真實wwww
不過遇到問題真的要用心去思考,才能激發那些知識~
真實故事,沒加油添醋,只為了保護當事人修改了一下名字而已 XD
其實資工學的是設計思路,比起其它領域我認為實用價值還是較為足夠的,例如你仔細分析就會發現,os在設計時運用到的一些演算模式很多都可以套用在日常生活某些情境。
微積分你則是真的要有足夠高度才會涉及。
轉行人路過 正在學 感謝分享!
學生問老師:學這個有用嗎?
老師回答:對認真的學生有用。至於你,我也不知道。
所有工程師都學過三角函數,很多人說沒用,然後某一天發現連排版都會用到,更不用說canvas物件了
讚 很實用
Architecture, Operating System, Compiler, Computer Networking, Data Structure and Algorithm.
感謝分享~~
不客氣!
資料結構是真的多學習一定是會有差別的,至於跟非本科生相比來說,畢竟大學就是多唸了人家那麼些年..有差距是理所當然的.. 沒差距的話,只能說自已太混了。重點就是 工作的環境,是否能突顯出這些差別,讓你在職場有優勢與相對應的收獲與驗證。如果都是單純的crud的公司,其實很多反而注重在商業流程系統分析/法規的了解。反倒無法突顯這些方面
再花兩個月看資料結構線上課程,兩個月看演算法線上課程
是不是又變成一樣了啊?
老實講我覺得小明的問題在於不願意持續花時間補足知識,根本科非本科出生並沒有關係
乾 有夠勵志
帥,說的很好
我覺得有用,像工數我有一份工作,另一個組別的工程師是需要用到的,我們組算還好,不過如果我工數不錯的話,或許可以跟他們討論相關工作內容,增加見識。
以前待的速成班也還是有教資料結構的理論,但講師也沒辦法很詳細的跟你說在什麼情況下用的上,所以幾乎全部學員都沒什麼學習意願
只有我在課後時間無聊的將上課那些理論用剛學的程式語言一個個的實作出來…
我也是一名程式設計師(現在50多歲,已經是一名退休的工程師,我一生的工作使用的程式語言都是用 C ),給大家一些意見,先告訴大家,如果你真的要加入這行業,你要有一個心裡預期的想法,先是你對這個行業是否真的喜愛(不是因為這行業的待遇),而是你要有一個"終身學習"的態度.我簡單告知大家我曾經經歷的工作所遇到的.
"終身學習"
1.
你是否聽說過 UART . 它是一個通訊的設備,它連接時會發出奇怪的聲音(像fax)的,為什麼?,UART是在沒有個人電腦的時候就經已存在.是機械間相互傳遞的主要工具,因為就目前還有大量的機械在還在使用.(我當時不懂,而工作上要知道時,假期時就會到"天瓏書局"書坐一整天如何解決.(我也做個台電的case,還有很多設在使用RS232.
2. 我進入一個"年薪資"超過百萬的公司,工作上當然要有一定機本的能力,(其實要看你這三個月的試用期),你只要有能力.另外,這公司是 IC 設計公司,而我要通過這試用期是要寫出這個 IC 測試程式(老闆不會告訴你的),而程式會在"自動測試廠"測試生產的 IC (良率有多少),我們生產是 audio 的IC , (就是要從輸入的類比訊號,經過IC轉成數位後的品質)我又到"天瓏書局"找資料了,結果我透過 傅立葉 (fourier) 來解決了.從數學的理論轉成由電腦完成.(這樣才可以大量出貨)
你現在對演算法在工作上真的有用嗎?
感謝你的分享,我現在的工作演算法反而沒什麼用,倒是 design pattern 比較廣泛使用
实际上就是解决工程问题的能力,这些演算法不会每一个都记得住,实际上绝大部分人都不会记住除非高强度经常使用。因为这些Algo和DS虽然很有逻辑但是却又很反日常思维,就是说人要去匹配只懂0和1的机器的思维,所以才会显得很难。
实际上真正的掌握都需要通过在实际场景解决问题,不然就是半吊子似懂非懂,用得生硬,用得不合适,起不到效果。我相信前人总结这些理论都是在实际问题中多次抽象概括而成,然而在新的工商业场景中总是会遇到复杂得多的问题不能完美地套用。有时候更复杂的问题甚至要去研究一些论文来得出结果。但是商业上又往往有个回报率的问题,所以很多时候只是先发布一个不那么完善的版本再用更优的演算法和资料结构继续改进优化。
當你在錄這支影片時,有考慮到小明的感受嗎?
那當你在說笑話用小明這個名字時 有顧慮過他的感受嗎
@@user-in1hq6wn3v 笑話裡的小明沒這個人,所以是假議題,影片中的小明就確有其人了,除非影片說謊造假。
@@yojaychang 我的意思是 它就是個替代的名字 沒有指名道姓的說誰 我覺得如果你不是當事人或Nic 應該沒有理由去評論說他這麼做影響那人 畢竟就是他認識 而不是去針對哪個公眾人物或半公眾人物等等
@@user-in1hq6wn3v 你說對了,我只是在說個笑話,突然間就有人認真起來了,所以你要我怎麼接?
(有考慮到小明的感受嗎
除非你RD的深度很要求,不然都是通材即可,不用神話太多XD
有空可以聊聊資工所修到的數位邏輯跟電子電路嗎?實在不知道這兩科對資工本身意義如何欸...
要走硬體的話多少碰的到吧
EDA 產業
如果學校太破的話,讀電子電路沒啥意義,因為也進不了ic設計產業。
資工門檻就比較低,尤其一些前端後端真的不需要腦力,取代性太高,也沒啥前途。
這些課是豬屎屋、聯發科這些高薪工作的入門(前提是水準有到台清交成那些)
一定還是有落差的
我本身是自學
有次面試遇到 深度優先 廣度優先‘搜尋演算法
直接失敗😭
還有講師那句話真的很棒
從我開始自學的時候就是保持著這樣的信念
把自己泡在環境裡,文章看不懂沒差,先看,至少有印象
還蠻經典的,以最簡單的題目可以鑒別出對方瞭不瞭,
深度優先最簡單,比如以2元樹來說,一般中序遞迴函式就是,裡面就先走訪左,中,再右即可。
foo(Tree node) {
If node is Null
return;
foo(node.left);
print node;
foo(node.right);
}
廣度也差不多,先走訪自己,再走訪子節點(樹葉):
foo(List nodes){
List nodeList=new List();
for n in nodes {
print n;
nodeList.add(n的子節點們);
If nodeLlst is not empty {
foo(nodeLlst);
}
}
}
以最簡單的表示演算大致如上,
可以自行加上子節點怎麼抓的邏輯,並判斷是否有子節點或是null等判斷即可,走訪print可以自己改成搜尋,if node.value == target then return node;
推推~