程序员这一行,专科毕业,如何混到‘985’同等的待遇呢?

一、引言

学历意味着什么?有学历的程序员永远不懂没学历的痛,就像白天不懂夜的黑。

最近,有一篇文章火遍了全网的文章!作为程序员的我也在想,我们不是也有这样一种经历吗?工作经验丰富,技能高,工作资历久,却因为学历没有相应的待遇!甚至有些能力很强的专科生却连大厂的门都进不去!改变命运的不能仅仅是高考考了多少分,而是在进入社会的过程中有没有不断去提高自身素质,有没有不放弃学习!我始终相信只要提高自身实力,我就可以和那些研究生,博士生,站在一起!

二、为什么企业都只招收高学历

为什么企业要求学历?这个问题得从公司管理者角度解释,招聘时,学历只是一个公司在招人时的最低门槛,然后面试时,通过你的言行举止,你的细节动作,来揣测评估你平时的一些习惯,为人。看看你是否能快速融入团队,大多数的公司会更喜欢性格开朗的员工。但是为什么一定要看学历?

其中一个方面是因为读过书的人对待的事情有一定的逻辑性和思维。有人说读书没有用,但大家都没注意到,读书会潜移默化影响我们的思想,一些处理事情的方法,更多的一个人的创新思维。另一方面,没有学历的人中会有这么几类人:

第一种那就是千里马,也就是无文凭人才,很多知名公司会发现,但是少之又少。

第二种人不思进取,安于现状的人 很多人做上领导 就放弃努力了 。

第三种人没原则,没学识,等着天上掉馅饼的人, 等等…像无学历的这种人才在大公司非常少,而且混在人团队中,如果你是管理者,你要怎么分辨哪些是人才,哪些是蠢才。何况你的领导是这样的人,你敢多待一天?

有些人可能会说能力最重要,能力确实很重要,技术来说,无非就是熟练不熟练,入门先后而已,其实,学历只是代表你的过去,只要你有学习的能力,未来更加可以期待 。

抽空提高下学历是有必要的,最近几年一线落户越来越看重学历,但也不要无畏的认为学历可代表一切,除非你去创业,那么你牛逼,大家只会敬仰。

三、数据分析

在这里先给大家看张,不同学历的程序员收到的平均面试邀请数据统计图。从图中不难看出,单看收到的面试数量,专科、本科、硕士所收到的邀请数量相差不大,博士生收到的面试邀请反而较少。当然,这也许和他们的专业更精准聚焦有关系吧!

再看这张图,工作经验在6-10年的专科生平均年薪超过本科生!工作年限越长,反而低学历占了优势!

那么,这是什么原因呢?

因为相比于其他行业,IT是个更注重应用的行业。在日常工作中,很多技术大牛们能够行云流水般打出一连串让人瞠目结舌的高级代码,更多靠的是大量严谨的逻辑锻炼和实践经验。而这些,靠一纸学历证书是获得不来的!

许多人也许在传统应试教育领域并未取得所谓意义上的成功,但这并不能说明他们能力不强,更多的只是方向和兴趣点不同罢了!

所以说,虽然学历在一定程度上代表了更优秀的学习能力,但在互联网高速发展的现在,在IT行业中,“学历至上”已经不是企业选择人才的唯一标准。比起一纸证书,企业更看重的是你编程水平的高低,是你在实际工作中能力的强弱。否则,即使你有一张敲门砖的文聘,也只不过是一个滥竽充数的南郭先生。

四、努力提升,技术为王道

永远别看低自己,更不要低估自己的潜力,每个人心里都有一个属于自己的千里马。

逆袭微软

  • 准备

之前导师跟我说他认识一朋友在微软可以帮我内推,我说能够内推苏州就好,上海或北京不考虑。后来导师询问了之后发现那朋友所在部门在上海,而且在苏州并没有分部,遂作罢。

所以微软直接走的正式批,投的STCA苏州的software engineer。然后等到了统一的笔试,想着不能重蹈覆辙了。

  • 面试

微软这次的笔试平台换成了amcat,而且笔试全程不允许切换窗口、鼠标不能离开窗口,这对我们来说难度突然增大了,因为微软笔试就是几个算法题,不能跳出窗口、全程手撸代码就太恐怖了。

出乎所有人意料的就是微软今年的算法题突然简单了许多,可以说手撸代码完全没问题。一共五题,好几题就是简单几行代码就能写出来了,最难的一个就是换硬币了,其实就是非常明显的动态规划。所以笔试毫无压力,只有两三个测试用例没有通过,坐等面试通知了。

