二本学生如何度过这个「寒冬」

嵌入式Linux

共 8003字,需浏览 17分钟

 · 2022-11-10


简介

今年的校园招聘可谓异常激烈。互联网那边缩招严重,嵌入式也不好过,“寒气”在每一个行业中传递着。

尤其对于没有任何工作经验的校招生来讲,想找一份合适的工作就更难了。

在名额不多的情况下,除了比拼学校,论文,竞赛等硬性条件外,更重要的拼的是心态和运气。

这位读者在面试到九月的时候,只收到了几家公司的面试,而且,面试结果也不好。心态发生了很大变化,就来找我聊了聊。

好在有些话,他确实听了进去,也调整了心态,最后收获了不错的offer。

本篇文章就是这位读者投稿的秋招经历,作为一个普通的二本是如何度过“寒冬”,最后拿到心仪的offer的。

希望他的经历能对大家有帮助。

a9c8bdb935fe0f86c6af3c842d8984ba.webp


e0791038fc5033cafb4eefc302cd4c39.webp


115c9b62918837bd3f14eb6757d109ed.webp


d500c7552ef4fbc55521ff6cd22c2436.webp


36088021b6e573bc32a9d6b5e00370f7.webp

个人介绍

本人双非本,来自电智学院的自动化专业。自动化属于那种狗皮膏药专业,啥都学,啥都学不深。

所以个人感觉这个专业对就业还是有一点点尴尬,但毕竟也是搞技术的。因为本人不喜欢读书,哈哈哈。所以从进入大学那一刻就开始打算往就业的方向出发。

进入大学前的那个暑假在自己姐姐的推荐下开始自学C语言,虽然进度慢,但也是学习了一点基础。

在大一的时候开始参加学校实验室的培训选拔,遇上了决定00后大学生涯的重大变故——疫情。中间在家里面接受前辈的培训学习了一段时间,期间学习了一些51,然后是32,最后是AD。

在经过大半年的培训选拔后挤进了机器人实验室。感觉还是要感谢自己的家人以及各位选择了我的学长学姐,个人觉得能接触到实验室的资源以及平台和这个团队,对我的大学生活以及未来的道路都起到了决定性的作用。

总体来讲,我在实验室走的方向就是嵌入式开发,以使用STM32做单片机裸机开发为主。期间参加过不少比赛,拿过一些国家级一等奖和省级一等奖,也参加过一些项目。

因为在实验室的开发大部分都是软件硬件一起搞的,自己也尝试过在外面接一些AD抄板的兼职,所以软件硬件都有一些基础,也有基本的选型能力,技术栈也相对完善一点。

秋招情况

七月底完成了自己的第一份完整简历,终于加入了秋招的战场。一开始的我其实是带着一点自持,参加过比赛和项目经验的骄傲踏入的秋招,所以满满自信参加了提前批,结果一下就被打回原形。

半个多月以来投了几十家,笔试十几次才等到一次面试机会。然后,因为自己做的东西深度不够而挂了一面。

随着正式批的开始,又开始了长达一个月的冰冻期(只有笔试没有面试),期间是无数次身心上的折磨,要么初筛挂要么笔试完复筛挂。

九月份后才开始逐渐得到一些面试机会,但基本都挂了,九月底收到了深圳科曼的电话意向。本来叫我赶紧发资料申请offer,结果第二天和我说编制满了把我排序了。

加上身边几个朋友都已经获得了不错的机会,月底到国庆那段时间都因为落差太大和嫉妒心emo了一段时间,最后在身边人以及仲一大佬的开导下逐渐走出了阴霾。

重新整顿后,从以前只等网申转战到BOSS和校园宣讲会。在国庆后首先获得了一些东莞的小公司的意向,不过薪资以及方向都不太满意。在小公司顺藤摸瓜,也获得了其深圳子公司的offer,这是我秋招第一份offer(不算意向),这也是我的第一份保底,给予了我极大的鼓励。

后面的一段时间也面试了许多中小型公司,在十月中下旬的时候,经过了广州三晶电气两轮面试后,最终收获了第二份offer。因为三晶给到的待遇基本是学校认识的同届同方向里属于前排的了,总包能给到16~20W,也就决定了自己的秋招就到这收官了。

总结一下,自己投过那些公司就不晒了(太多了555),两个月的网申道路前前后后投了六十来家,基本都是没有结果的,大概就面试了五家左右,有百度、极米、深信服、科曼、康冠等。

