聊聊我在温哥华工作的这几年-嵌入式开发

avatar 736677
syqkimi1115
26392
53
这段时间刚好跳槽, 休息一段时间, 所以整理一下自己在温哥华学习工作的心路历程。 我一直是做嵌入式开发的, 感觉在温哥华应该比较少人做这个,工作机会也比较少, 好多同学都去转做纯软件开发了。希望可以帮到和我一样想做embedded system的小伙伴们 或者正在读EE 的朋友们。

大学方向选择:
我是UBC electrical engineer 毕业的, 其实我们double E 专业挺多人的而且专业方向也挺多, 1. 可以做强电 比如去BC hydro, telus这些, 不过据强电同学说, 很难找工作, 主要就是坑太少。
2. 可以去做hardware design, 做芯片类设计, ASIC, PCB 之类的, 这个在温哥华基本没有工作,必须去美国。
3. 可以做nano technology, 我毕业时有教授邀请我继续跟他学nano, 当时我不知道这学出来能干啥,所以就拒绝了。
4. 可以做embedded software or firmware engineer. 这个是我觉得最贴近EE 专业,而且工作机会相对多一些的方向。
5. 转纯码。 很多人最后的选择。

Embedded software enigneer 概括:
我最后也是走上了embedded这条路, 主要还是因为最贴近自己的专业,不会浪费大学的学习内容, 做纯软件的话,一开始就应该去学CS。 Embedded system工作也分不同层, 最底层的可以做assembly language, 直接和硬件对接,不过好像我周围没什么人做这个。往上就可以做, bootloaders, UEFI/U-boot, kernel device drivers, 这些User space 之前的部分可以放在一起, 工作中基本上都会涉及。 再往上就是User space application, backend-server, 这部分就是比较high-level 一点了, 不过还是在embedded system 上。 工作中语言主要就是 C/C++.

据我这几年找工和工作经验来说, 温哥华这里招embedded engineer 最主要会用到这几个技能, ARM(需了解ARM 架构), RTOS (real-time operating system), U-boot, peripheral devices(SPI, I2C, emmc/sd, ssd, GPIO, watchdog), IPC. 同时也需要对于OS 有比较深的理解。

假如小伙伴想走embedded system 这条路的呢, 一开始找工可能会困难一些, 因为大部分半导体公司都喜欢找经验丰富的, NG 工作机会很少, 这也导致了这些年越来越少人做embedded。 所以之前我做的公司里面基本我都是最年轻的, 同事都是十年以上工作经验。 很大原因也是现在互联网公司收入太高, 导致年轻人都不愿意来做底层开发, 写C 的人也越来越少。

我个人认为embedded 虽然相对来说工作少,但是同时竞争也小,而且随着工作经验增长, 找工更容易, 是属于经验积累型职业。工作也很稳定, 很多同事一做就是十几二十年, 所以周围的人都很厉害,学习也会比较快。缺点就是天花板也不高,不能像现在热门的这些ML, big data这些方面 可以有很大发展空间。尤其在温哥华工作机会比美国少很多。比较好出路可能就是大厂去做infrastructure, 比如data center的。

温哥华embedded 面试经验:
关于embedded 工作面试 基本上对于 Algorism 要求不高,因为基本用不到, 你要是去问我们senior 去写个复杂的DP 什么的,他们也写不出。 对于data structure 会更重视,尤其是基本的data structure: array, string, linked list。对于更复杂的data structure 也不太会考到, 比如 BST, graph, 反正我是基本没碰到过。

相比较leetcode题, 我的经验是embedded问的问题会更应用, 更模糊, 需要与面试官沟通去理解题目的真正意思。 比较常见的我碰到过的面试题总结如下(c/c++):
1. bitwise operation: 能够准确的用bitwise operation 解决问题, 善用mask, 不要用magic number, 尽量多用macro。
2. circular buffer, stack, queue: 非常非常常见, 很多温哥华公司会考,重点学透。
3. interrupt: 非常常见, 很多公司会考,有些会问你interrupt 概念, 有些会让你写个timer interrupt之类的。
4. IPC, interprocess calls: 需要理解并使用常见的IPC calls.
5. multithread, deadlock: 非常常见。
6. mutex, spinlock: 善用mutex 和spinlock 去控制resource的使用, 同时要避免deadlock。
7. Scheduling: 懂得使用不同的task scheduling 方法, 会写基本的scheduler.
8. C standard library: malloc, calloc, free, memcpy, memmove, strcpy, strncpy, strcmp, strstr, strtok: 这些基本的c lib function,不仅要会用,还要自己会写(重点)
9. system design方面,主要就是会让你设计一个embedded system, 比如红绿灯, 停车场, 收银台之类的。