等了好几天后收到了微软苏州现场面试的通知,值得一提的是,同实验室好几个笔试做的不错的同学没有收到面试通知,所以微软恐怕不是单纯根据笔试成绩来发面试通知的。

之后就是去苏州微软现场面试了,签到的时候就看到签到表上密密麻麻全是南大和浙大的学生。面试一共四轮,在一个会议室坐着,面试官带出去面试的模式。微软的面试模式出了名是啥都不问直接白班写代码,这次也不例外。

  • 一面

一面大概持续了半个多小时。面试官最开始就让我介绍我最闪光/特质的地方,上来就把我弄懵了,因为只准备过自我介绍。跟面试官说等我想两分钟后,我就开始说了,切入点就是我学习能力强,而且学的好;我主动说我本科是学的武器,花了接近两年的课余时间准备考研考上了南大,准备考研期间自学了计算机四大专业课和附属课程,在研究生阶段也学的很好之类的;面试官表示满意。

然后就问算法题了,问的是一道经典算法题,两个字符串大数相加,这道题是LeetCode原题,所以很快就写出来了。然后面试官扩展问如果是小数该怎么修改算法,我说把数的整数部分和小数部分分开处理,照之前的算法分别相加并处理完小数向整数进位问题后再拼起来,面试官表示赞同。

然后问我对于小数还有没有别的方法,我说还可以直接把小数当整数对待,相加完成之后算出小数点的位置,再插入到字符串中就好了,面试官让我写出来,我就很快在纸上写出来了。紧接着面试官让我想想可以设计哪些测试用例来检查算法正确性,我写了几个测试用例。

再然后面试官问了我一个概率题,掷一个骰子n次,每次掷完骰子后,可以选择立即停止、以当前骰子的值作为结果,或忽略当前骰子的值,继续掷骰子,问用什么策略可以得到最大的数。
这题我就犯难了,因为之前想过类似的问题还把自己绕进去了,这次也马上就把自己绕进去了而且越想越迷糊,最后干脆说每次掷的超过3就立即停止,不超过就继续掷;面试官马上就举例子说假设一共可以掷9次,掷第1次的时候就掷到了4,那应该立即停止吗?我答不上来。

面试官提示了我两三次后说应该考虑后面还会掷多少次,我就明白不应该看前面掷的情况,应该根据后面还有多少次没有掷来计算后面掷骰子会超过当前值的概率,概率大于50%就应该继续掷,随后写出了计算概率的公式。面试官对我的这个答案表示赞同,随后他补充说还可以用动态规划的思想来看。最后面试官跟我说我太紧张了,需要放松。

  • 二面

二面差不多也是半个多小时。面试官最开始让我介绍了我做的项目,对我的科研项目很感兴趣,多问了一些,但没有深入。随后开始做算法题,主题是二叉搜索树,问了我搜索的时间复杂度,让我在纸上举例各种情况下(最好、平均、最坏)的时间复杂度,然后让我分析如何在二叉搜索树中寻找仅小于指定结点的结点(就是中序遍历的前驱结点),于是就跟面试官讨论了不同树的形状下如何寻找前驱结点,然后面试官让我写出这个算法。

我想了想其实中序遍历就能搞定,于是默不作声写了个非递归逆中序遍历,然后给面试官看,并解释了原理;然而这并不是面试官想要的结果,面试官希望我通过结点父子关系来寻找前驱结点,而非遍历的方式。我想了一下,然后跟面试官说,这样每个节点就必须有一个parent指针指向其父结点,面试官说可以有parent指针。

然后我就顺着之前讨论的各种情况一一写出了寻找前驱结点的方法。面试官看了我写的代码表示赞同,但跟我说其实我的代码还可以精简,其实就是两种情况不断向上遍历判断。然后面试官让我设计测试用例,来检查我写的算法的正确性,我很快写了几个。然后让我再之后面试官简单问了我如斐波拉起数列的问题,就愉快结束面试了。

  • 三面

三面也差不多半个小时。三面面试官也是先让我介绍项目,我介绍了我的科研项目,他问了一些性能参数后,问我有没有考虑到手机耗电问题,我说没有,主要因为这个领域都不做这个,他就谈了谈他对耗电的看法,我表示赞同。

然后面试官问我前两轮面试有没有问英语,我答没有,面试官就说从现在开始我们用英文交流,所以接下来全程英语了。然后就是做算法题了,不同于前两轮面试是在纸上写,这次直接在墙上的白板写了。问的是LeetCode上的原题——判断镜像二叉树(LeetCode 101),这题我早有准备。

