深圳市易通互联科技老板善于画大饼,对于这种老板你会怎么办?

不得不承认,22届继续倒挂21届!21届上岸的老学长已经哭晕在厕所。

今年各个岗位的薪资比上一年都增加了一个档次,在我建立的秋招上岸微信群中,看到了不少厉害的大佬!有双非本科进大疆的,有双非本科拿下oppo sp的,还有大佬拿下 英伟达 55W总包的。

我邀请了几位读者,把自己的秋招经验整理下分享给大家。今天分享的是一位在秋招中屡次拿下各大厂SP的读者。

希望这些经验能对大家有帮助。更多面试经验可以看 这个专栏:

来源:公众号-嵌入式与Linux那些事

本科双非, 机电学院某小众专业, 要学的课程有机械/计算机/管理等, 比较杂。后面看本专业实在不感兴趣, 就决定考研计算机. 读研在某985计算机学院, 做的嵌入式方向.

本科的时候先是学习了C语言, 然后接触到单片机, 觉得自己的兴趣点在这里。

大二时加入了学院的机器人团队, 开始学习STM32, 参加过一些机器人比赛。大三退出团队以后, 比较迷茫, 不知何去何从, 思考很久以后决定考研计算机。

读研期间, 研一期间是用MSP430做导师的横向项目, 研二下开始学习FPGA, 使用FPGA辅助单片机, 帮助师兄搭建论文原型。

我对底层比较感兴趣, 用FPGA复现了一个MIPS流水线CPU。总体来说, 自己的知识偏向底层硬件开发, 对于Linux/RTOS这些, 自己一直想学, 没有项目做, 学得比较一般, 也成为了我面试过程中的短板。

秋招投递及offer情况

今年嵌入式的秋招7月份就已经如火如荼进行了。 不要觉得时间太早还没准备好, 要在实战中提升自己, 正式批一般都会更难, 而且提前批更容易拿到sp。

我投的基本是嵌入式软件开发岗, 有一些是驱动开发。拜美国制裁中国所赐, 今年IC岗随便白菜价就是40w年薪, 嵌入式软件开发近水楼台先得月, 很多同学都能拿到35w以上。这在以往是不可想象的。

大华,小米, vivo ,oppo ,乐鑫, 联发科技, 汇顶, 大疆 ,蔚来 ,海思 ,全志, 壁仞 ,海康 ,锐石 ,芯动 ,联影微电子, 紫光展锐, 星宸, 瑞星微, 荣耀, 禾赛 ,诺瓦, cvte ,燧原 ,寒武纪, 地平线, 科大讯飞, 德州仪器 ,中科芯 ,中兴 ,阿里云 ,美团, arm, 360, 美的 ,哈罗出行, 英伟达 ,恩智浦 ,小鹏, 中国电信,

我拿到的基本都是sp或以上级别, 具体如下(城市为深圳杭州东莞广州):

小马智行, hr说面试通过, 当前还未开奖。

华为海思, 严格来说还没拿到, 只是面试通过, 面评还可以, 泡池子很久了。

cvte, 通过所有面试, 但是一定要去实习一个星期才能拿到offer, 折腾谁呢。

在本科的机器人团队里面, 学习了STM32, 并且用它来做过中国机器人大赛。比赛内容是武术擂台机器人, 我做的部分主要是编写陀螺仪的驱动程序, 检测机器人的姿态, 在跌倒时可以站立起来。

本科的这个项目面试的时候问得不多, 问到的话, 都是一些非技术性问题, 比如主要负责什么工作, 从中学习到了什么。

研一的时候做了两个MSP430相关的横向项目。 项目大同小异, 业务功能也不复杂, 主要就是通过传感器采集环境中的某些数据, 然后通过4G模块/RF模块将数据传送出去, 有一定的低功耗要求。

这两个项目本身功能不复杂(直接裸机while(1)循环搞定), 所以我第一次面试vivo把它们写到简历里去就直接翻车了。

估计面试官问完我的项目以后, 内心想法是"就这? 你也好意思拿来面试?"

所以后面我调整策略, 就没有把MSP430的项目写入简历里去了, 简历里主推我的FPGA项目。

但是这两个MSP430项目虽说功能简单, 也是我呕心沥血做出来的, 不能白白浪费了精力。后来策略就变成面试的自我介绍环节口头叙述这两个项目。

在本科那会, 因为STM32市面已经很多现成的资料了, 单片机的初始化代码/传感器的驱动代码大多都已经有别人做好了, 我们只需要拿来用就好, 这样导致我一直没有掌握从0开始写代码的能力。

在研一的时候, 我想好好利用这些项目锻炼自己的能力, 实验室用到的MSP430型号比较新, 我就自己去啃数据手册/用户手册, 故意不去参考官方的例程(实在写不出来再参考), 把单片机的代码从0写了出来。

对于传感器部分的代码大致也是这样的编写过程, 自己去死磕数据手册, 过程很累(有些数据手册提供的信息有误), 但是感觉是真正锻炼自己的地方。

印象深刻的一次是为了方便自己调试, 决定要再MSP430里使用简化版pritf()函数, 然后去找TI官方的编译器文档, 了解MSP430架构的汇编指令集和C语言到汇编的调用规则, 最后把pritf()实现出来也是挺有成就感的。 (现在其实忘得差不多了哈哈)

所以我觉得我研一其实做了挺多事情, 但是无奈项目的功能实在简单, 面试吃亏。

我的策略是, 在自我介绍时这样说: "研一做的这两个单片机项目功能比较简单, 它们的功能是balabala, 所以我没有写到简历里去, 但是整个项目基本是我一个人完成的, 这款单片机的资料也比较少, 我就锻炼自己阅读官方第一手资料, 从0开始写代码的能力, 也锻炼了我查找信息的能力."

大概就是这样, 说完以后就会切入到我的FPGA项目.

到了研二下学期, 也就是2020年年初那会, 全世界疫情闹得正凶, 我也只能呆在家。 还没开学, 师兄就叫我学一下FPGA, 后面要做项目。

当初学FPGA也比较痛苦, 我看原子的教程, 跟着他写代码, 好像代码会写了, 但是面对师兄的项目完全没有感觉, 不知从何开始。

关于FPGA的教程, 我比较推荐野火的, 无奈野火的在那时还要等大半年才出来, 它们的教程一出来我就下载了电子版, 读起来确实好舒服。

我做的FPGA项目(用单片机来辅助调试了)一个是关于热插拔的, 一个是关于无线信道带宽利用率的。这两个项目就成为了面试中的主打内容。复盘这两个项目也用了好久时间, 和师兄讨论有些地方为什么要这么做, 项目的意义(从工程意义上和从科研意义上)何在, 总之是想了好多面试官可能会问到的问题。

因为这两个项目整个工程都是我一个人完成的(包括协议设计, 所有代码的编写, 仿真测试, 下板子做实验), 所以和面试官也比较有得聊. 不过有的面试官很赞赏, 有的觉得我的项目一般般, 有的觉得其实我没干什么。

