应届生找工作的基本逻辑

脱不下的长衫,逃不掉的就业

前言

本文面向的对象是普通的本科生,目的就是提供一个角度,也就是一般的本科生的出路–如何做一个合格的打工仔(除从商,考研,从政的路)。或者说的更难听一点,如何做一个适配企业的螺丝钉。至于了解行业周期,选行业,找市场,做生意这些,并没有能力给出什么角度去思考和理解这些。

提示:本文长2W+字,里面还有需要参考链接与资料值得阅读,可能看很久吧。

一、基本常识

1、骨感的现实

曾经我以为大学很好,大学生很厉害,懂很多。上了大学之后就能找到不错的工作,就能够脱离苦海,能找到一份理想的工作。但现实不是这样的,今年,2023年3月,16-24岁青年人失业率为19.6%,也就是5个人就有1个人失业;2023年大学毕业生的期望薪资是9K,就算来我学校(二本学校)招聘的企业来说,平均薪资也就6-7K,除开985,211这种少数人所在的高校,本科生的毕业薪资也就差不多这个数,实际可能会高1-2K,这个跟地域和专业关系比较大。很骨感,冰冷的数据看着还好,失业落到个人身上就是冰锥,刺骨的痛。

在黄灯老师一书中,《我的二本学生》,提到:“任何群体中,若要跨越不属于自己的城市和阶层,个体要经历怎样的内心风暴和艰难险阻,只有当事人知道。作为二本学生,他们踏进校门,就无师自通地找准了自己的定位,没有太多野心,也从未将自己归入精英的行列,他们安于普通的命运,也接纳普通的工作,内心所持有的念想,无非是来自父母期待的一份过得去的工作。毕业以后,他们大多留在国内、基层的一些普通单位,毫无意外地从事一些平常的工作。” 作为二本学生的我也有类似的感触,并且黄灯老师的视频下面,基本上都是这种负面而又真实的评论,二本学生的普偏标签已经很少提及青春和活力,更多是乖,自卑,丧。

大人,时代变了

黄灯老师的书出版于2020年,但现在是2023年了,不光是二本学生,本科生的处境也变得更艰难了。究其根本原因还是因为中国已经度过了高速增长的时期,经济开始放缓。特别是经过疫情,保守观念发展,消费水平降低,经济发展更加放缓。大人,时代变了。想要得到一份好的工作,就需要花费更大的努力,更超前的眼界;要么意识到理想与现实的巨大鸿沟选择躺平。

1.1 毕业即失业的现实

大学扩招导致学历膨胀,但市场岗位数量追不上学历增加的数量,特别是大学生普偏期望的岗位。毕业即失业对于运气不好和学校差一些,能力差一些,专业偏僻的人来说,就是现实。我本可以忍受黑暗,如果我未曾见过光明。 为什么上过大学还要做初中生毕业就能做的工作,如果本来就初中毕业,做初中生毕业的工作就能够忍耐。可劳动岗位有限,好的劳动岗位更是如此,不好好努力,很难得到想要的岗位。竞争还是竞争,想要退场,不,无路可退。当前社会的价值观就是如此的功利。

上大学找到好工作是应该的,不然就是失败者。失业了,换来的不会是亲戚的安慰的目光,温柔的话语,而是无情的嘲讽和社会的不理解。本文没有这个能力去改变这个价值观,也没有能力给出面对这些嘲讽和不理解的勇气,作者本身也在探求这个能力。但我能给出的只是一些现实,一些就业和竞争的小建议。

1.2 主要影响上大学的原因

我能上大学,并不是因为我多强,只是因为大学扩招/研究生也是如此。大学扩招有几个作用:

  1. 缓解就业。这个很好理解,历史上每一次经济放缓,都基本伴随着大学扩招,疫情时期也是研究生招生扩招。市场没有那么多岗位提供给学生,特别是在经济放缓时,很多企业都裁员,上学成为缓解就业的有效手段。结果就是学历正在不断膨胀,不断贬值。
  2. 促进消费。对大部分人来说,教育是消费的一个大头。学杂费、食宿、书籍和用品都需要花钱,特别是对于民办大学,学费就上万,加上各种杂七杂八的费用,上一年学,得花个好几万。细想一下,除了买房买车这些,很少有消费会这么高。
  3. 提高职业技能背书。国内并没有像德国那样比较完备的职业技能背书,技校出来的人在德国企业是受认可的,他们出来很容易找到工作,薪资也不错。相比之下,国内企业并不认可技校出来的人。企业也不认可国内大学培训的技能,认可的是大学证书背后的潜力、学习能力、综合能力等等。就个人体验来看,我并没有在大学里学到什么,也没有感受到大学培养的是高素质、具有创新能力和实践能力的人。也许是我所在学校的层次没有达到那样的高度,但上学的一个很大原因不就是为了找到一份工作,能够养活自己吗?
  4. 提高国民素质。这个不用多说。
  5. 满足经济发展需要。历史规律表明,经济发展与教育水平是正相关的,但经济发展滞后于教育发展一些。

2、打工人的自我修养

打工人的自我修养就是关于公司招聘人的基本逻辑,以及了解自身的定位是怎么样的?市场会用什么样的价值观评判一个人的价值。

2.1 毕业大学生的基本定位

毕业大学生的基本定位:懂点行业常识的廉价劳动力

企业公司要求的能力与大学培养的能力并不挂钩,除了少部分研究岗和学术要求的大企业外(大部分公司也不是什么创新型企业,更何况国内习惯了赚快钱,更多的是二次创作),在企业公司眼里,毕业生就是懂点行业常识的廉价劳动力,只要执行公司的既定业务流程即可,也不需要做决策。而学校教的内容,很多连常识都不算。当然对于无产阶级来说,都是出卖劳动力,本质都一样。先叠个甲,这些只是个人的观点,不每一个公司都是这样的,每个学校都是这样的,只是相对于好公司和好学校,这种情况更常见。

2.2 学历的背后所代表的能力

首先表明一个观点,绝大部分的岗位并不需要什么高学历的人才,很多岗位的工作内容本身并不怎么复杂,培训个一两年甚至更短,高中生就能胜任。学历只是筛选条件,筛选那些自控力,学习能力,专注力 都比较突出的那些人。这样的人企业的雇人成本相对更低。换句话说,这个人的容错率高,比较能够适应岗位。,