国庆后转战BOSS,联系了一百多家,已投简历三十家,面试了十家左右。两个月长时间的折磨消耗了我太多精力,所以最后获得三晶电气的offer后也就决定了去向。

准备路线

大二大三就业前的项目都是以简单的单片机裸机开发为主,做过机器人,也做过智能家居,但大多都是堆模块为主,虽然有一定基础,单个人觉得技术栈并不是很深入。

唯一的优点是到大三的时候,这些项目大部分的软件以及所有的硬件都是自己选型设计的,所以技术栈虽然不深,但也算得上广。

在大三的时候(去年九月左右)开始着手自己的就业道路发展,询问了很多师兄他们的发展道路,想要看看自己拟定一条学习道路。

去年互联网还是一个无比诱人的赛道,所以自己一开始的选择是和师兄一起考虑往后端发展,所以按照一开始的计划是大概在家里花了几个月自学了C++与Linux应用开发还有TCP/IP网络编程。

其实学到这,我对自己的学习路线还是很迷惘的,只是听着师兄说哪些要学就学哪些,基本都是很零散的学习。所以我重新对自己的发展路线进行了规划。

考虑到现在自己的技术栈在嵌入式还是后端都是有重合度的,而且自己的大学奖项以及项目经历都是单片机开发,非科班转互联网有一定难度,所以还是重新选择了自己的老本行——嵌入式。

后面在对自己学习路线迷惘的时候,有幸翻到了仲一大佬的文章,后来要到了大佬准备的资源,尤其是其中大佬写的《嵌入式软件工程师笔试面试指南》,对我尤其受用。

然后对自己技术栈查漏补缺。这一点尤为重要,必须要边投简历边感受现在市场对人才的需求,哪些内容是一定要学的,哪些内容可以稍微裁剪或者选择性学习,这样才能把自己打造成市场需要的人才。

比如代码方面,可以去刷资料里的剑指offer,养成每天预留一小时到两小时的练习代码题的习惯,对嵌入式常用的链表、结构体等内容多做练习,必要时背诵。

很多人会认为嵌入式没有必要要求那么高的代码量,但很多时候面试官可以从一个人写代码的习惯就能看出这个人的能力。并不一定你以后工作会用得上多高级的代码,但是市场对人才的要求就是这样。

比如一些C/C++方面的内容,一定要学会勤刷题,勤做笔记,一门语言能设计的细节题太多了,永远不要觉得自己对一门语言能够完完全全地掌握。像《嵌入式软件工程师笔试面试指南》中的考点,还有资料的里的程序员面试宝典,都需要花时间来翻阅记录。

比如Linux应用开发方面,我会选择看李慧芹老师在B站上的课,配合CSDN上的阅读笔记来学习,个人觉得李老师的课讲的都非常通俗易懂。

面试情况

百度

八月中旬开始人生第一次面试,百度提前批的C++软开,可以说是非常紧张了,基本前一周都在疯狂背诵八股文,提前写好稿子对着镜子练习。

历时五十分钟。因为是第一次面试,脸上挂满了笑容,但心里其实卷成麻花儿了 。

大概一分多钟的自我介绍 。

前18分钟主要针对简历上的国奖询问细节,比如机器人如何实现的,项目的难点在哪。

有问到机器人上有集成系统吗(ROS?Linux?),以技术原因否定。

问到有没有想过用仿真软件来避免机器人的一些结构上的问题,以技术与时间原因否定。

然后开始对简历上的项目进行询问,提问这个项目是否是学校带头的。提问是否是个人兴趣来做这个项目的。(当时太紧张了,只说了这个项目是自己找的,没有正面回答这个问题)

问个人技术栈是以什么语言做主导 。

21分钟左右开始了十多分钟的八股文提问:

函数重载与虚函数的了解

以动多态与静多态的角度切入,描述了对重载与虚函数的概念

虚函数表创建的过程

参考C++虚函数

个人觉得讲的非常生动的一个关于虚函数的讲解

类与类之间的虚函数表是独立的吗

个人的理解是独立的,一开始是那么回答,后面补充了一句父类与子类的虚函数表是共享的,但是他们不一样

因为之前看到的网上有得说法是为了节省空间而共享一张虚函数表,但是最直观的理解又是每个类的虚函数表是独立的

网上查找相关介绍:C++ 关于类与对象在虚函数表上唯一性问题 浅析_稚枭天卓的博客-CSDN博客

结论:

不同对象虚函数表表中元素是相等的,逻辑上是一样的,存放的都是类中虚函数的地址;

不同对象虚函数表的内存地址是不一样,物理上是不一样的,一个对象是一个新的表。

父类与子类的虚函数表有什么不同

子类的虚函数表在没有重载父类虚函数方法的情况下,指向的虚函数和父类的是一致的(除非自己新写的)

但是如果子类对父类的虚函数进行了方法重载,那么子类的对应的虚函数表的位置指向的是重载后的虚函数

虚基类定义了子类和派生类,虚函数表是不是同一个

个人推断不是同一个,但说不出原因

引用和指针的区别

复述了一遍:

【C语言】引用和指针的区别?_Evan_ZGYF丶的博客-CSDN博客_c语言引用和指针

在函数出参(返回)的时候对代码规范来讲是指针好还是引用好

不会,然后在一个是间接访问一个是直接访问的基础上回答,间接访问可能会发生意想不到的错误,所以引用比较好

https://blog.csdn.net/weixin_42549534/article/details/108607114

Linux data区分为哪几个部分

不会

linux---内存分区(代码段text、BSS、数据区data、栈stack、堆heap)_SXM19940913sxm的博客-CSDN博客

事后确实是没想到,其实和C++内存分区很相似......

堆和栈的区别

【C语言】谈谈内存分配中的堆和栈的区别?为什么要有堆区和栈区呢?_Evan_ZGYF丶的博客-CSDN博客_为什么要有堆区

函数的局部变量是存放在哪里

进程和线程的区别,深入点讲

复述八股文,内存占用上,还有通信方式,还有一个开销大一个开销小

进程和线程的开销问题,为什么会这样

用占用的资源的角度回答:同一进程的线程共享资源,切换代价小,而进程之间是独立的,每次切换进程都需要通过进程上下文的操作保护切换前的环境

智能指针用过吗,std::unique_ptr和std::shared_ptr的区别

智能指针确实没怎么用过,只回答了了解

其实我没听清楚问的是不是这两个指针的区别......硬着头皮背八股文了,一个管理共享内存一个管理独享内存

内存泄漏是如何造成的

列举了两个情况:堆没有手动释放,进程线程没有收尸

内存泄漏是如何排查的

不会......bb了两句就坦白了

参考:在Linux下检查内存泄露_canyue2811的博客-CSDN博客_linux查看内存泄露

三十三分钟左右开始一道编程题,反转单链表,要写完整文件,随便创个单链表倒转输出即可

思路大概记得,遂边阐述个人思路边写

大概十多分钟代码成型,但是在主函数创建单链表的时候忘记用new来为新结点分配内存空间,导致初始化失败,无法正常输入输出(代码量太少带来的弊端)

最后花了几分钟也没记起来,不过老师也差不多能明白我的思路,最后留了一句思路挺好,便没有让我继续写下去;

感觉老师可能有一点失望的感觉,最后以等待人事通知为由准备结束面试(我还以为会主动问我还有什么想问的)

最后主动问了点业务和个人建议,感觉老师比较随便就说了一句“本科生能参加那么多比赛挺不错的”

最后便让我等待人事通知。

现在回顾过去,应该败在了自己技术栈深度太浅而且和他们想要的自动驾驶控制的方向不太契合,估计一开始是看我奖项多才抱着捞我的心态来面我,中间问完项目经历就已经面露难色了,结果还是坚持问了半小时的八股文和手撕.......

成都极米

第二次是成都极米,两轮面试都是二十分钟巨快结束战斗,一面也没有问很难的八股文,问了点TCP模型,二面也是纯聊天式的综合面,也不知道是KPI还是被排序了,反正中秋后就收到了感谢信。

深圳科曼医疗

第三次是深圳科曼医疗,一面相对比较折磨,高工问了很多关于指针的细节踩坑题,基本五六道题我踩了三道,只能怪自己学艺不精,不过其他问题都能完整答上来,高工也表示我的技术相对可以的,就是指针方面需要好好补一下,然后几天后收到了电话,开始人事面,最后电话意向,原本已经准备叫我准备资料申请offer,无语的是第二天打过去询问情况,直接和我说编制满了把我压箱底了。

深圳科曼医疗面试中问的问题如下:

头文件“”和<>的区别

static的用法

如何防止头文件包含

const的用法

*const int p是什么意思

以下代码输出多少

      
      unsigned int a = 6;
