注册一亩三分地论坛,查看更多干货!
您需要 登录 才可以下载或查看附件。没有帐号?注册账号
x
本帖最后由 brilight 于 2013-7-27 09:11 编辑
[2013-07-20]
FAQ:
1. Java程序員最好找工作,我是否也應該學Java?
我剛到論壇的時候,論壇上到處都是學Java的氣氛, 很多人建議我學Java。但由於我以前的興趣一直是C,同時對Windows的東西感興趣(比如做過Windows API 編程(不用MFC庫),熟悉Task Manager中的Process, Virtual Memory, CPU usage),後來又自學了X86彙編,對底層的東西比較熟悉。但一直對Java不感興趣,所以還是堅持沒學Java。
. 1point 3acres
Java入門容易,進階難。 C 是入門難,進階很容易。 C 的教科書非常薄,唯一難的就是pointer,但是一旦攻克的pointer,其他就非常容易了。 C的庫函數非常小,只要熟悉str系列的函數就夠了。 而Java的library非常龐大,需要熟悉各種庫函數。. Waral dи,
Application software engineer 一般的要求是:精通 Algorithm 和 Java/C++,熟悉OS或database
Embedded software engineer 一般的要求是:精通 OS 和 C, 熟悉C++和algorithm
推薦的 Embedded software 的課程:OS > Data Structure & Algorithms > Embedded Systems ~ Computer Networks ~ Computer Architecture. .
2. 如何在短時間內學習Algorithm?
.1point3acres
大學課程的Algorithm和面試題的Algorithm區別很大,我的建議是 花時間做面試題,而不是 花時間 閱讀教科書。我做crack the coding interview 的題目時,如果有答案看不懂,我就把程序輸入到電腦中debug,以理解每一步代碼的作用。如果對有些算法不理解,比如DP,Greed,Dijkstra,可以先上網搜索教程,如果網上搜索還是不明白,再回去看教科書的那一章節。 ..
3. OS的課程太抽象怎麼辦?
如果你想找Application Software的工作,OS不用學得很深。如果是Embedded 的工作,這是最重要的課程!我花了3個月修了OS的課程。要想在短時間學OS,我覺得最重要的是 做面試題,上網搜索OS知識 和 編程,而不是看教科書。OS課程中的編程練習,如果不修課的話,是自己完成不了的,因為我們沒有能力自己寫OS。而Algorithm的課程,是可以不修課自己獨立完成的。所以一定要好好珍惜OS課程的編程機會!
如果你們學校的OS課程有C和Java的語言可以選擇,我建議學C的,因為OS本身就是底層軟件,用C更能理解OS的原理。
我修OS課的時候,有很多編程的trick,有寫同學可能就囫圇吞棗,也不去想明白,而我編程的時候就要求對於每句代碼必須完全理解它的作用。比如function pointer是什麼,setjmp,longjmp的原理是什麼,jup_buf是什麼東西?不懂的要上網查。
OS課堂的知識之所以太抽象,是因為老師只是在說 general OS 是怎麼設計的,而不是說windows, linux 是怎麼設計的。
比如我的老師講 Virtual Memory的時候,說 process 有 text, data, stack, heap. 而不會說 Windows 和 Linux 的 Virtual Memory都是4GB;不會說在windows 中 default stack size是 4MB。
.1point3acres
老師在講 Process 的時候,說process有ready,running, blocked state,不會說 linux 的 process 有 interruptible, uninterruptible, zombie state.
.google и
老師在講 thread 的時候,說 thread 分 kernel thread,user thread,不會說 windows 中 所有 user thread 都對應一個 kernel thread,linux kernel中 thread 和 process 的區別沒有windows大。
我的建議就是上完每節課,要自己上網查查windows 或者 linux 是怎麼設計的,這樣就能加深理解了。. ----
[2013-05-24]
說一下背景:. From 1point 3acres bbs
..
我在UCSD 讀 EE communication Master, 碩士2年總共上了15門課,其中有12門EE課, 3門CS課。碩士EE課 學的都是用處不大的 Channel Coding, Random Process, Information Theory。 碩士第二年開始學CS的另3門課: OS, Algorithm, Embedded System 。本科曾經學過C, Computer Networks, Intel8051, 不會Java,database, OOP。在美國沒有internship, 從2月開始投履歷,在5月終於有了 Qualcomm 和 Fortinet 兩家Offer,寫此文給 EE同學找 Embedded Software 一些鼓勵。. .и
. Waral dи,
之所以上了這麼多EE課,是因為我 Master第一年的時候 曾經想讀PHD。結果到了第二年的11月時候,我才想直接工作,但此時發現 本專業 實在太難找工作了,所以決定找 software engineer 。
. Waral dи,
我開始的時候走了彎路,比較迷茫,只知道找software的工作,但是不知道software內部也有不同。我曾經把Amazon, Facebook, Google, Microsoft 當成我的目標,不停地刷careercup和leetcode。其實我後來才發現,有一個 介於軟件和硬件之間的職位 embedded software 不怎麼需要刷題,此領域最重要的是 OS和普通的data structure( linked list, array), 而高級算法(Dynamic Programming, Greed) 在embedded領域基本不會用到。. ----
2月底我參加了學校的 job fair,我投的職位 基本 全軍覆沒,投了9家公司,只有1家Vmware在3個月之後給 phone interview.
後來我逐漸意識到自己的Resume寫得太差了,既然沒有internship,這已經是缺點了,Resume 上面的project 一定要彌補這點.
我把OS, Data Structure&Algorithms , Embedded Systems , Computer Networks 課程的project都寫在了Resume上.
3月初我又在網上投,主要是硬件公司的Embedded Software 職位,還有一些小公司..
總共面試了9家:
面試難度: VMware > Nvidia > Qualcomm ~ Intel ~ Apple ~ Fortinet ~ Ericsson ~ Avinetworks > Cisco
從不理我的公司有 Arista, Sandisk, Marvell, LSI, HP, Juniper, Broadcom, TI 和很多小公司,所以說沒有internship的同學不要重蹈我的覆轍了,有些公司是特別在意internship的。. Waral dи,
|