更何况本科生,研究生数量增长,同一个不错的岗位能有很多人投递。能招更高的学历肯定招更高的学历,能招好学校肯定招好学校,能招研究生为什么要找本科生,即便两者的工作内容都一样,公司对外宣称给人的印象也更加专业。更重要的是企业招人是有成本预算的,面试也需要人力。你说,一般学校本科生也有牛人,我承认,但是这种人太少了。将投简历的每一个人都招来面试,面试成本将会巨大。更好的学校,更高的学历,意味着这类人的基本能力过关(大部分情况),这类人的学习能力,应用能力,交流能力一般情况比本科生更优秀,企业也有更大的概率得到想要的人。更何况,绝大部分人做的工作能力要求并没有那么高,学历更多只是一个筛选手段。面试造火箭,工作拧螺丝,不只是调侃。

详细可以看:【高考经济学】:为什么考大学这么难? 点开视频看看学历背后的更多的逻辑。

2.3 学历之外的衡量能力的标准

敲门砖这段也仅仅是考虑到学历这一个因素,实际上企业招聘要复杂的多。但核心离不开创造价值,换个说法就是能够持续剥削剩余劳动价值,企业又不是政府,为什么要给员工白嫖。一般情况下,企业是基于成本和效益的综合考虑,综合考量之后才会录用。但也会有特殊情况,比如老爸是这个企业的大股东,就不用搞这么麻烦,直接空降。

成本主要包括筛选简历成本,面试成本,培训成本,离职成本。招聘的效益主要是能够好好干活,能够按照要求做好本职工作。如果能够做出什么可以提高生产、提高工作效率这些肯定是更好的。除了本质工作外的额外的,也可以说是潜力。我看我公司的招聘要求就有写这一条。不过潜力什么的都比较虚,一般公司也就通过面试和简历进行筛选人的能力,想了想好像也并没有什么比较有效的手段反应。而且面试通常情况下比较短时间,不能完全评估一个人复杂的工作能力。虽然是这样的,但是先应聘上,后面的试用期往后再说。而且工作内容并不会太难,没什么情况,试用期一般都会给通过的。

2.4 游戏规则

游戏规则也就是评价体系,是评价一个事物符合不符合这个标准,符合就代表着有价值,可以被企业纳入考虑范围之中。

不同游戏体系,游戏规则是不一样的。而大学的评价体系和市场对大学生的评价体系不一样,在学校里面好学生的标准是学习好,勤奋,不旷课,乐于参加各种活动,收获满满的证书。但是就拿我的岗位来说,这个岗位的评价体系和好学生的评价体系不同,我这个岗位嵌入式软件工程师,要求四六级,要求一定的绩点(绩点反应学习能力而已),要求一些相关的项目经历和比赛经历。注意就我这个岗位而言,他的规则是要求我有相关的经历和技能,而且绩点这些反应学习能力的不能低。从这里就可以简单看出,学校内的好学生不一定能得到市场的认可。

那企业认可什么人?

从上面我们就知道了,企业要的不是好学生,要的是学习能力强,要求的是相关经历和经验的人,这些人能够减少企业的试错成本,也能够为企业提供价值。一句话就是降本增效的人。

2.5 隐性规则

在招聘过程中,企业往往会遵循一些隐性规则。虽然这些规则不是明文规定的,但它们对于应聘者和企业来说都非常重要。以下是一些条企业招聘的隐性规则:

  • 关系优先:在招聘过程中,有关系的候选人往往会得到优先考虑。甚至只能考走关系才能得到考虑。

  • 学历背景:一些企业更倾向于招聘名校毕业的候选人。有些企业是只招名校的,但不会写明,但等多的企业会直接写明只要985/211的毕业生。

  • 年龄因素:部分企业可能有年龄偏好,例如更倾向于招聘年轻人或有一定工作经验的中年人。IT 35优化,懂得都懂。

  • 性别歧视:尽管法律明确禁止性别歧视,但在招聘过程中,一些企业可能仍会更倾向于招聘某一性别的员工。这个还是蛮常见的,女性在一些岗位就是具有天然的劣势。

  • 地域歧视:部分企业可能会对来自某些地区的候选人持有偏见。

  • 外表形象:企业可能会关注候选人的形象和仪表,尤其是那些需要面对客户的岗位。

这些隐性规则在不同企业和行业中的表现可能会有所不同。对于求职者来说,了解这些隐性规则有助于更好地准备面试,提高成功率。

2.6 手上的筹码

手上的筹码就是根据企业的评价标准去评估自己的价值,看看自己手上的筹码能换多少的钱。

在敲门砖和学历之外我们就已经大概知道企业的评价标准,但是还是比较模糊,不够精确。根据这些标准我们就可以知道自己手上的筹码了,这里的筹码我具体概括为:基本面+潜力面

基本面是达到岗位的要求,基本面是竞争岗位的基本条件,达到这个才有被选择的资格。由于不同岗位的要求也不尽相同,一般而言基本面最重要的就是学历,其次就是体现行业常识的技能、项目、证书。

潜力面就是岗位外的其他亮点,是击败其他面试者的武器。是含金量搞的比赛证书、是参与过的开源项目、是过往做出的水平高的项目、是实习证明等等。

2.7 数学游戏

大概知道了游戏规则,知道自己手上的筹码在企业视角下重量是多少,就可以大概估计一件事情的成功率了。评估一件事情是否可行的具有很多种方法,对于找工作个人认为比较方便简单的就是历史数据法专家判断法。我们可以通过查看查看往年的同校的师兄师姐的就业情况,特别是和自己差不多的师兄师姐就大概可以估算自己未来的就业位置是在什么位置。也可以找一些工作了好几年老鸟和刚毕业的师兄师姐去询问,就大概知道能获得什么水平的薪资了。也可也反向学习,了解到往届师兄师姐的毕业去向,了解一下他们的简历是怎么样的,是怎么找到这份工作的。通过这些就可以知道大概的情况,也结合期望的岗位继续询问,会得到一个更精确的数据。再结合之前了解到的企业的大概筛选规则,就能得到一个大概的概率,这个概率就是能拿到不错工作的概率,虽然比较粗糙,但还算合理。

3、其他杂谈

3.1 认识到自己的身价