其实说句心里话, 我觉得这两个项目确实锻炼到我, 但是从实际意义上来看, 我觉得这两个项目意义是不大的, 它们最大的意义是帮助我拿到了offer。 所以说服面试官相信你自己也不太相信的事情, 也算一个挑战。

话说回来, 当如让我学FPGA做项目我是心里不太愿意的, 我心里真正想学的是嵌入式Linux, 软件的带操作系统的东西!

可是师兄哄着我做, 我想着我不做他也不好毕业(他是博士师兄), 算了吧就这么做下来了。

学完FPGA后, 想着别白学, 又自己去做了一款流水线CPU(自己动手写CPU.雷思磊著), 放到FPGA上跑。 哎, 没想到误打误撞, 师兄还帮助我不少, 让我秋招有实在的项目, 过程也比较顺利。 其实我们实验室其他同学都没什么拿得出手的项目, 导师的项目都是一些简单的curd, 最后它们拿的是本科的项目包装了一下, 实验室其他同学找的是互联网工作, 秋招过程并不顺利。 不管怎样, 还是要感谢我的师兄吧!

这里截图放一下我的简历吧。理工科的简历不用太花哨, 把你会什么, 做过什么写上去就好。

我做简历也很简单, 先在word文档搞一个表格, 然后在里面填内容, 调格式, 在表格的限定下格式不会乱, 做好以后就把表格设定成隐藏线段。

  1. 单片机, 主要看野火的STM32教程。
  2. RTOS, 跟着野火的RT-Thread那本电子教程写了一遍RTT的内核代码。
  3. 嵌入式Linux, 主要B站学习韦东山的嵌入式Linux快速入门课程, 他的裸机视频(imx6ull)我也看了, 校招的话, 其实这些知识储备基本够用。
  4. 学了FPGA, 还准备了CPU流水线的知识, 在面试ARM的时候用到了.

这里跑个题, 说一下韦东山和野火的教程吧

感觉韦老师的教程只适合快速上手, 很难深入学习, 他的快速入门教程我反反复复把驱动部分看了4遍, 面试过程中很多问题也能回答上来, 但总感觉自己还没有学到原理性的东西。

后面尝试去看驱动大全, 感觉有点跟不上。我觉得韦老师Linux教程最大优点也是最大的缺点, 快速入门。

比如说, 写第一个hello驱动, 他会告诉你, 申请, 设置, 注册, 创建几步曲, 让你很快看到现象结果, 先有成就感, 但是他会告诉你class_create()不重要, 写下来就好(这种教学观点一直贯穿全程), 这个过程下来, 我确实很快写出了第一个驱动, 第一个平台驱动, 第一个设备树, 但感觉就是亦步亦趋, 我跟着他摸石头过河, 他没带我摸过的石头, 我就不知道该怎么办了。

最近秋招结束, 我空下来去翻了一下野火的Linux教程, 野火的教程风格就是, 一步步来, 从上到下, 带你认识内核的生态, 我觉得你去学一门新的技术, 生态感真的挺重要, 这能让你置身这个世界中, 然后你就不会去疑惑这一步为什么这样做, 而是觉得自然而然就要这样做。

这一部分是我觉得野火教程远远好于百问网教程的地方, 最近我也跟着野火的教程重新学习驱动开发, 感觉收获了很多。但是缺点是, 野火的视频教程真的实在劝退初学者啊, 基本是"深度优先"的方式去讲解知识, 就算我前面学习过韦东山的, 看起来也头晕, 后面我就直接不看视频了, 直接看他家的pdf, 发现写得还不错, 有些小瑕疵, 凭着前面的基础, 很快能克服(但对于初学者来说, 可能是一道坎)。

但是无论如何, 还是要感谢韦老师能做这么多免费视频, 帮助我秋招找到了工作, 后面也想购买他的驱动大全来学习一下.

学习的过程中, 要多想, 我不否认韦老师和野火的教程都很优秀, 但是教程里有些地方其实没有解释清楚的, 有的地方是错误的, 如果不搞清楚, 往往就会成为面试中的一个坑。

比如我在看韦东山的驱动大全的时候, 讲到arm内核如何实现原子操作, 基本原理是使用ldrex和strex指令。

韦东山的教程是这样描述的:

我一开始也没想太多, 觉得内核这样实现原子操作很精妙, 可是后来和同学讨论的过程中, 发现这种解释是行不通的, 我们设计了一种运行场景, 拿到百问网上提问(我百度搜, 竟然没人觉得ldrex和strex有任何令人疑惑的地方), 最后韦老师也思考了好久, 才说自己的教程搞错了。具体是什么我截图下来:

还有一个例子, 我同学面试过程中遇到的。为什么快排最坏的情况是O(n2)。我当初学的是王道那本算法, 只是说元素基本有序的时候, 每次划分都不均匀, 所以是O(n2), 我也就接收了这种说法。

但是面试同学的这个面试官, 一直不满意, 不是这么糊弄过去的。 最后百度了一会, 才知道, 为什么是O(n2)是要用主定理来推导的.

所以自己学习的过程中要多思考. 很多时候看起来很合理的解释, 往往隐藏一些谬误, 然后就会成为面试中的坑.

很多搞嵌入式的同学, 都觉得算法不太重要, 刷题的话, 链表/字符串这些搞定就好了。 但是如果你没什么好的项目或者说想拿更好一点的offer的话, 多刷算法题还是很必要的。

我想起了4月份那会, 参加海思的实习面试, 面试官给我出了一道easy题, 我又菜又紧张, 写了近二十分钟, 没写出来, 最后面试官叫我秋招好好准备。那时候真的好尴尬, 也没办法侥幸认为算法题不重要了。然后开启了我的leetcode刷题旅程。

一开始刷起来没什么章法, 有些题目, 现在会了, 后面不会, 看了官方解答, 好像懂了, 其实没懂, 只是记住了而已。 一开始刷的的一个多月, 确实有点灰心丧气的, 感觉花费在刷题上的功夫不少, 还是没什么长进。

后来, 我慢慢形成了自己的刷题方法, 分类刷, 自己写题解, 用word做笔记, 记录下来每一次自己的思路, 写下来的代码也要记录在word文档中, 并且用一个文档记录刷的每道题的日期。

重点是题目要反复刷, 在反复刷的过程中, 你会发现经常有这些情况:

  • 这道题以前(某月某日)一下子就想出思路, 隔了n个星期这次堵了好久没想出来;
  • 这道题以前代码写得好简洁啊, 我现在写的什么78玩意;
  • 之前写代码的时候, 这一行没想太多就这么写了, 但是现在发现好像又不是那么理所当然, 然后又发现了自己一个思维中的弱点。

当然, 惊喜时刻还是有的, 比如发现这次写的代码比之前简洁好看多了, 这次的解题思路比官方的比之前的都要更自然更好理解了。这样用word文档记录, 就发现自己在打怪升级, 将自己的螺旋式成长清晰可见得记录下来, 就很踏实, 很有成就感。

我刷题的题目是跟着"leetcode101"这本电子书上的题号来刷的, 这本书github上能找到. 它上面题目的归类很不错, 但是题解真的很烂! 我刷过的专题有: 双指针, 贪心, 二分, 排序, 搜索, 动态规划, 数学, 位运算, 栈/队列, 字符串, 链表/树/图。