先就想到这么多, 总的来说考的基本还是比较实用的, 工作中也都会用到。 对于OS的理解一定要深刻, 可以看看youtube教程, 我也没系统学过OS, 都是看视频自学。小伙伴对于面试有什么疑惑也可以私聊我。

温哥华Embedded 工作选择:
就温哥华来说embedded 的工作机会比纯码少很多, 而且embedded 门槛更高, 因为在写代码的同时需要很深的硬件背景。 收入呢不会比纯码差太多, 但是呢升职比较慢,不像纯码, 很容易make impact, 除非跳槽。 所以想要做这行的小伙伴真的需要很强的兴趣。我自己以前主要是写bootloader 和 kernel device drivers 的, 我还是很喜欢的,特别喜欢去读datasheet, specs, 然后play around with registers.


温哥华这里呢还是有一些不错的公司做embedded,虽然没有美国选的多:
1. Microsoft:可能很少
2. Amazon: 相对较少,但是Alexa, HALO, AWS 有少部分做embedded相关的infrastructure 或者data center。
3. Intel (sk hynix): 传统半导体企业,现在机会很好,他们做SSD,在扩张,有好多个职位,未来有IPO 可能性,被SK 买了以后是private company. 不过我拒了他们senior offer.
4. Broadcom: 传统半导体企业, 公司很好,股票给的很多,但是不太招人。
5. Microchip: 以前的PMC-sirra, 也是经典半导体公司, 待遇也不错。
6. Arista: 做switch的, 用broadcom 芯片, 在温哥华一直在扩张。听说未来一年还有大量扩招。
7. Forinet: 华人公司, 不是传统半导体, 不过很多embedded 工作。
8. MDA: 加拿大本土做Sattlite的, 好像有些职位要求加拿大护照。
9. Sirra-wireless: 也是加拿大本土公司,不过待遇稍差。
10. 其他一些但是招人特别少: apple, huawei, Motorola, etc.

以上这些就是我自己了解的温哥华本地的公司了,可能不完整,欢迎补充。

总的来说, 个人还是很喜欢embedded这个行业,尽管机会会比纯码少,但是觉得学的东西都可以累积, 更新换代也很少, 经验是最重要的, 同时也具有挑战性。 但这条道路还是蛮孤独的, 同龄的做这个的少之又少。 基本都去转纯码了。 以上这些都是个人经验总结, 可能有一些不准确的地方,欢迎大神指正。 同时也欢迎同行喜欢做embedded 的小伙伴们一起交流, 共同进步, 也可以一起做做side project 什么的。有同是学EE 的在困惑选择职业, 或者embedded面试需要帮助的也可以问我。 我的邮箱是: 1point3acres.com

另外如果你觉得有帮助的话,求大米 T.T。

补充内容 (2021-07-06 23:37 +8:00):
感谢各位小伙伴的留言, 补充说一下。
假如是New grad, Embedded工作确实相对难找, 尤其对于传统半导体公司,基本不愿意带新人。 很多都是Sr. 或者principal起跳。 所以对NG, 可以去看看大厂的infra部门,常年缺人,而且愿意招ng。 实在不济就去小公司学经验。 一旦有了3年左右经验,再去找的话就是很吃香了。很容易拿Senior position (半导体公司)。 大厂也能拿个intermediate职位。所以感到迷茫和挫败的同学也不要气馁, 我觉得这个行业还是越老越吃香的,所以坚持下来,也是能做出一番事业的。
  • 125
置顶回复
收起
avatar 777233
666coder
也给几个多伦多/万锦市的坑

多伦多:
Ecobee - Google Nest Competitor, 公司较小,有几次lay off
Soundhound:这个是shezam的competitor,其实他家不是做嵌入式。但是他家的voice recognition是用C/C++写的。有个做嵌入式朋友转过去做。
Cisco - 不多说
nanoleaf - 小公司,做灯泡的
Nymi - 小公司,做一个ECG device
Intel - 以前是Altera,做FPGA的
MMB Network - 小公司,帮其他大的公司做IoT通信
方块Square - 几年前买了个加拿大公司
Thales - 做火车信号

万锦
AMD - 以前ATI总部,时不时会招Mac OS/windows driver developer
Qualcomm - 很久以前高通买了ATI的一个组,现在有在做automobile
IBM - Compiler Optimization,面过一次,感觉组的气氛不是很好。
Evertz - 做通信
Extreme network - 还是通信
大米 23
3
PeterBaoruixin+2很有用的信息!
DeerWay+1赞一个
admin+20很有用的信息!
53条回复