大学生的身价真的特别低,特别是做兼职或者赚学校那么一点的出勤分和创新分而出售自己的时间。或者花费太多时间在那些得不到快乐和收获的地方,像是一些学生活动/费力不讨好的工作,而是我是觉得特别的不值得。大学四年的相对自由的时间,不如选择活在当下快乐一些或者为未来拼搏一些,就不要花费时间在学校常常组织的活动上面。可能不这样做,少一些出勤分和创新分,拿不到奖学金,但这个不重要好吧,奖学金一个学期发一次,最厉害的能拿1W, 一等就3K。也不用担心创新分这些不够,有很多另辟蹊径获取创新分的方法,比如随便写点软著,参加一点水水的比赛搞搞就够了。

3.2 相对低成本的试错

在大学中,试错成本是比较低的,可以尝试很多的事情,找到一个自己觉得OK,薪资也还过得去的职业并不困难。

可能现在还比较迷茫不知道选择什么岗位或者行业,不知道可以先选择多尝试一下。就自己而言,对于写代码,搞搞硬件并不讨厌,也还有点兴趣。嵌入式对于电子信息工程的二本学生就是一个跳一跳可以够得着,薪资也算还行的方向。薪资在这么多行业里面算中等偏上,而且未来也有一定的上升空间,普偏工作3-5年,薪资能到1W5-2W一个月。如果是对其他感兴趣可以自己找一找有无相关工作,而且努力努力能够够得着的工作。就目前的环境而言,经济常态化放缓,打工是基本赚不了大钱的了,一线城市买个马桶的钱都可能不够。找个差不多薪资的工作,好好享受一下生活比较实际。

如果已经决定了某一个方向,就可以查看相关的就业网站看看基本要求是什么?能力要求?岗位含有隐含信息?学历要求?然后根据这些要求定制自己的目标。

3.3 其他的选择

因为本人也只是普通大学生,没有太多其他的选择,又不想考研/考编,不努力工作都可能找不到(肯定找不到现在的工作,就我学校来说,是一份非常不错的工作了)。如果是家里有资源这些,文章就没啥参考价值。因为人家的选择有很多,可以拖关系,可以出国留学,可以直接继承家业,可以当包租公。

其实还有其他的选择,不过职业的稳定性有待确定。一些新职业,比如数字化解决方案设计师,退役军人事务员、研学旅行指导师等新兴职业也是可选的。

3.4 大数据时代的信息收集

大数据时代,收集信息的能力就变得十分地重要。就我观察我学校的同学来看,很少人具备或者意识到如何有效的收集到自己想要的信息。很多人直到大三/四,直到找工作才意识到自己并不好找工作,找工作屡屡碰壁,或者能找到但是待遇不行。好再或者不好再,我也无法评价好与坏,很多人的信息检索能力差一些。若是能提前意识到,了解到就业的形式,如何就业,如何学习就能更早的做好准备(竞争),找到预期的工作。

一般而言,我们都需要一个框架去理解世界,而在上文中一直讨论了框架性的内容,并没有过多涉及细节。框架也并非正确,还得经过验证才能确定它的泛用性。不过这个框架可提供一些思考的方向,通过这些方向,可以使用AI 工具进行拓展。可以看书、知乎、new bing、微信公众号、知识星球了解到具体的更多细节以及具体的实施路径。

4、总结

这一基本常识的章节说了这么多,主要目的还是说明一个观点,想要被市场接受,就要清楚市场的规则,并按照市场的规则进行游戏。不过这里谈到的规则还是比较浅,角度也不多,更多是从个人的角度出发,实际上还有很多角度可以去审视找工作这个命题,可以从供需、教育、国家发展等来看,不过对于找工作来说,可能是从供需和个人的角度会比较有用一点。

二、电子信息专业学生的思考

由于个人是电子信息专业的大四学生,仅从电子信息专业找嵌入式岗位的情况提供一个参考。其实选择是有很多的,可以先上网收罗一下,电子信息专业学生一般都有哪些岗位可以选,不需要局限在我作为例子的这个。

1、到底适合什么岗位

对于嵌入式而言,一般而言是具有这几种岗位,一是单片机开发工程师,二是Linux开发工程师,应用开发/驱动开发,三是硬件开发工程师。这三种是本科生常见的岗位,主要是二本能够比较容易够得着的岗位。

1.1 为什么我选择嵌入式

提一嘴为什么我选择嵌入式岗位 ,把自己2022年10月份的嵌入式开发自救指南 进行了部分修改,那时候大三,还是具有参考意义的。

嵌入式是可以细分为很多方向的,做单片机也可以是嵌入式,做嵌入式Linux也是,FPGA也是。单片机相对而言是最简单的,其次的嵌入式Linux,最后是FPGA。薪资是随着难度增加的,这也是有市场需求和现在的市场人才饱和程度决定的。单片机相对而言比较简单,竞争强烈,薪资相对而言较低。这里讨论的嵌入式仅仅是嵌入式Linux和单片机,FPGA我并接触过,就不讨论了。

从四个方面来说一下为什么选择嵌入式(本人意向是嵌入式Linux方向,以自己作为例子,目前嵌入式Linux已经上岸)

1.1.1 从四个角度看

角度有限,但还算合理,最核心的逻辑就是数学期望最大化,这里的数学期望=价值*概率。这里的价值不仅仅是钱的多少,还有自己喜欢什么,适合什么。想要做好选择涉及的东西太多了,个人需求,行业发展,现有资源与长板等,只能从有限的四个角度简单进行分析。

(1)个人需求

目前个人没有大的梦想,想要混口饭吃,薪资不能太差(中等或者偏上,当然越高越好,从未奢望过打工实现财富自由,最好有一些时间能够用来提升自己的思维高度和认知,这样才能赚更多的钱,人不能赚到认知以外的钱),也不想要996的生活。不想考研,也对于公务员没有多大的兴趣,不想过那种生活,也做过职业适合测试,对平时也有一些观察(大学加入了实验室,做过单片机的项目),对写代码还是挺感兴趣的。职业性格测试(MBTI),虽然MBTI心理学不承认这个,这个也只能作为参考,部分企业是看这个的。测试发现是ISTJ的类型(百度百科的说法:对于ISTJ型人来说,他们生活中最重要的品质是对当下需要做的事情有一种持久的责任感。他们的现实主义、组织能力和对事实的掌握使他们能够彻底地完成任务,并且非常注重细节。ISTJ的核心是逻辑实用主义者,他们根据自己的经验做出决策,并着眼于所有事情的效率,对自己所属的人和组织有强烈的忠诚。他们认真对待自己的工作并相信别人也应该这样做),还算符合。同时观察自己喜欢一些需要创造性的工作(比如现在正在写的这篇文章),执行力还行。