两个word文档, 一个用来记录思路和代码, 一个用来记录哪天刷了什么题目, 并且可以简单记录下刷这道题的情况。

第一, 重要的是重复。

第二, 是要学会死磕, 准备拿一大块时间, 告诉自己, 我就是要拿下背包/n皇后/二叉树的各种遍历方法。

很多时候, leetcode的题解并不符合我自己的思维习惯, 学习起来真的死活不懂那种痛苦啊, 然后我就撒手不看, 自己对着代码发呆, 手动模拟, 脑海想想数组/节点在跳动变换, 然后就一瞬间, 我明白了算法是怎么回事, 代码要怎么写, 跟着别人的教程自己很难懂。.我就是这样搞懂了背包动态规划, 空间压缩, 二叉树的moriis遍历等以前怎么都不明白的问题。

第三, 尝试让自己喜欢上刷题吧, 不然算法这玩意, 带着强烈的认为到了秋招才不得不刷的情绪, 很难学的, 很容易急躁, 有些思想, 想得懂想不懂就是那一瞬间, 急躁的话基本想不懂。

第四, 如果实在没时间, 就刷链表链表链表! 反转链表, 合并链表, 找交点等等, 总之, 把力扣上链表的经典题目刷烂. 第二重要就是二叉树了。嵌入式基本是链表和二叉树.

这是我leetcode刷题的整体记录. 从3月中旬开始的. 我刷了240道题, 但是提交了1500次, 重复了很多遍.

下面截几张word文档里面的内容.

(将自己犯了每一次粗心大意记录下来, 确保以后不会再犯)

(自己学习Moriis遍历树, 看官方题解死活不懂, 自己死磕了好久, 才发现可以这样看待后序遍历, 瞬间清晰Morris的后序遍历该如何写)

如果你的目标是sp或以上, 最好要多刷各种题。可以预料的是, 今年嵌入式薪资涨了一波, 明年会卷起来, 更卷的情况下, 只能多考核算法题了。

先是自我介绍, 这是我秋招第一场面试, 整个自我介绍磕磕碰碰, 有一会紧张得有点说不上话来.

介绍完以后, 面试官挑了我简历上写得msp430项目来问, 当时就感觉不太对劲, msp430的项目只是我用来凑数的, 项目的功能也很简单, 很多细节也忘记了。

后面他问我为什么单片机里面会有ADC呢? 我反复问了几遍为什么没有? 他也反复问了几遍为什么有。最后拗不过我, 就接受了单片机有ADC这个设定。 我也是晕了, 难道是故意给我压力的吗? 还是他真的不懂? 现在市面上随便哪个单片机不内置一个ADC模块进去? 反正这么来回, 我就感受到我的面试要挂了. 最后他然我写一个shell程序, 我说我不会, 面试结束。

这场面试完以后, 确定无疑的是我遇到了一个sb面试官。后面确实挂了。

反思一下自己, 简历做的不够好, 对以前的项目不够熟悉, msp430的项目后面我就不再放了, 主推我的FPGA项目, 然后对两个FGPA项目也复盘了好久.

自我介绍这一块, 在修改好简历以后, 经常会在脑海里排练, 后面面试的自我介绍没有崩过了。

  1. 聊项目, 两个FPGA的项目
  2. 问如何tcp保证可靠性
  3. 问如何tcp超时重传时间如何设置(越问越深, 不会)
  4. 单核操作系统如何实现宏观并行?
  5. 操作系统的时基设置成多大比较合适?
  6. 手撕代码:设计一个软件定时器(主要考核单链表操作 写了有半个多小时)

写这个题目的时候, 一开始没理解题目的意思, 折腾了好久, 估计是挂载这里的

整个面试过程70分钟, 累!

自我感觉良好 然后挂。

  1. C语言的编译过程是怎样的?
嵌入式面试最热门问题之一, 就是预处理, 编译, 汇编, 链接, 加载这些, 自己对中间过程要熟悉.
  1. 全局变量可以和局部变量同名吗?
答: 可以. 程序会优先使用局部变量.
  1. 算法的时间复杂度是怎么得出来的?
(答不上来, 后来想了一下主要是说怎样去掉中间项的过程?)
  1. 写中断程序的注意事项?
这个也是高频问题, 一般的我的回答是快进快出, 最好不要嵌套, 不能休眠.
  1. 字符设备和块设备的区别?
"LINUX设备驱动程序(第三版)"这本书的第14页有介绍。字符设备能够像字节流一样被访问, 大多数字符设备只能顺序访问。块设备进程IO操作时, 每次只能传输一个或多个完整的块.
(主要是我说有FPGA经验, 他才问, 答曰几十个吧)
  1. 是否有奖学金和项目比赛经验?
中间扯了一下项目. 问主要负责什么.
  1. 说一下个人优势和劣势(感觉说得不太好, 之前没仔细想过)

  1. Linux驱动学了哪些知识?
我按着韦东山教程的知识结构给回答了过去.
  1. 如何实现一个双向链表?
  1. 如何判断一个网络数据的字节序?
  2. 两个线程都执行a++100次, a的值是多少?
我义无反顾地回答200!(真是错得离谱)。答案其实是1~200之间都可能.

问个人的兴趣爱好, 生活习惯, 未来规划, 是否愿意去杭州发展等.

一直在聊项目, 没有问技术问题, 后面聊部门主要工作, 联发科的发展状况, 薪资意愿.

对自己的项目要很熟悉才行, 我直接给他上手画框架图讲解协议包, 对面也比较满意.

综合面 技术问题, 团队合作, 人际沟通, 加班问题都有涉及.

你永远可以相信发哥不加班.

主要聊项目 后面聊了很多低功耗话题 问GPIO的工作模式 NVIC等等

低功耗这一块, 结合我后面的面试来看, 有不少做嵌入式产品的确实很在乎功耗, 所以如果自己在简历里面写了低功耗追求, 最好去了解以下功耗有多低, 具体如何实现的.

这次面试我也是运气好, 前一段时间, 师弟有一个项目是STM32低功耗采集数据的, 然后我特意看了一下野火STM32电源管理这一部分, 看得不算仔细, 没想到全用上了.

GPIO的工作模式, NVIC等也是看野火的PDF的, 野火的资料太好用了.

综合面,如何保证产品交付的可靠性,还有对汇顶的问题提问.

后面拿到了汇顶的SP, 给到了40w总包, 第一次知道嵌入式可以这么顶的.

能提前批还是提前批啊, 后面很多参加汇顶正式批的, 听说难度增加了不少.

hr跟我说月薪24k的时候我是没什么概念(第一次谈薪), 然后跟我说了好长一串, 来了一句总包大概40吧, 我先是一愣, 反复问了好几次, 你说多少? 然后才反应过来, 我去, 40w!

我没想过嵌入式总包可以去到35w以上.

先签了. (毁约金24k, 后面果然毁了).

  1. 讲一下Linux对中断的处理.
  2. 讲一下自旋锁与互斥锁.
  3. 自旋锁和互斥锁哪个可以在中断里使用? 为什么?