int b =-20;
int c;
((a+b) > 6) ? (c = 1):(c = 0);
return c;

int **a[3][4]数组占多少字节

函数能正常运行吗?

      
      void get(char* p,int num)
{
 p = (char *)malloc(sizeof(char)*num);
}
int main()
{
    char *str;
    get(str,100);
    strcpy(str,"hello");
    return 0;
}

下列哪个不能表示a[1]

      
      int *p;
int a[10];
p = a;

p+1
a++
p++
a+1

类的访问修饰符具体的作用(public、protected、private)

指针跟引用的区别

声明一个基类要注意什么

线程同步的方式

知道一些设计模式吗?(只写过单例模式)

一些经验

契合岗位

后面大大小小也参加了数场面试,过程都是老生常谈,除了深信服面的C++工程师在Linux驱动和网络编程问的很深的内容(那次偷懒了没有记录哈哈哈哈),后面的面试大多工作都是做通信开发,所以问的都是ARM与通信协议相关,如果有走这个方向的朋友一定要把通信协议学深,理解深,不要只停留于看看介绍就觉得自己会了,一定要实操加深刻理解通信的时序。

八股文

八股文方面当然需要自己准备,其次是像自我介绍,这些肯定要学会自己写稿子。自我介绍并不是重复简历内容,而是可以自己添油加醋:平时喜欢刷题,喜欢写技术文章,分享技术难点,自己的技术开发经验长达几年,这些都是对面试官突出自己能力的暗示,能让技术官看到简历上看不到的东西,同时也是对自己总结与展示能力的体现。

简历

我的简历从去年开始修改第一份,到今年七月份开始第一份逐渐成型,到秋招两个月后,我的简历足足修改了有三十多版。简历的撰写非常重要,这不仅是奔向面试机会的敲门砖,也是面试官在面试你的时候的着手点。

面试问题提前准备

在面试前一定要多方位预设面试官可能问到的问题,并提前准备自己展示的核心。比如经常会问到的担任什么项目角色,你觉得哪个项目最难最有挑战性最有收获,这些都要考虑如何讲才能向面试官展示自己的能力。

比如我就会说,这个项目具有不同于STM32的跨平台开发经验,整个项目是我们团队完整开发的,从选型规划、大部分软件代码编写,硬件设计与制作,到文档撰写和现场演示答辩,都是由我来完成的。这样一说,就能把自己的技术栈深度很好的展示到面试官面前。

个人问题

还有很多人事问题也会遇到,比如你的优缺点,这个一定要学会自己去设计一套说法,优点不多说,勤奋好学上手快易沟通,难的是缺点,如何找到一个不会很严重影响自己印象的缺点,并提出如何尝试避免缺点。

当有那么一套完整逻辑摆在面试官面前,自然就会大大的加分。更奇葩的还会有问你现在这个市场如何和那些系统学习过的研究生比,问你怎么看“枪打出头鸟”,这些都是非常考验个人临场思考能力的。

总结

两个多月的秋招,其中有一个多月的寒冬期,真的是一个非常折磨的过程,基本在找嵌入式的同行中大部分也是同样的遭遇。有朋友一个月的秋招如鱼得水,一路斩获六七个offer,也有朋友边备考边随手投递简历,却找到了待遇不错的公司。

自己与期望的落差和对别人的嫉妒心导致了中间有一段时间严重怀疑自己的能力,这段时间多亏了朋友与仲一大佬对我的开导,我收到了对我心态产生极大影响的两句话:

一是“人生不是只有秋招”。

二是“嫉妒心是正常的,但是嫉妒心太强了,就变味了”。

国庆调整后我的心态就开始发生了变化:该干啥干啥,该继续找工作就继续找工作,大不了以后跑销售跑生活,哪样活着不是活着。

反倒是心态转变后,在BOSS上抓到了不少机会,秋招进展也渐渐开朗起来。所以说人的心态不能老紧绷着,绷太久容易出事!

有朋友笑我双非本干嘛趟提前批的浑水,但没有提前批半个多月的磨练,我也不会那么“经验老到”。

其实大家不要太纠结自己过去干嘛干嘛导致自己现在找不到工作,因为过去是无法改变的,与其浪费时间懊悔自己的选择,不如多去规划眼前当下的道路。

很多时候都是“阳光总在风雨后”,现在失意不代表以后会一直失意,总有一天会等到自己一直等待的那一份offer的。

祝大家在自己的道路上都能走向成功!


end



浏览 31
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报