(2) 现有资源与长板

大三,专业自动化,有单片机经验、参加过一些小比赛、(意外不断,成绩不理想)、学习过STM32、51单片机、RTOS,Linux应用开发。也正在做一个小项目,有持续学习的能力。

(3) 个人需求职业

自动化,二本专业,这个就限制了很多选择了,期望高一些,符合需求,开发岗位是比较合适的。嵌入式是比较合适的,与现有资源结合最紧密,也比较符合个人需求。但嵌入式是一个大方向,虽然单片机不是我想要的(虽然是一个学习的),我距离我最近,期望最高的就是嵌入式Linux方向。嵌入式行业,我是学生,没有实际做过,仅仅是网上看过大佬分析的文章/或言论(培训机构的不算),得出一个结论就是,嵌入式行也比不上互联网但是在众多行业里面还是中等偏上,算是比较接近互联网行业的,还是不错的,也不是公认的夕阳红行业,都说是在发展。

补充:经过大半年的找工作,上面判断基本正确,薪资还是不错的,但是比不上互联网。我这个学校今年嵌入式工资平均下来8K,嵌入式Linux岗位,1W。主要还是找到嵌入式工作的人并不多。

(4) 优先级排序

虽然我想要高工资,但是互联网当码农离我又太远。公务员与读研也没有多大的兴趣,优先级低,虽然读研主要是消耗时间成本(调研过了,经济压力比本科小很多,我家里是能够负担的起的,小城镇家庭)。对于嵌入式而言也上过各大招聘机构看过,能力要求 > 学历要求,二本学历勉勉强强,我就不需要读研了。况且身边人大佬也有毕业月薪就1W+的,我自己也有信心能拿到差不多的工资。

补充:我实际上到了这个薪资水平

1.1.2 距离目标还有多远距离

知道自己的目标,是嵌入式Linux软件开发以及自己有的资源,下一步就是需要对目标清晰化的认知,去调研,而不是我以为。通常我以为的事情,往往是不对的,最值按照我以为的想法去做,结果大都不如意。下面给出本文章最有用的链接,也算是最有价值的一个知乎回答,有第一手的资料,尽可能减少了信息在传递过程中的损耗。

从路线以及面试和招聘要求,分析自己离目标还很远,需要学习的东西很多,如何在剩下的半年时间内学习到大概符合要求,只能做取舍。

下面三篇都是好文,是我看了这么多文章,1年多发现最好的一篇了。作者从数据事实出发,分析到位,也和网站招聘的要求所符合,真的帮到了很多人!!!

1.2 了解岗位

从Boss直聘了解到的嵌入式软件工程师的岗位要求。到底什么样的人?什么样的人才符合他们的游戏规则?

这里仅仅列举两类进行参考,单片机类和linux应用开发类。

1.2.1 单片机类岗位

岗位一

岗位职责:

  1. 参与需求分析、架构设计及相关评审工作;
  2. 负责嵌入式软件的开发、调试、维护和相关测试验证程序开发、维护;
  3. 与硬件、测试、生产等部门一起进行产品的验证、测试、故障定位和修复;
  4. 负责嵌入式软件相关技术文档的编写与维护。

任职要求:

  1. 计算机、电子信息类相关专业本科及以上学历,三年以上嵌入式开发经验;
  2. 精通C语言、单片机、数据结构;
  3. 熟悉常用的单片机如STM32,熟悉常用的外设驱动,有uCOS、FreeRTOS嵌入式系统开发经验;
  4. 能承受工作压力,有责任心和上进心,有医疗设备开发经验者优先。

细读要求

  • 专业要求:电子信息类专业
  • 有相关经验:3年
  • 基础要求:C语言,单片机、数据结构,RTOS基础、常见外设和协议

岗位二

岗位职责:

  1. 负责TBOX软件开发工作,主要负责MCU软件开发,嵌入式OS应用,整车CAN通信,UDS功能开发,蓝牙通信开发;
  2. 透彻理解主机厂的设计规范,并在软件开发中具有风险识别能力:
  3. 软件开发工作遵循ASPICE开发流程进行,完成静态测试 ,单元测试,集成测试;
  4. 负责制成TBOX新增或修改功能的详细设计文档,需要有良好的文档编辑风格;
  5. 与客户进行技术对接。

岗位要求:

  1. 具有2年以上嵌入式开发经验,具有车载电子嵌入式软件开发经验尤佳:
  2. 有很强的责任心,具有团队协作精神和沟通协调能力;
  3. 熟练使用嵌入式软件开发相关的工具: SVN,GIT,C/C++,MCU开发, Linux应用开发,嵌入式Os;
  4. 熟悉软件V模型的开发流程,能够胜任软件开发,软件测试的工作;
  5. 有如下经验优先: CAN总线通信、UDS诊断、休眠功耗管理、OTA,蓝牙通信,蓝牙钥匙、熟悉GB32960,熟悉ISO15765.

细读要求

  • 专业要求:电子信息类专业
  • 有相关经验:2年
  • 基础要求:C语言,单片机、数据结构,RTOS基础、协同工具使用、Linux应用开发基础

岗位三

任职要求:

  1. 本科及以上学历,1年以上嵌入式软件开发工作经验;
  2. 熟练掌握C/C++语言编程,熟悉单片机外围电路知识,具备相应的电路分析能力;
  3. 熟悉STM32单片机开发,ucos系统,熟悉单片机常用外设,如定时器,中断,ADC;
  4. 熟悉常用通讯总线,如CAN,RS485,I2C,SPI,UART;
    5.有TI DSP相关产品开发经验优先

岗位职责:

  1. 根据嵌入式软件系统的需求,完成功能设计、编码实现等开发工作;
  2. 负责嵌入式软件系统的功能调试、集成测试工作,编写相关的测试方案及用例;
  3. 按项目管理规范的要求编制、整理、提交相关的技术开发文档;
  4. 根据公司要求,对项目方案进行修改、维护与优化;
  5. 完成公司安排的其他任务。

细读要求

  • 专业要求:电子信息类专业
  • 有相关经验:1年
  • 基础要求:C语言,单片机、数据结构,RTOS基础、常见外设和协议、能读懂基本的原理图

岗位四