答: 自旋锁可以在中断里面使用, 互斥锁会引起阻塞.
  1. 讲一下读写锁. 读的时候可不可以写, 写的时候可不可以读?
答: 对读写锁不是很熟悉, 面试官并不是很满意我的回答.
  1. 熟悉内存吗? 讲一下物理内存和虚拟内存.
  2. 讲一下用户调用malloc函数是怎样一步步执行到底层的内存分配函数的?
  1. 系统调用有哪些? 执行过程是怎样的?
常用的有open, read, write. 对应驱动层有open, read, write函数, 执行到低下会触发一个软件中断, 从而使系统进入内核态, 完成后续读写工作.
  1. 内核空间的数据如何传到用户空间?
  1. 一块物理内存可以被映射两次吗? 具体来说可以被用户空间映射以后再一次被内核空间映射吗?
瞎扯了一会表示这题也不会.
  1. 平时是怎么学习Linux的? 有没有买开发板.
我: 我用的是IMX6ULL这款开发板, 因为最近比较流行. 他: IMX6ULL不是挺旧的一款芯片了吗? 我: 主要是大家都推荐用这款芯片的板子来学, 资料也比较多, 我就选了这一款.
  1. 有没有使用git? 怎样在github上克隆一个仓库.
  2. 聊了一下团队该如何分功合作. 如果团队有一个人好吃懒做怎么办?
首先我会尝试和这个人沟通, 如果沟通无效, 就团结那些愿意干活的人.
(这点自己平时其实没有多想, 只有模糊的大概的规划, 后面要补上.)
  1. 你是如何看待芯片公司与产品公司的?
  2. 有了解我们公司吗?(联发科, 汇顶, 大华也问了, 以后面试前还是要多做好预习)
我说主要是做音视频芯片的. 然后他说了一堆它们公司的规模, 业绩和业务(大概就是公司处于增长期, 有联发科的投资, tplink, 大华, 华为都是他们的重要客户). 期间有说到深圳今年大概只招十来个人, 我心里想怎么这么少.
  1. 问我还有什么问题? 我问深圳那边的主要业务是什么?
主要做Linux内核的驱动.

结束对话前他说了一小段话. 首先我笔试做得不错, 在对话过程中感觉我的知识大部分都只停留在书本层面, 感觉实践比较少, 技术还需要多打磨. 我说是的, 平时实验室事情比较多, 也在努力学习, 后面要多加学习与实践.

他继续说深圳那边有比较多我本科学校毕业的同学, 然后又是平常工作怎balabala.

整个面试过程下来, 好些技术问题答得不好, 但从后续的对话来看, 面试官应该会放我过, 不然和我介绍他们公司的平常工作干嘛? 个人感觉这家公司处于初创期, 也确实是在走上坡路, 公司规模不算大, 但在扩大. 在offershow上查了一下, 不高不低, 也还可以吧. 福利方面听说是双休+12天年假, 一年两次调薪机会, 年底双薪(这个感觉就一般), 有体检之类的.

后来才知道双薪不是1个月年终奖的意思.

而是12月份发两个月的工资, 年终奖另计。

虽是965, 但是五天有三四天都要晚上8点多下班.

一年两次绩效考核, 一次晋升机会.

新人进去有一个半月的培训, 大概一年会接触实际的项目.

公司经常组织员工学习。

她说如果我有80%的意愿去星宸, 就给我发意向书.

自我介绍, 然后技术问题轰炸

修饰函数定义 修饰函数内部变量 修饰全局变量
  1. 如何定义一个数组指针, 指针指向整型指针?
  1. 如何定义一个指向函数的指针, 该函数有一个整型参数, 返回值类型为整型. 如何定义长度为5的这样一个数组?
答: 可以. 详细解释网上一堆.
  1. 如何对整型数a的第10bit置1和清零?
  2. 如何不使用第三个变量交换两个变量的值
  1. 如何让绝对地址0x2001存储整型数3?
答: 是一个很大的无符号数.
  1. 0x在小端模式存储方式是?
  1. 给定一个整型变量a, 如何判断它的无符号还是有符号?
  1. 一个结构体有short char float int, 怎样安排占用内存最少, 是多少? 怎样安排占用内存最多? 是多少?
  2. C语言的内存布局(文本段 数据段 BSS段)
  3. 内存碎片是什么? 如何产生的?
  4. Linux启动过程大概是怎样的?
答: 有MMU才行. MMU的作用是虚拟空间和权限保护. Linux是有线程和进程的概念的, MMU为每个进程提供了虚拟的4G内存空间, 使得每个进程互相隔离. stm32没有MMU部件, 只能运行RTOS, 里面没有进程和线程的概念, 统一称为任务, 任务之间是共享地址空间的, 如果一个任务奔溃了, 会使得别的任务跟着奔溃。 今年有一本新出版的书, 叫做"嵌入式程序员的自我修养", 我是从上面得到的知识.
  1. 在linux中, 如何使用命令获取文本文件的最后20行?
  1. 优先级反转的危害? 有什么应对措施?
野火rt-thread那本书关于优先级反转介绍得很清楚. 嵌入式面试涉及到RTOS也喜欢问这个问题.
  1. 有没有使用过低功耗协议? 没有

后面面试官让我等一会, 找经理过来和我聊了一会, 经理问我还有什么问题. 我问了他们组主要工作, 工作地点有无深圳, 企业文化等? 答无深圳岗. 感觉要凉.

这个公司是C语言狂魔吗, 问那么多C语言问题, 一点项目都没有问.

后面约我二面, 考虑到是上海的, 拒了.

然后聊FPGA项目, 刚开始沟通出现了误解, 看到面试官老是露出疑惑的表情, 感觉他不是很满意. 聊到后面才发现一开始我对某个概念的理解和他的理解出现偏差, 导致跨服聊天. 后面纠正过来, 又把项目的思路表述了一遍, 应该还是比较满意. 后面抽了三个简单的C语言问题, 还有ARM的中断类型. 感觉面试官有点想问什么又不知道该问什么了.

问的还是比较多不会的, 主要是Linux相关和ARM架构相关的. 不过挑一些会的来讲, 应该能过.

Linux系统由哪几个模块组成.

后面通过了约我二面, 成都的岗位不想折腾, 就拒了.

和面试官聊项目, 互动了几个问题感觉他不是很感兴趣.

问我有没有做过竞赛, 我说本科作过.

问我对职业发展的规划.

问我还有没有什么要问的. 我尬吹了一波紫光.

整个过程不是很顺利, 面试官表现得无聊又疲倦, 打了几个哈欠.

确实挂了, 不过展锐真的给得好低.

聊项目比较多, 问了一些简单的C语言问题.

这个应该会挂, FPGA不是我专长

聊天, 问一些项目相关的, 以及个人情况, 薪资意愿等等.

好久没消息, 2021年8月27日查了一下 二面挂了

面试官就没有提前准备, 面试的时候才临时看我的简历.

问了一些Linux驱动相关的问题, 没有答好.

最后问题爬楼梯(力扣原题)的算法思路.