首先画了个镜像二叉树跟面试官确认了我没有理解错题意,然后就很顺畅地开始写了,一口气写完之后就让面试官来检查了。面试官首先问为什么我的传入参数是用a和b表示两个树的,我答为了简单起见,然后面试官说可不可以用left和right来表示两个树(递归结构,这里指左子树和右子树),我答不可以,因为第一个参数不一定一直是left、第二个参数也不一定一直是right,如果用left和right反而会让人误解,面试官表示赞同。

然后面试官让我设计测试用例,我写出了七八种测试用例,面试官看了后说其实我漏掉了最重要的一种测试用例,我想不通,于是问面试官是哪种,面试官说我写的测试用例都是来检查算法不正确的情况,而测试用例最先应该检查的是算法正确的情况,即正常的测试用例,我说这确实是我没想到。然后三面也结束了。

  • 四面

四面就是部门大佬了,一共持续了大概四十分钟。最开始还是让我介绍我的科研项目,他表示很感兴趣,还让我介绍一些系统中的一些细节,于是我就在墙上白板上用整个板面画了我设计的系统的整个流程和一些细节,中间穿插着面试官的问题。然后就进入正题开始做算法题,也是LeetCode上的原题——通配符匹配(LeetCode 44),看到面试官出这题我惊出一身冷汗,因为前一天复习的时候就见过这题,然而没有做出来,而且因为这是一道Hard难度的题,我觉得面试不会问,也就没有去找答案做出来,然而就这么遇到这题了。

于是我就主动跟面试官说这题我前一天晚上还见过,但我没有做出来,这题的最优解法应该是动态规划,但我不会;面试官回答说现在是不是很后悔当时没有看这题,没关系现在再好好想想,争取做出来。然后我就在白板前站着想了好几分钟,万幸的是总算想出来了,用递归来做,然后慢吞吞写出了代码。然后给面试官看,还逐行解释了算法工作过程,面试官说挺好的,这不是做出来了么。然后就是写测试用例了,吸取了三面的教训,这次测试用例很快就写出来了。这样就结束了四面。

四面结束后回到会议室,问HR什么时候能出面试结果,HR说等差不多十分钟就有结果了。于是坐在那等,然后有HR叫我,出去跟我说我的面试情况挺好的,现在在hirable list中,大概等两周就可能有是否发offer的决定。然后我就愉快回学校了。

但是等微软offer的日子是漫长的,在HR连续跳票两次后总算接到了offer电话。惊喜的是我拿到了微软的sp,并且今年苏州微软的薪资待遇较往年也有较大提升。

五、谁说学历及一切

学历,确实是一个敲门砖,我们没有这个敲门砖会辛苦很多,但是可以努力提升自己,学历不行,有学历要求的公司,自己实在想去,可以一边工作,一边自考提升学历,万物都有解决办法,就看你愿不愿意去做。我是以专科渣校进入的一个小公司,可是我没有放弃,因为我瞄准了讯飞一个不大不小的公司。在这个小公司工作花了2年,在这期间一直没有松懈过,一边工作一边自考。

一次就考上了本科成功拿到了讯飞Offer。于是我再次把目标定在了微软,花了3年时间一边考研究生,一边准备下一次机会的来临,功夫不负有心人。终于我还是做到了,一个专科生到研究生,一个小厂到所有程序员梦寐以求的微软我的“逆袭”花了整整5年,尽管很辛苦,很孤独可是我还是做到了不是吗?

最后,送一句话给大家,哪些打不倒我们的困难,终将使我们变得更加强大!

六、五年期间我的学习笔记分享

我自己做Android开发已经是第5个年头了,在毕业后的第二年,有幸加入到字节跳动这个大家庭。在字节的4年,见证了太多人的来来去去,印象很深一个同事,跳槽阿里薪资直接double,但也看到很多人镀着“大厂”的金四处碰壁,终究还是倒在了技术上!

我自己或许也算是个成功的例子,在4年的时间里从1-1做到了2-2,当然,这背后的“辛酸泪”就留到日后再说。总的来说,归功于自己不断地学习,复盘总结,提升技术!以下分享一下我4年来具体的学习路线及笔记文档,希望能帮助到有心提升技术的朋友!

  • 架构师筑基必备技能

目前Android APP开发主流语言就是Java语言,Java语言最大的特性就是提高了软件的交互可能性,可以说安卓手机几乎所有应用程序都是利用Java语言来进行编写的。

知识要点:
1、深入理解Java泛型
2、注解深入浅出
3、并发编程
4、数据传输与序列化
5、Java虚拟机原理
6、高效IO