岗位职责:

  1. 负责参与嵌入式系统的需求分析、系统设计工作,输出必要的设计文档;
  2. 负责单片机系统软件开发;
  3. 负责参与产品测试方案制定及完成测试软件的编写;
  4. 负责按要求完成各种文档、资料、软件等相关资料的编写和归档。

任职要求:

  1. 全日制本科及以上学历,电子、通信、自动化等相关专业;
  2. 熟悉主流32位单片机、ARM芯片的开发;
  3. 熟悉单片机外围电子电路的原理和程序开发,如AD采样、PWM、I2C等相关外设开发;对电机控制有一定认识;有陀螺仪芯片、驱动滤波应用、姿态融合工程经验;有电控PID控制经验优先;
  4. 精通C/C++语言,有良好的编程习惯和技巧及技术设计文档写作能力;
  5. 有5年(含)以上的嵌入式软件开发经验,有机器人、无人机、扫地机行业工作经验者优先;
  6. 具有良好的沟通,协调能力和团队精神,能勤奋刻苦,踏实工作,能承受一定的工作压力。

细读要求

  • 专业要求:电子信息类专业
  • 有相关经验:5年
  • 基础要求:C语言,单片机、数据结构,常见控制的基础算法(滤波、PID)、常见外设和协议、良好的编码习惯

岗位五

岗位职责(软件开发方向):

  1. 负责公司产品项目中基于单片机的软件设计及调试工作;
  2. 负责公司产品项目的维护及故障的解决;
  3. 参与产品方案设计、选型;
  4. 参与产品需求分析与设计工作分解;
  5. 代码编写并修改缺陷;
  6. 编写产品相关技术文档;
  7. 制作样机,执行产品整机调试及性能测试分析,并进行改进。

任职要求:

  1. 本科及以上学历(有毕业证书或学信网可查询),电子、自动化控制、计算机或相关专业;
  2. 有良好的编程风格和一定的编程技巧,扎实的C语言编程能力;
  3. 熟悉单片机的软件编程,精通至少一款处理器的开发,如新塘,华大,STC、AVR、RENESAS、STM32等;
  4. 会使用Altium Designer或99进行原理图和PCB的分析更佳;
  5. 熟悉传感器算法的优先;
  6. 具备单片机软件开发经验,参与过完整的产品研发过程,熟悉产品开发流程;
  7. 有一定压力承受能力。

细读要求

  • 专业要求:电子信息类专业
  • 有相关经验:5年
  • 基础要求:C语言,单片机、数据结构,常见控制的基础算法(滤波、PID)、常见外设和协议、良好的编码习惯

1.2.2 单片机类大概汇总

学历要求:专科以上,一般都要求本科

基础能力要求:

  • C语言基础
  • 熟悉主流32位单片机、ARM芯片的开发
  • 熟悉单片机常用的协议
  • RTOS基础
  • 能读懂基本的原理图和PCB
  • 数据结构基础
  • 常用的开发写作的工具的使用,git或者svn
  • 良好的编码规范(比如Linux的编码规范)

不同岗位的额外要求:

  • 常见控制的基础算法(滤波、PID)。做控制类的公司,比如机器人
  • 熟悉车载协议,CAN总线通信、UDS诊断等。做汽车的公司
  • ……

不同领域的公司额外要求不一样,当你了解过这些之后,再回头看一些嵌入式(特指单片机)软件工程师的学习路径,其实也是差不多是要学习这些。

1.2.3 嵌入式Linux应用开发

岗位一

工作职责

  1. 熟练掌握C语言开发能力
  2. 熟悉软件开发流程及软件设计文档编写工作
  3. 负责软件的设计,开发和调试等相关工作。
  4. 熟悉 ARM cortex R55/M7 的体系架构;
  5. 根据项目需求,在 ARM cortex 上使用C 语言进行软件开发;
  6. 熟练使用 ubuntu 系统,有 交叉编译 开发经验;
  7. 有实时操作系统(RTOS)开发经验;
  8. 有 MD5、RSA 等密码算法开发经验优先
  9. 有 以太网 L2、L3 层开发经验优先

任职资格

  1. 具有3年以上嵌入式开发经验,具有车载电子嵌入式软件开发经验尤佳;
  2. 有很强的责任心,具有团队协作精神和沟通协调能力;
  3. 熟练使用嵌入式软件开发相关的工具:SVN,GIT, C/C++, Linux应用开发知识
  4. 熟悉软件V模型的开发流程,能够胜任软件开发,软件测试的工作;

细读要求

  • 专业要求:无细说
  • 有相关经验:3年
  • 基础要求:C语言,有文档编写文档的能力、熟悉ARM cortex体系,熟悉
    ubuntu,RTOS、嵌入式软件开发相关的工具、Linux应用开发知识、熟悉V模型
  • 加分 MD5、RSA 等密码算法,以太网 L2、L3 层开发经验

岗位二

岗位职责:

  1. 负责Linux平台应用软件研发;
  2. 负责攻关Linux平台应用软件的重点技术方向;
  3. 负责嵌入式Linux系统相关模块定制和裁剪、调试、驱动、追踪与分析技术问题。

任职要求:

  1. 本科及以上学历,计算机、电子、自动化、通信等相关专业,1~8年及以上嵌入式Linux经验;
  2. 熟悉Linux系统下应用编程,掌握静态库、动态库、网络、多线程编程等知识;
  3. 熟悉单片机或ARM的设计与开发;
  4. 有良好的逻辑分析能力和独立解决问题的能力;
  5. 能阅读和理解英文用户手册,有良好的编程习惯和文档写作能力。

细读要求

  • 专业要求:本科

  • 有相关经验:1~8年

  • 基础要求:C语言,有文档编写文档的能力、熟悉
    ubuntu,RTOS、熟悉单片机或ARM的设计与开发、Linux应用开发知识、能阅读和理解英文用户手册

岗位三

工作职责:

  1. 负责linux嵌入式系统下产品整体应用软件架构的设计;
  2. 优化SOC LINUX系统稳定性。

任职要求:

  1. 本科及以上学历,1年以上嵌入式Linux软件开发经验;
  2. 了解基于QT的QGroundControl地面站二次开发,PX4通信,mavlink;
  3. 了解无人机应用、px4程序架构、pixhawk应用、多旋翼无人机原理与部件、通信链路等;
  4. 熟悉linux socket编程,熟悉网络通信协议UDP、TCP、HTTP,熟悉rtsp、rtmp等流媒体协议。