聊天, 关于性格, 职业方向, 期望薪资, 连最喜欢的小说人物都要问.

没有自我介绍, 上来就问我的项目.

然后针对项目聊了有二十分钟. 感觉他对项目要解决的问题以及应用场景不是很认可. 还会涉及我在项目中的主要工作. 后面想问我TCP的知识, 我简略答了几句, 直言我对TCP研究不多. 又瞎扯了一会. 他哪边感觉可能我的技术和它们研究的不是很符合, 暗示我的简历可能会被推到其他部门里面去. 算是挂了.

阿里在杭州, 没打算去, 投这个也是想体验一下互联网大厂的面试.

后面了解到阿里云的价格是30*16, 签字费有5w有8w.

聊项目, 面试官对我的项目还是比较感兴趣的.

然后问了几个简单的技术问题.

  1. 我看你项目简历写到对算法有一定的了解, 你能说说除了冒泡以外还有什么排序算法吗?
答: 插入, 选择, 归并, 快排, 堆排.(到这里我以为他要我手撕一个排序了, 结果没有)
  1. 讲一讲归并排序的思路.
答: 归并排序其实是一种基于分治和递归思想的算法, 先把数组的左半部分归并排序好, 然后把数组的右半部分归并排序好, 然后合并左半部分和右半部分. 算法的时间复杂度是O(nlogn).
答: 用来同步和互斥. 如果初始值为0, 则用于同步, 如果初始值为非零, 则用于互斥.
  1. 信号量和互斥量有什么区别?
答: 互斥量首先可以认为是初始值为1的信号量. 除此之外, 根据我阅读RT-Thread的源码了解到, 互斥量拥有所有权, 递归访问和防止优先级反转等特性. 注: 这部分其实是从野火的RT-Thread内核与实战指南了解到的.
答: 互斥是死锁的必要条件之一.

在面试前一天, 从一位投小米C++岗的同学口中了解到, 小米要手撕代码, 难度是简单和中等. 然而面试官并没有让我手撕, 可能是嵌入式对算法要求不高.

他说他们部门做RF开发的, 比较偏通信, 看我的简历, 似乎对Linux比较感兴趣, 问我能不能接收入职以后做通信这一块.

然后给我介绍了他们通信技术组的三个方向: 协议方向, 驱动方向, RF方向.

我说, 没问题. 不过我坦白说我在计算机学院, 平时对通信了解不算很多, 不知道技术上能不能达到你们要求. 他表示, 你们这一届, 简历都比较好看, 动手能力都挺强, 我们看重你们的学习能力, 可以进来以后再学.

接下来问我有什么兴趣爱好.

我说平时锻炼一下身体, 周末去找吃的.

到此为止不到10分钟, 他就想要结束面试了.

我心里想, 这也太快了吧.

他好像也意识到太快了. 让我问一些问题.

我说, 你刚才说的几个方向, 不是特别理解, 可以再详细说说吗?

然后他就详细说了一遍.

整体下来感觉就是, 小米就是组装厂.

最后他让我说说做项目的过程中遇到的体会深刻的经验.

然后我就说了一个解决bug的过程.

终于把时间拉长到接近半个小时了.

小米不加班还是比较可靠的.

介绍项目, 面试官就项目简单问了几个问题, 然后就完了.

感觉被刷kpi了, 面试官对我的项目不是很感兴趣, 对话过程中好几次感受到他注意力不在我这里.

想吐槽一下荣耀对面试的组织, 先是提前一天发邮件告诉我第二天早上9点开始面试. 然后早上九点, 根据指引进去一个线上会议室, 发现里面是hr在主持的多人会议室, hr说面试官在看同学们的简历, 等会会叫号. 我等了一个小时才轮到我面试. 体验不太好, 也可能是荣耀第一年校招, 没什么经验.

在项目中遇到的问题, 具体是怎么解决的? 要偏技术细节一点.

反问: 你们部门是做什么的?

他: 媒体业务, 具体是音视频图像处理.

这次是综合面试, 技术问题和非技术问题交叉着问, 主题偏非技术.

整个过程还是比较顺畅.

  1. 有阅读过Linux内核的源代码吗?
答: 没有专门地阅读过. 之前学习到Linux内核驱动, 遇到相关知识会深入一点看源代码.
  1. 熟悉Linux的内存管理吗?
答: 了解得不是很多, 大概知道是有一个伙伴系统. 不过Linux的虚拟内存有一定了解, 是之前学习MMU模块的时候学的.
  1. 能讲讲伙伴系统吗? 还是只是知道这个名字?
答: 伙伴系统就是内存块大小为2, 4, 8, ..., 这样的2的幂的内存, 大小一样的内存块称为伙伴. 分配的时候从小到大查找适合的内存. 释放的时候找到同级别的内存块, 合并成更大的伙伴.
  1. Linux的信号量和互斥量了解吗?
答: 其实不太了解, 不过之前阅读过RT-Thread的源代码, 对这个操作系统的信号量和互斥量比较熟悉.
  1. 那你说说RT-Thread的信号量和互斥量.
答: 信号量的取值可以为0, 1, 2, 3等等, 而互斥量可以取值为1. 他们具体的区别可以从控制块定义看出来, 信号量只有信号量的值, 以及阻塞在这个信号量上的线程的链表, 而互斥量还有持有者, 优先级等域. 归纳来说, 互斥量对比信号量有3点不同: 1. 所有权; 2. 递归访问; 3. 防止优先级反转.
  1. 你可以说说优先级反转吗?
答: 我以一个场景来说明可以吗? (可以). 然后说了野火RT-Thread教程上关于优先级反转的一个例子.
答: 可以通过优先级继承的方法. 然后又通过场景来解释.
答: 我没有了解过其它了. 不过应该可以通过关调度器或者关中断的方式解决. 他: 你可以了解一下优先级天花板.
  1. 我看你的简历有说做了一个MIPS的CPU, 可以说说具体是怎么做的吗?
答: 找了一本CPU相关的书, 然后跟着敲代码, 不仅仅是仿真运行, 还下到板子真正跑起来了.
答: MIPS和ARM都是精简指令集的, 都使用流水线技术. 不过据我了解, MIPS使用的是五级流水线, ARM的话比如说STM32, 用的是3级流水线. MIPS和FPGA不是一个平级的概念, 具体来说, 要研发一款芯片, 需要先在FPGA上实现软核, 验证通过后再流片量化生产. FPGA更加偏底层, 它是原始的逻辑阵列, 逻辑门之间怎么连线是由芯片设计者来决定的.
  1. 问: 你有说过项目中的低功耗实现. 能说说功耗有多低吗, 和市面上的单片机相比如何?
答: 在通信速率为300k/bit下, 可去到20uW的功率, 而像低功耗做得比较好的MSP430, 至少都上上百uW.
  1. 市面上的低功耗单片机有了解过吗?
答: 据我所知, 前几年的话,德州仪器的MSP430系列低功耗是做得最好的, 而近些年来, 意法半导体STM32的L系列功耗方面也做得很出色, 比MSP430系列要好, 而且STM32的生态要好很多, 以后应该是ST能拿下市场.
  1. 问: 最近有看什么书籍吗?