架构师筑基必备技能

  • 设计思想解读开源框架

随着互联网企业的不断发展,产品项目中的模块越来越多,用户体验要求也越来越高,想实现小步快跑、快速迭代的目的越来越难,插件化技术应用而生。如果没有插件化技术,美团、淘宝这些集成了大量“app”的应用,可能会有几个g那么大。

所以,当今的Android移动开发,不会热修复、插件化、组件化,80%以上的面试都过不了。

知识要点:
1、热修复设计
2、插件化框架设计
3、组件化框架设计
4、图片加载框架
5、网络访问框架设计
6、RXJava响应式编程框架设计

设计思想解读开源框架

  • 360°全方位性能调优

在不同层次的开发工程师手里,因为技术水平的参差不齐,即使很多手机在跑分软件性能非常高,打开应用依然存在卡顿现象。

另外,随着产品内容迭代,功能越来越复杂,UI页面也越来越丰富,也成为流畅运行的一种阻碍。综上所述,对APP进行性能优化已成为开发者该有的一种综合素质,也是开发者能够完成高质量应用程序作品的保证。

1、设计思想与代码质量优化

2、程序性能优化

  • 启动速度与执行效率优化
  • 布局检测与优化
  • 内存优化
  • 耗电优化
  • 网络传输与数据储存优化
  • APK大小优化

3、开发效率优化

  • 分布式版本控制系统Git
  • 自动化构建系统Gradle

4、项目实战

  • 启动速度
  • 流畅度
  • 抖音在APK包大小资源优化的实践
  • 优酷响应式布局技术全解析
  • 网络优化
  • 手机淘宝双十一性能优化项目揭秘
  • 高德APP全链路源码依赖分析
  • 彻底干掉OOM的实战经验分享
  • 微信Android终端内存优化实践

360°全方位性能调优

  • Android框架体系架构

Android框架体系架构(高级UI+FrameWork源码) 这块知识是现今使用者最多的,我们称之Android2013~2016年的技术。

Android开发者也往往因为网上Copy代码习惯了而导致对这块经常“使用”的代码熟悉而又陌生:熟悉的是几乎天天在和它们打交道, 天天在复制这些代码 ;陌生的是虽然天天和这些代码打交道,但是并没有深入研究过这些代码的原理,代码深处的内涵。

本篇知识要点:
1、高级UI晋升
2、Android内核组件
3、大型项目必备IPC
4、数据持久与序列化
5、Framework内核解析

Android框架体系架构

  • NDK模块开发(音视频系列)

NDK(Native Development Kit缩写)一种基于原生程序接口的软件开发工具包,可以让您在 Android 应用中利用 C 和 C++ 代码的工具。通过此工具开发的程序直接在本地运行,而不是虚拟机。

在Android中,NDK是一系列工具的集合,主要用于扩展Android SDK。NDK提供了一系列的工具可以帮助开发者快速的开发C或C++的动态库,并能自动将so和Java应用一起打包成apk。

本篇知识要点:
1、NDK开发之C/C++入门
2、JNI模块开发
3、Linux编程
4、底层图片处理
5、音视频开发
6、机器学习

NDK模块开发

  • Flutter学习进阶

2019 年无疑是 Flutter 技术如火如荼发展的一年。

每一个移动开发者都在为 Flutter 带来的“快速开发、富有表现力和灵活的 UI、原生性能”的特色和理念而痴狂,从超级 App 到独立应用,从纯 Flutter 到混合栈,开发者们在不同的场景下乐此不疲的探索和应用着 Flutter 技术,也在面临着各种各样不同的挑战。

本篇知识要点:
1、Flutter跨平台开发概述
2、Windows中Flutter开发环境搭建
3、编写你的第一个Flutter APP
4、Flutter Dart语言系统入门

Flutter学习

  • 微信小程序开发

微信小程序作为现在比较火的编程开发应用场景之一,深受市场的青睐,这让不少开发者眼馋不已。但是对于初学者来说,就完全摸不着头脑了,不知道微信小程序开发制作需要学习那些知识,有需要的朋友可以参考本篇。

本篇知识要点:
1、小程序概述及入门
2、小程序UI开发
3、API操作
4、购物商场项目实战

微信小程序开发

  • Android相关源码解读
    只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。

Android相关源码解读

Android相关源码解读部分内容

由于篇幅原因,以上完整学习笔记pdf如有需要,可以点赞+评论支持下小编,点击这里免费自取

更多Android架构相关资料可以点此处免费获取

猜你喜欢

转载自blog.csdn.net/Android578/article/details/113609497