细读要求

  • 专业要求:本科
  • 有相关经验:1年
  • 基础要求:C++、QT、了解无人机相关知识、熟悉linux socket编程,熟悉网络通信协议

岗位四

岗位职责:

  1. 负责Linux应用及中间件开发;
  2. 负责需求解读、软件详细设计、单元测试、技术文档编写;
  3. 参与新技术、新模块的开发工作;

任职要求:

  1. 本科以上学历,5年以上Linux嵌入式项目开发经验;
  2. 熟练掌握C++、Linux开发、IPC通信和多线程开发等技能;
  3. 有车载电子业务模块开发经验者优先(如移动收音、蓝牙Wifi、倒车、音视频、手机互联、源管理等);
  4. 有良好的思辨能力、语言表达能力和团队合作精神;

细读要求

  • 专业要求:本科
  • 有相关经验:1年
  • 基础要求:C++、Linux开发、IPC通信和多线程开发等技能、车载电子业务模块开发基础

岗位五

岗位内容

  1. 根据要求能量化的工作内容,评估开发难度及执行;
  2. 项目文档编写,并针对开发过程做文档规格梳理归档
  3. 根据市场的需求,对新技术的调研与实施,汇报工作内容及参与评审会
  4. 根据客户或其他部门的反馈进行Bug修复和软件优化
  5. 进行程序单元、功能的测试,查出软件存在的缺陷并保证其质量;

岗位要求:

  1. 5年以上嵌入式开发经验,至少3年linux环境下开发经验;
  2. 熟悉linux(unix)操作系统, 熟悉ARM9/cortex-A8研发平台的软件开发,熟悉Ti平台者优先;
  3. 扎实的C/C++语言功底和良好的面向对象和模块化的开发思维,熟悉cmake、makefile, shell编程等;
  4. 熟悉多进程、多线程、TCP/IP通讯、socket编程,内存管理机制等,具备Linux代码开发,调试与优化的能力;
  5. 具有蓝牙,3G/4G,USB,串行总线(232,485),CAN,SPI等总线调试经验,有工业总线项目经验者优先;
  6. 熟悉GUI或相关嵌入式UI库(QT,Gtk,opengl等),有QT开发或Android开发者优先;
  7. 熟悉mysql, sqlite数据库者优先;
  8. 具备较强的文档编写能力,能独立编写设计过程文档;
  9. 有环保行业嵌入式开发经验者优先考虑

细读要求

  • 专业要求:没写
  • 有相关经验:5年
  • 基础要求:C/C++语言、Linux开发、IPC通信和多线程开发等技能、较强的文档编写能力,能独立编写设计过程文档
  • 额外要求:熟悉GUI或相关嵌入式UI库、熟悉mysql, sqlite数据库者、3G/4G,USB,串行总线(232,485),CAN,SPI等总线

1.2.4 嵌入式Linux类大概汇总

学历要求:本科

基础能力要求:

  • C语言基础
  • 熟悉Linux操作系统,包括IPC通信和多线程开发等技能
  • QT
  • 熟悉ARM cortex体系
  • 数据结构基础
  • 常用的开发写作的工具的使用,git或者svn
  • 良好的编码规范(比如Linux的编码规范)
  • 有文档编写文档的能力

不同岗位的额外要求:

  • 熟悉GUI或相关嵌入式UI库
  • 熟悉mysql, sqlite数据库
  • 有车载电子业务模块
  • MD5、RSA 等密码算法
  • ……

1.2.5 总结

我这里大概整合了几个而已,实际上还得自己更详细的查看。实际上需要什么技能需要自己去找更多的公司,看更多的招聘岗位,就知道这个岗位普偏要求的技能是什么?加分技能又是什么?学历的要求是什么?有没有什么软实力要求?大概知道这些就可以根据要求去看一些推荐的教程与学习路线,跟着进行学习了。

优先学习基础能力要求部分,如果有自己感兴趣或者前景比较OK的行业就可以在学习完基础能力的那部分之后,学一下这个行业要求的额外技能,比如密码算法、车载业务等等。

PS:搞嵌入式的最好可以买一个开发板来进行学习,虽然不买板子也行,也可以仿真。

在“打工人的自我修养章节”中,大概聊了一下企业想要什么样的人,企业的雇人标准以及自己手上的筹码。在“了解岗位的章节”中,就大概通过招聘网站的岗位去简单查看了企业想要什么样的人和企业的大概雇人的标准。知道了标准就需要反观自己的筹码,下面将对“2.6 章节 手上的筹码” 中的基本面和潜力面进行详细介绍

2、基本面

在我这里的划分中,基本面代表着符合企业的雇人的最低标准。这个是一般的筛选标准,如果自己比较特殊,就可以不用考虑这些。比如企业老总是自己的亲戚或者自己在某个方面特别突出,就会开特殊通道录用。不过对于大部分人来说,并没有关系,也很少有什么特别突出,大部分都是普通人。

2.1 学历

在学历层面上看也就是全日制本科,如果是大厂可能只招收研究生,那研究生就是最低的学历标准。

2.2 技能&必备证书

技能方面,就上面的单片机岗位而言,需要有以下基础技能:

  • 英语四级
  • C语言基础
  • 熟悉主流32位单片机、ARM芯片的开发
  • 熟悉单片机常用的协议
  • RTOS基础
  • 能读懂基本的原理图和PCB
  • 数据结构基础
  • 常用的开发写作的工具的使用,git或者svn
  • 良好的编码规范(比如Linux的编码规范)

嵌入式方面一般不要求证书,如果是金融、教育、法律、医疗等这些行业就需要证书,证书和学历一样都是入门条件之一。

2.3 工作经验

由于本文面向的对象是校招生,企业不要求工作技能,一般要求应届毕业生 。企业一般对应届毕业生的标准都会比社招要低,所以应届找不到工作,社招找工作的难度将会增加很多。

2.4 个人特质

个人特质主要指一些硬性条件,比如性别、年龄、残疾、婚姻情况、性格、外貌、种族等。有一些是隐性条件,岗位要求可能不会写上,但确实会对录用有较大的影响。想要从在某个行业或者岗位干活,就需要自己去查了。

不过就目前我对嵌入式行业的了解,性别和年龄没有什么限制;也挺少听说35岁就被裁员的,我公司还是有一些老家伙的。

性格情况,很多大公司都需要做一些性格测试,以此筛选最符合公司某个岗位的性格的人。不过呢,就我个人认为,符合牛马的性格适合大部分公司,忠诚,服从调度,勤奋是我认为最重要的三个特质。