答: 最近找工作, 看的都是和计算机相关的书籍. 有RT-Thread相关的, 还有经典书籍比如深入理解计算机系统, 看的主要是链接以及系统IO这方面的内容. 最近也有看算法方面的书, 了解基本的一些算法思想.
  1. 你们学计算机的, 算法不应该是基础课程吗?
答: 以前确实有选这么课, 但是学得不是很好, 最近才补回来.
  1. 两个有交点的单链表, 如何找到它们的交点, 给我说一下思路?
答: (这题力扣有)我思考了一分钟左右(其实我早就会了, 战略性思考), 就按着力扣的思路给他讲了一遍, 得到认可.
  1. 有玩过大疆的无人机吗?
答: 没有. 身边一个师兄, 喜欢旅游看风景, 有时会跟我说一下大疆无人机拍照多好看.
  1. 你觉得大疆的无人机产品有什么缺点?
答: 没用过, 不清楚.

面试过程中, 对面一直反驳我项目中的一些做法和思路, 我也反驳回去.

当时为什么敢反驳, 因为我根本没想着去大疆, 有最好, 没有就拜拜的心态.

没想到可能是我敢反敢驳, 最后给了我sp.

最后问我关于Linux的lcd驱动是怎么写的.

全程面试官不置可否, 感觉自己表现一般.

首先自我介绍, 因为是非技术面, 自我介绍的时候技术方面的就略过.

  1. 在做项目过程中遇到的印象深刻的困难?
答: 疫情期间在家自学FPGA, 从零开始, 要把整个项目独立做出来.
答: 自学能力, 以及独立完成项目的工程能力?
  1. 认为自己在做项目过程中的优缺点是什么
答: 我认为优点是我能够静下心来去学习全新的技术, 这点对以后工作是有帮助的, 因为在工作中可能需要经常学习新的东西. 缺点是当初在做项目的过程中和师兄沟通方面不是很充分, 导致自己完成了任务, 并不是所需要的.
  1. 那你认为应该怎么进行沟通呢?
答: 我举了一个请师兄帮我调试bug, 怎样与他进行沟通的案例.

复盘一下, 觉得上面两条答得不是很好, 缺点方面我可以说, 平常都是一个人负责项目, 没有尝试过团队合作, 可能以后要团队合作的话, 会缺少一些经验. 后面问怎么沟通, 也可以以实验室日常工作举例子来回答.

  1. 最后项目有什么产出吗?
答: 论文原型的实现, 不仅仅是仿真运行, 还有下板子做实验, 为论文采集实验数据.
  1. 在工作学习之余还会做什么感兴趣的事情吗?
答: 之前学习过FPGA, 虽然说以后不会往FGPA方面发展, 但是因为我对底层逻辑还是比较感兴趣的, 利用学习过的FPGA知识, 在空闲时间, 去复现一款MIPS的32位CPU出来, 最后下到板子运行, 另外还用FPGA编写了一个程序存储器, 将CPU要运行的代码下载到Nor Flash上面, 这个过程需要去阅读Nor Flash的芯片手册, 并用FPGA实现它的通信时序.

大家都说大疆是国内做嵌入式的天花板, 要做一款无人机产品出来, 要用到的不仅仅是IT领域的知识, 基本上整个工科领域都要精通才可以, 如果我能加入大疆, 对我的技术视野的提升是非常有帮助的. 我个人也比较喜欢在硬件上捣鼓软件, 写代码让硬件跑起来, 就感觉在注入灵魂, 是一件有趣的事情.

答: 无人机在消费, 工业, 农业, 教育都有涉及, 市场占有率达80以上.

后面可能感觉我平时不怎么玩无人机, 就问我是不是无人机接触比较少. 我说是的, 毕竟现在没什么钱, 等以后工作了, 会买几台来玩玩. 然后他说公司里面无人机随便玩.

我问工作产品线是进去以后再分吗? 答: 是的.

如果有幸加入大疆, 在毕业前我还想学习进步, 你有什么建议吗?

答: 建议多看看实时操作系统.

45w以上, 公积金8%, 双休, 提供南山区半价宿舍.

我投的是CPU设计岗.

自我介绍完以后, 面试官怕我投错岗位了, 解释说他们是做CPU的模型编程的, 具体就是用C或C++模拟一个CPU的行为. 我说, 我就是偏向做软件的, 岗位描述也是看清楚了才投的.

  1. 你做的MSP430单片机项目是哪家公司的, 有接触硬件设计吗?
答: 德州仪器, 没有设计硬件, 但是板子是我们实验室做的, 我也要懂硬件设计才能编程.
  1. 你做的项目里面有CPU的实现, 可以说说流水线设计的这种思想吗?
答: 流水线思想是RISC类型的CPU专有的技术, 其思想就是将多种操作拆解成共同的操作单元, 我所做的MIPS为五级流水线: 取值, 译码, 执行, 访存, 写回, 然后这些操作单元的搭配, 就可以完成各种各样复杂的操作. 只需要较少的硬件电路就可以实现这些操作单元, 而不像CISC类型CPU要很多复杂的硬件结构, 这样大大降低了CPU的设计难度.
  1. 你是怎样查看CPU的运行结果的?
答: 首先我会在仿真软件上看过波形没有问题, 然后就会烧写到FPGA板子上, 使用逻辑分析仪来查看信号是否正确.
  1. CPU的性能有没有做过评估?
答: 当时做这个项目是出于兴趣, 主要还是想弄清楚原理, 对性能方面的事情不太关注.
  1. 一个具体技术问题, 如何解决LOAD相关, 比如说load指令后面的add指令要用到刚刚读取出来的数据?
答: 我思考一会(战略性思考)...因为add指令直接跟在load后面, 所以需要暂停流水线, 然后直接将数据送到执行阶段的寄存器.
  1. 我再问具体一点,暂停多久?
  1. 你写汇编代码怎么验证执行结果的正确性的?
答: 写的汇编代码, 会先手算出预期的工作结果, 然后仿真运行的时候再去对比.
  1. 追问: 可是如果代码量太大了, 手算很慢怎么办?
答: 可能你想说使用一些自动化的方法, 比如说使用python来计算出测试集的结果, 不过这个项目是我出于兴趣在做的, 汇编的代码量也不是很大, 也就没有使用这些脚本去编程.
  1. 你在做项目过程中遇到的挑战?
答: (答过很多遍了).

对面有三个面试官, 其中一个还是一面面过我的.

自我介绍完后, 一直深怼我的MIPS32 CPU项目, 怼内核, CPU流水线, 我确实研究得不深.

其间好次, 对面问, 我答, 沉默几十秒.

表现不是很好, 感觉没戏.

问过hr, 说第一批offer名单没有我.

问过参加了线下二面的同学, 说问了比较简单基础.

可能是我没有参加线下的, 故意给我提高难度.

arm开得还挺高, base年薪三十多, 然后加上绩效/股票/签字费, 去到了四十多.

问: 你在做项目过程中遇到的挑战?

答: (答过很多遍了).

讯飞挂了, 估计是深圳没什么岗位需求.