2.5 笔试

IT,嵌入式往往都需要笔试。笔试是衡量个人基础最直观的手段之一,笔试都过不了,一般就没有后面的面试了。IT和嵌入式笔试的难度也不一样,嵌入式一般来说,刷一下leetcode 基础题和中等题就够了,掌握常见的套路就能应付绝大部分笔试。

嵌入式笔试参考内容:

嵌入式笔试面试内容

除了知道基本面有什么,还需要给自己镀金。镀金目的就是击败其他竞争者和提高自己的身价。如果改岗位或者行业特别缺人,也不需要这么搞这么多东西就能录用,毕竟还没那么卷嘛。这里的镀金就是下面的说的潜力面。

3、潜力面

上面是基本面是很基础的东西,是一眼就能看出的实力,通常也是比较靠谱的。但国内大学生数量膨胀,企业需要其他的标准去筛选出合适的人选,下面就是一些筛选标准或者说加分项。

2.1 绩点

绩点一般评估的是学术能力和学习能力。但对于一般的二本学生,学术能力就算了吧。更何况,企业一般都不需要学生具备什么学术能力。企业更关注的是绩点背后代表的学习能力、专注力、忍耐力等软实力。绩点高,代表着培养这个员工更容易(学习能力和专注力都OK),效益也就更好。一般企业关注的是绩点的排名而不是绝对绩点的分数(但是绩点也不能太低)。企业对不同专业的考试的不同难度没有一个标准,绩点并不能相对准确的反应一个人的能力。关注绩点的排名,也就是在本专业排名是多少,这个是企业更专注的。

插一嘴,个人认为,嵌入式方面,绩点是需要一些的,起码不能太低。绩点背后的能力也可以由其他方面去反应(证书、实习、过往做过的项目),绩点这个面个人觉得并不是特别重要。

2.2 证书

就嵌入式而言。除了英语的四级证书,其他的证书是属于加分项。证书只是证明自己能力的一个手段而已,不过是最直观的一种方式之一。

英语

就嵌入式而言,需要一定的英语能力,这里指的是读写的能力,也就是要求能读懂英语的开发手册,芯片手册之类的。企业一般需要应聘者提供相应的手段证明,证明自己有这个读写的能力。一般企业认可的证书,四六级,最基本的就是英语四级证书 ,六级是加分选项,四级可能会直接影响企业是否录用。

没啥用的证书

计算机一二级考试证书,普通话证书可以丢了,四级会好看点,我也没听说过哪个公司要求什么证书。不需要浪费时间去考普通话证书,计算机一二级证书,企业是不会看的。

高水平证书

不同行业的高水平的证书是不一样的,就我目前了解。考证含金量高的证书有,ARM证书、Atmel证书、NXP证书、微软的证书、红帽证书、工信部证书等。这里简单对这些证书做一个说明:

  • ARM证书、Atmel证书、NXP证书这些是芯片类的证书,拿到说明对这类芯片有一定的了解,考的话推荐靠ARM证书,通用一些。很多公司用的ARM的芯片,一般来说拿到这个证是很好的加分项。
  • 红帽证书,运维工程师的加分证书。嵌入式工程师考这个没啥用。
  • 微软的证书。面试外企有一定的分量,但是嵌入式的话,emm,没怎么听说过。嵌入式大部分用的不是微软的软件,开发环境用的Linux多一些,所以个人感觉没啥用。
  • 工信部证书。工信部证书,即工信部颁发并承认的某项技能证书,国家认可,具有法律效力。

这些高水平的证书放在简历里面是很好的加分项;由于个人没有考过这些证书,也不是很清楚具体的作用,想要详细了解可以自己查一下。

2.3 比赛

先说一点,很多比赛都是比赛需要队友,比较吃队友,比较考运气一点。对找工作的性价比可能不是那么高,不如搞一个合适的项目来的实在,但是如果比赛能拿到还OK的奖项,也是很好的加分项。毕竟在一些合作的比赛中,能够体现一个人的合作能力、沟通能力、创新能力等,还是比较好的。不过比赛拿不到什么名次或者参加的比赛企业不认可,也没啥用,所以说性价比不高或者说期望不高,风险有点大。

在嵌入式,企业认可的比赛并不多。下面列举一些比赛:

  • 电赛
  • robomaster
  • 智能车
  • ACM国际大学生编程竞赛
  • 挑战杯全国电子大赛
  • 全国大学生机器人大赛robocon

嵌入式其他的倒是没什么听说。如果能拿到这些比赛的比较优秀的奖项,那也是一个很好的加分项。这几个都是电子类的比赛,都能反应一个人的合作能力、沟通能力、创新能力等综合能力。robomaster对于以后搞机器人的企业是很加分的。电赛和智能车更偏向单片机岗位的方向,搞这块加分更多。但参加这三个比赛,拿到还OK的名次,背后反应这个人的综合能力还是不错的加分项,即便不搞机器人行业和不做单片机的岗位。

其他算法比赛也是很加分的,算法的acm,天体,kaggle

2.4 项目

过往做过的项目这个是很重要的。做过的项目通常能反应下面的能力:

  • 展示技能和能力:大学期间的项目经历可以为求职者提供一个展示自己技能和能力的平台。通过详细描述项目的背景、所用技术和解决的难题,求职者可以向招聘企业展示自己在某个领域的专业技能和解决问题的能力。

  • 实际工作经验:项目经历通常意味着拥有实际的工作经验,这对于招聘企业来说具有很高的价值。实际的工作经验可以帮助求职者更快地适应新的工作环境,减少培训成本和时间。

  • 团队合作与沟通能力:项目经历通常需要团队合作,这意味着求职者需要具备良好的沟通和协作能力。这些能力在企业中非常重要,因为员工需要与同事、上级和客户等进行有效沟通以完成工作任务。

  • 创新和解决问题的能力:在项目实施过程中,求职者可能会遇到各种挑战和问题。他们如何应对和解决这些问题,可以体现出他们的创新和解决问题的能力。

在我嵌入式中,我被面试了这么多场,基本上都涉及到上面的综合能力。不过项目需要和岗位的要求统一,统一才能证明自己具有职位描述的技能和能力。

比如符合单片机要求的项目要求,举例

项目名称:智能车载系统

项目描述:该项目使用STM32F407VG单片机开发,使用C语言编程。系统通过多种传感器和执行器实现对车辆的控制和监控,包括车辆的行驶状态、安全状态等。

功能要求:

  1. 车速监测:使用车载传感器监测车辆的行驶速度,并将数据发送到中央控制模块。

  2. 位置定位:使用GPS模块实现车辆的位置定位,并将数据发送到中央控制模块。

  3. 智能驾驶:使用摄像头和超声波模块进行环境感知,实现车辆的自动驾驶和避障。

  4. 安全监测:使用气体传感器和温度传感器检测车内的气体浓度和温度,保证车内安全。

技术实现:

  1. 使用车载传感器监测车辆的行驶速度,使用GPS模块实现车辆的位置定位。

  2. 使用STM32F407VG单片机实现中央控制模块,使用CAN总线实现各个子系统之间的通信。

  3. 使用摄像头和超声波模块进行环境感知,使用OpenCV库实现目标物体的识别和跟踪。

  4. 使用气体传感器和温度传感器检测车内的气体浓度和温度,将数据发送到中央控制模块。

  5. 使用FreeRTOS实现多任务处理,实现车辆各个子系统之间的并发控制。

  6. 使用Altium Designer进行原理图和PCB设计,保证电路设计的可靠性和稳定性。

  7. 采用Git进行版本控制,保证代码的可追溯性和可维护性。

  8. 采用Linux编码规范进行编程,保证代码的可读性和可维护性。

  9. 团队合作,包括需求分析、设计、编码、测试等环节。

这种符合单片机工程师的项目就很好,个人就能做,也能够体现单片机工程师的个人能力与自己的思考。

项目不仅局限与这种项目自己做的项目,网上还有很多开源的项目可以做,如果能参与到开源项目的制作,那将会是一个巨大的加分,技术面的面试官会对面试者刮目相看。

或在原来的开源项目中进行修改,优化或者添加功能也是很好的,不一定要自己从零开始做,但是直接复制粘贴开源项目不可取。但是跟着开源项目做,对于单片机类的项目,需要对整合项目了解很清楚,因为面试官会深入挖掘项目的细节,以此来了解面试者的能力。

对于如何找开源项目、如何参与开源项目、这些就自己知乎、B站、谷歌、问AI啦~

2.5 实习

对于应届生来说,相关的实习经历往往比比赛和绩点来得重要。实习的做的项目也可以作为做过的项目进行介绍。在实习中,往往能在下面的方面得到锻炼。

  • 实际工作环境:实习经历往往意味着应届生在实际工作环境中积累了一定的经验。这有助于他们更好地了解企业文化、工作流程和职业规范,从而在正式入职后更快地适应新工作。

  • 跨部门协作:实习生在企业实习期间,通常需要与不同部门的同事合作。这有助于他们提高沟通和协作能力,这些能力在职场中非常重要。

  • 培训和指导:在实习期间,应届生通常会受到企业的培训和指导,这有助于他们更快地掌握职业技能和知识。而在学校项目中,这种专业指导可能相对较少。

  • 评估绩效和能力:实习期间的表现可以为招聘企业提供一个评估应届生绩效和能力的依据。与项目经历相比,实习经历更能反映出应届生在实际工作中的绩效表现。

  • 建立职业网络:在实习期间,应届生有机会与企业中的同事和领导建立联系,这有助于他们建立职业网络。一个良好的职业网络有助于应届生在未来职业生涯中寻找更多的发展机会。

虽然实习做的东西很简单,拉一个高中生都能做。在上面这些方面得到的锻炼能够使得企业更好的评估一个人的能力,能给公司带来的效益,并评估这个人的培训成本,试错成本等等。实习期的评估,往往比证书,比赛来的实在,因为应届生在实习阶段是实实在在干活的,面对过真实的企业环境。这样子面试官就可以通过面试这方面的内容,了解到这个人的基础能力达不达标,适不适应公司。这部分的实习内容的了解+项目经历的了解+基础能力的了解,就大概能够评估这个人能不能达到公司的基本招聘条件。

实习需要项目经历和基础才能找到 。实习也是招聘,对于大二大三的同学,先准备好一两个项目,打一下基础就有可能能找到实习。就我目前对嵌入式的了解,实习一般要求6个月,而且实习对人的能力要求其实也不低。不过捏摆正自己的位置,实习主要还是打杂的,多找找,还是能找到的,不过大公司的实习就比较难找了。

比较推荐找实习的软件,牛客和实习憎

参考资料:

4、优先级

你问我,实习、项目、比赛、绩点这些哪个优先级更高。一般而言,对于技术岗,对于实习、项目经历、比赛经历看重的权重是不一样的。一个好的实习带来的优势会比比赛和项目经历要更重要,因为有实习经历背后反映着,有一定的沟通能力,对实际的工作具有一定的了解,能减少入门的时间,更快的上手项目,更快的为企业产出价值。

技术岗的权重

大概符合岗位的实习经历 > 相关的项目经历 > 一般的比赛经历 > 其他经历

不过鉴于我学校一般来说不放出去实习,暑假的实习又比较难找,我们是有点吃亏的。

这样的标准只是一般情况,如果是以下情况就不一定符合:

  • 拿到企业认可的比赛的奖项靠前
  • 相关项目经历比较一般

5、总结

这里就大概从了解自己->了解岗位->根据岗位要求去适应。这个链路去梳理了一遍,如何去找到工作这个相对具体的路线进行了举例。虽然不是每一个岗位都是按照这个思路来的,但是对于嵌入式或者计算机类的同学有一定的参考价值。

推荐公众号&链接:

  • 老吴嵌入式(推荐指数:⭐⭐⭐)
  • 嵌入式老鸟的职场之道(推荐指数:⭐⭐⭐⭐⭐)
  • 嵌入式系统开发(推荐指数:⭐⭐⭐⭐)
  • 嵌入式与Linux那些事(推荐指数:⭐⭐⭐⭐),这个公众号的知乎主页

这些公众号是我觉得比较好的,文章出现的链接也十分的推荐点进去阅读。

出现的链接和公众号都推荐阅读!!!
出现的链接和公众号都推荐阅读!!!
出现的链接和公众号都推荐阅读!!!

重要的事情说三遍。

个人觉得本文只是起到一个引子的作用,更多的还是需要自己去参考更多的资料形成一个自己的理解。

参考资料:

猜你喜欢

转载自blog.csdn.net/weixin_46185705/article/details/131225868