本来预计1个小时的面试时间, 最后只进行了不到30分钟.

自我介绍, 还没介绍完就被打断了, 问我简历上的第二个项目. 我简历上的第二个项目是关于无线通信信道利用率的提升的. 他们360做得应该是偏向网络通信方面的, 所以打断我就问.

整个面试过程下来, 那边比较希望我有一些网络相关的实战, 或者是Linux, RTOS方面的实战, 但不巧, 我都没有, 我的项目是偏向FPGA和MCU开发的, Linux和RTOS知识都是理论层面的.

面试过程穿插着算法部分和专业技能部分.

算法部分包括判断大小端, 字符串拷贝, 反转单向链表, 树的四种遍历方法, 排序算法, 平时都做得很熟了.

专业技能部分, 他想问我有没RTOS, Linux实战项目, 我都回答没有.

问: 对Web开发熟悉吗?

答: 完全不会.(回答到这, 我已经理直气壮不会了)

最后问我, 你觉得你还有什么亮点?

我问: 除简历上的吗?

他说: 你简历上说对MIPS架构比较了解, 是怎么回事?

答: 我学完FPGA以后, 自己写了一个CPU, 然后大概介绍了一下.

没有反问环节, 面试结束.

整场下来感觉就是, 360毕竟还不是专门搞嵌入式的, 他们可能更想找一些项目经验对口的, 但是对面面试官又想捞一下, 所以多问我一些算法方面的知识.

一面通过了, 没有参加二面, 因为刚好没空.

自我介绍, 然后狂怼项目.

答: 1. RTOS从名字上来看, 实时性是其关键特性(有很多O(1)算法), Linux更加看重高性能会用一些复杂的数据结构和算法来提升整体的性能, 但是不保证实时性; 2. Linux有线程和进程的区别, 这是由内存管理单元支持的特性, RTOS没有内存管理单元, 执行单元叫做任务, 所有任务共享一个运行环境.
答: 优先级+时间片轮转.
  1. 如何设计任务的优先级?
答: 答得不好. 他说: 可以分为IO型任务和计算型任务去设计.
  1. 同一个局域网的Linux系统, 如何互传文件?

编程题: 去除链表升序的重复元素, 重复的只保留一个.

我早早就面完小马了, 而且感觉自己表现还不错.

后来有的同学在我后面面试的, 都已经安排面试了.

然后中秋节没联系上hr, 搞得中秋节都过的不安心.

后面hr才说面试官忘记反馈我的成绩了, 今天终于说要安排我二面了.

针对我的项目聊了挺多.

(一般聊到Linux和RTOS都会问一下他们之间的区别, 具有什么部件的芯片(MMU)可以跑Linux)

Linux方面问了设备树, 设备驱动模型.

RTOS方面问了系统通信方式.

栈设置的大小为多少合适?

什么情况下会栈溢出. 我回答嵌套太深, 递归太深, 中断不断发生嵌套.

编译过程其实就是那一套: 预处理, 编译, 汇编, 链接, 装载运行.

如果要展开的话, 会问预处理做了什么, 链接完以后的文件怎样组成. 可能还会问一下Makefile的写法.

编译涉及到的知识可以参考深入理解计算机系统这本书.

顺着编译过程, 问可执行文件的段组成.

然后问BSS段是怎样生成, 怎样设置的.

BSS这一块, 我一开始答错了, 我说是装载器根据可执行文件里的段信息, 装载的时候, 在内存中清理出一块空间作为零值空间, 然后在内存中就形成了bss段空间.

然后他问我, 可执行文件是bin文件, 全是机器码, 没有段信息, 怎么知道如何形成bss段.

我说, 可以自己写重定位代码, 在代码里获取链接脚本的段信息, 然后通过代码设置清零, 这段代码最后在可执行文件里.

这部分知识可以看韦东山的免费教程

让我写一个基本计算器, 带括号的.

基本计算器的写法我只会中缀表达式转后缀表达式的方式, 转换的规则还有点繁琐, 挺久以前写的, 实现起来也要有上百行代码, 而且涉及到带括号, 有一些细节要处理好, 现在实在写不出来了. 想了几分钟, 我坦白说没有思路.

然后面试官给换了一道简单题, 完美树(力扣有).

用O(根号n)的方法做出来了.

完了以后给面试官阐述了以下第一道题的基本计算器的思路.

小马是我留在广州唯一的希望.

之前听杭电的同学说, 小马三面竟然还是问项目, 整得我有点慌.

等我自我介绍完以后, 他问我说, 你对底层比较感兴趣, 了解也比较多, 简历上写了做过一个流水线CPU, 那么你能说说流水线太长有什么坏处吗?

我没回答上来, 心里想流水想过长, 会导致跳转/中断等效率低下, 但是组织不出系统性的语言.

这全场唯一的一个技术问题没回答上来, 有点小慌.

简历上做过的项目, 有些细节难免会忘记或者没有注意到, 在面试之前最好尽量把自己的盲点找出来.

后面就是聊一些非技术性的话题了:

问: 在做项目中遇到印象深刻困难, 如何克服?

问: 在团队协作中, 人际交往方面的感悟.

问: 为什么要选择小马智行? 有没有了解过其他同类型的公司.

问: 你在完成一件事的过程中, 在什么情况下会求助别人?

问: 我说在之前做第一个FPGA项目的过程中, 遇到了一个很难的bug, 自己调了好久, 看书找理论, 参考别人的代码, 将自己的代码推倒重来, 花费了好多时间, 最后还是没有调出来. 后面我求助了一位师兄, 他很热心帮我调了一天, 问题才得以解决. 但是我后来反省自己, 虽说这种自己与困难斗争到底的精神值得鼓励, 但是在尝试过以后, 要尽快找他人求助, 不然会耽误项目的交付时间. 后面我也学会遇到困难先自己调一下, 但不会死磕, 实在搞不定就要尽快求助他人.

后面的一些问题不太记得了, 主要还是一些综合问题, 对面好像在看一个清单, 上面是综合面试时应该提的问题. (因为我每次回答完他就盯一下屏幕, 感觉是在挑一个合适的来问)

到了反问环节, 我了解到广州南沙他们团队现有做嵌入式方向的有5个人, 今年秋招完以后会扩展到30个左右. 平时工作用到的技术包括Linux/RTOS/ARM等.

后面hr也告诉我面试通过了, 不过要十月底才开奖.

面试官迟到了15分钟, 估计上一个延误了.

自我介绍. 然后问简历上的第一个项目, 问得不是很深入. 觉得面试官面无表情, 语气平淡, 搞得我不自信了.

  1. RTOS的优先级反转以及解决方法?
  2. Linux系统挑一个熟悉的讲讲.(我就挑了中断系统, 这一块回答得不是很好, 凭着学习韦东山视频的记忆去讲的).
  3. 软中断是什么? 我就顺着讲了tasklet和工作队列, 线程化中断.
  4. 工作队列的执行环境是用户空间还是内核空间.(这里我竟然回答了用户空间, 脑袋抽了).
  5. 然后又问了一些自旋锁和一般的互斥锁的问题.
  6. 如何解除死锁? 就回答了教科书八股文.
  7. 贪心算法和动态规划算法比较一下?
  1. 使用数组实现一个队列.

要实现入队, 出队, 判空, 判满操作.

判空, 判满这里我用(r == w)和(((w + 1) % SIZE) == R)来实现. 他说会浪费一个存储空间, 怎样不浪费, 我想了一会, 说加一个变量记录丢列的长度吧. 他说也行吧, 但是还有其它方法, 让我后面再想想.

写完后问我多个线程怎样防止访问队列出错, 我回答说用锁, 或者按照线程ID有序访问.

反转链表真的是考过好多次了.

我一下子就写出一个用假头节点的方法, 他不满意, 让我别使用假头节点.

然后我又改成了没有假头节点的, 并且在程序入口加了特判(如果链表为空或者只有一个节点就直接返回), 结果他不满意, 让我把特判删除了, 只能在while有判断, 我实在想不出来怎么优化了, 他就说算了, 面试就结束了.

上次小马面试, 我不加特判, 面试官不高兴, 这次我加了特判, 面试官不高兴, 无语了.

面试完以后, 觉得自己15级无望了. 当时在市区的一家自习室面试, 准备收拾包裹走人了, 刚走到电梯, 就收到华为马上要二面的通知. 我也是服了华为了.

这次就不用自我介绍了. 一开局, 对面对跟我说, 一面面试官对我评价很不错. 果然是压力面.

然后面试官主要挖项目, 挖得挺深.

后面是算法题, 要设计一个类, 对字符串出现的次数进行统计, 添加字符串, 删除字符串等等操作.

我心想不是一个map就搞定了吗? 想起一面, 简单题各种优化, 我心里还是有小慌. 不管那么多, 先暴力解决一下, 然后我说我想想怎么优化吧, 那边直接说, 你把代码复制一下, 提交过来吧. (不会就这么简单吧?)

结尾问我有什么优缺点.

后面很快就收到通过短信了, 等主管面.

主管面还是聊些综合兴问题. 聊的还挺好.

坑的是, 我反问环节才知道, 我的简历被推去深圳了.

之前有一个东莞海思的短距通信部门约我面试, 我就一直以为是东莞这个部门, 还好我多问了一句.

后面折腾了好久, 终于联系到hr说把我的简历推回去短距部门了, 不需要重新面试, 等结果就好了.

十月下旬了, 身边同学都有华为意向书了, 我估计是无了, 估计是东莞海思没有hc了.

不太在意这场面试, 问的什么忘记了.

自我介绍, 然后全程聊项目. 20min.

第二次面vivo了, 招工作第一次就是vivo, 然后凉得很快.

这次整个过程还比较好.

自我介绍完以后, 问了一下项目, 然后是Linux内核方面的知识.

有些地方回答得不是很好.

vivo这次能不能过只能说一半一半.

面试官迟到, 约了4点, 过了五分钟还没人, 我想等到10分就不等了, 结果那边刚好9分打过来.

信号还不好, 折腾了好久, 最后换成电话面试.

自我介绍, 然后问项目.

在项目上问力几个问题, 突然就说面试结束了.

估计对我的项目不是很感兴趣.

面试官现场看了我的简历, 然后顺着简历问了我的项目.

主要是项目的原理, 目的, 遇到的问题, 如何解决.

最后还聊了一下天, 问兴趣爱好, 我说平常在成都找吃的, 他让我推荐馆子.

面试官留着络腮胡子, 有点像张学友.

在交流的过程中好几次不知道该如何措辞, 讲完这句不知道下句讲啥.

感觉对面hr很会控场.

问的几个问题我一下子不知道该如何措辞回答(或者说她问的比较空?)

你觉得自己的表达能力如何?

你做完项目以后, 有没有归纳总结?

你的项目能够代表你的水平吗?

后面打听我投了哪些公司, 拿到了哪些offer, 有没有签约, 三方下来没有.

后来了解到oppo的驱动开发岗只有深圳, 为了不让面试尬住, 我说深圳也可以去.

6月份开始秋招, 一开始对嵌入式的薪资没什么期待(35w是想象力的天花板), 我读研更多是出于兴趣, 嵌入式属于计算机这一块, 虽然没有互联网这么好, 但是肯定饿不死的。 我是在决定考研计算机几个月以后, 才慢慢发现计算机原来这么火爆, 薪资这么高。

今年秋招, 嵌入式的薪资水平我个人感觉已经和互联网不相上下, 甚至互联网还有点比不上的感觉。 汇顶第一个给我开奖, 从来没想过年薪可以去到40。

后来, 在嵌入式秋招群里, 不乏一堆兄弟年包40以上的, 还有一个双非本拿到接近50的大疆总包。 然后慢慢接受了嵌入式薪资跟着IC水涨船高这个事实, 最后大疆的整体薪资也压倒了一片头部互联网公司。

我觉得今年在嵌入式这块找工作是幸运的, 互联网依然内卷, 笔试刷题, 好几轮技术面, 每轮都要手撕算法, 还要项目好。 而嵌入式这边, 算法是加分项, 很多次面试, 面试官基本只问我项目和专业知识, 让手撕代码的屈指可数。

最后互联网开出来的薪资其实比起嵌入式高不了太多了, 甚至在头部公司嵌入式要高一点。但是还是劝嵌入式的同学, 多刷题, 鬼知道嵌入式会不会卷起来。

最后推荐一下学习资料.

  1. 单片机和RTOS, 野火的指南者和rt-thread的电子书我是看得最多的.
  2. 嵌入式Linux, 韦东山的免费教程(B站, 百问网), 野火的也很不错(最近在补).
  3. 开发板用的是韦老师的.
  4. 算法方面, 胡凡的算法笔记, 力扣, 还有leetcode101的题目列表.
  5. 秋招面经这块, 感谢@仲一群主提供的"嵌入式软件工程师笔试面试指南", 一开始秋招真的很焦虑, 觉得随便一个专业问题都回答不上来, 最后是看了这本面经心态才稳定下来. [嵌入式与Linux那些事]3群yyds!!!
  6. FPGA的话, 也是野火的教程比较好(嵌入式软件FPGA不需要, 有是加分项).
  7. 像什么CSAPP, 程序员的自我修养这些, 是好书, 但是就不多推荐了, 秋招过程中可以针对某些问题翻一翻, 不适合一大块时间拿来啃, 对秋招的直接帮助其实不算太大。如果真的想学, 先按前几点学习, 秋招完以后抽时间好好看这些计算机的经典书籍, 对职业发展肯定有帮助. 我列举我看过的一些书籍:深入理解计算机系统,UNIX环境高级编程,LINUX设备驱动程序,C和指针,算法笔记,嵌入式程序员的自我修养,RT-Thread内核实现与应用开发实战指南-基于STM32,STM32库开发实战指南-基于STM32F103。

来源:公众号-嵌入式与Linux那些事

来源:公众号-嵌入式与Linux那些事

码字不易,觉得本篇文章对你有帮助,可以双击屏幕,点个免费的赞支持下作者

}

我要回帖

更多关于 深圳市行易通贸易有限公司 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信