前言
我是一个普通本科出身的Android程序员,我的学校也不过就是一个普通二本。
嗯,我的学弟学妹们也是一样的,都是普通二本。但是和我不同的是,现在的社会越来越浮躁了,浮躁的让人沉不下心认真做事,让人忍不住去想各种有的没的。
比如我的这些学弟学妹们。我已经不止一次收到来自他们的私信了,他们问的内容,无一不是表达对自己学历的自卑和对即将离开学校的自己的不自信,还有对面试被拒的伤心。
千篇一律的问题,基本内容如下:
- 面试挂了,大厂面试到底更看重学历还是技术?
- 我这样的学历在求职中有什么需要注意点的点吗?
- 简历有什么技巧吗?
- ……
今天在这里就来个统一回复吧。
来自面试官朋友的话
我们组最近在招应届生,恰好,几个面试官都还比较熟,在平时聊天的空档我就这个话题问了一下他们。
其中一个朋友的原话内容大致是这样的:
现在互联网公司节奏很快,招的人进来能立刻干活的,立刻产出的是最好的,尤其是那些中小型公司。他说,如果面试官看见两个人,一个学历低能力强,另一个学历高能力弱,基本上99%都会选能力强的。
当然了,学历高的这个面试的时候简历通过率比较高一些。
不过学历这个东西,进入社会越久,对个人的影响就越弱。
也就是说,学历这个因素对大家找工作的影响,只有在刚毕业两三年内是最大的,越往后,影响越小。而且,我们搞开发这一行的,学历的作用远远不如技术发挥的作用大。
当然,也分情况。这是来自另外一个面试官同事的看法:
面试到底更看重学历还是技术这个问题要看从事的岗位。
如果是算法、人工智能等这些岗位,一般情况下会比较看重学历,因为这类岗位比较偏学术型(也有偏业务型),在研究生能写算法相关的 paper 比本科生当然更有优势。
如果是前端开发、后端开发,有个本科学历就可以过了互联网大厂的门槛了,因为这类岗位注重的是你的技术能力。
这个就要看大家自己的职业目标了,如果目标职业对学历有较高要求,也可以考虑考个研究生什么的,做一个提升。
基本上来说,普通本科学历是满足绝大多数岗位要求的。而只要过了简历关,剩下的就要靠自己掌握的技术来争取了。
身边的优秀校友案例
其实我们学校进入大厂的也不少。
不久前,我的一位学弟(我的学弟当然和我一样是普通二本)拿到了京东的offer。
他找我这个“老人”唠嗑(主要是报个喜,另外希望关照一下)
他向我咨询了一些实习期相关的事情,这位学弟说,在参加面试的时候,候选人很多都是 985,211 ,他也有不小的压力,最后能够过五关斩六将拿下京东的 offer 实属不易。
下面是在我的邀请下,他分享的一些自己的学习方法。
如何拿下大厂offer?
根据学弟的分享,他之所以能拿下京东的 offer, 主要靠的是扎实的计算机编程基础能力,手写代码的能力,另外就是在校期间比较活跃,参加过几个含金量比较高的编程竞赛,拿了还算不错的名次(嗯,其中裸写代码的能力是非常不错的)。
对于校招生来说,大厂面试官面试的时候更看重你的学习能力,你的潜力和技术的扎实程度,如果还不会,得赶紧动起来,抓住毕业前的时间,去弥补,去锻炼、去学习。
职场技能、实战经验你都可以没有,招聘方也不会苛求你这些。但是至少你应该掌握大学课业范围中的专业内容,尤其是和求职方向相关的部分,这都是基础。或许你当初考完试就还给老师了,现在捡起来也不迟。
下面分享一些他的学习方法,希望能给在校的学弟学妹们提供一个学习的方向。
学习方法
(一)多看质量高的书籍
我在大学期间,买了很多书,泡了很长时间的图书馆,也看了很多技术书,但是,我后来发现,其实看书并不在于多,而在于经典和质量。
这是[编程指北]大佬大学曾经看过的一些书:
在这里,只推荐好的书(盲买都不出错的那种),宁缺毋滥。
PS:书单参考自[编程指北]的计算机必看经典书单
-
计算机思维:
-
CS50,哈佛公开课《计算机科学导论》, B站就有资源,自取~
C语言:
(不要问我为什么要列举C语言,因为移动开发搞音视频开发要用到,而且,这还是一个非常吃香的方向,不信的话,可看一下大佬的这两个文:
- Android开发突围:视频制作平台崛起,音视频开发赛道寻求新突破
- 互联网寒冬之下,Android开发的港湾:音视频进阶学习
- 《C和指针》
- 《高质量C编程指南》
- 《C专家编程》和《C陷阱与缺陷》有时间可以看
- 《C程序设计语言》
提升:
-
算法:
《大话数据结构》
《算法(第四版)》
《算法导论》,一般人可能都会被劝退。。。不过可以看下学习C++ -
学习C++:
《C++ primer》
《STL源码解析》
《Effective C++》
《深度探索C++对象模型》
看完上面👆四本,C++算入门了,接下来靠你自己去进阶~ -
好好学下网络:
《计算机网络-自顶向下》
《TCP/IP详解-卷一》
操作系统:
《现代操作系统》
学堂在线网站–清华操作系统课程
如果你想自己试着写写mini 操作系统,我强烈推荐 《操作系统真象还原》,就算不写,这里也可以学到好多其它操作系统书少有的知识
- 计算机系统
《深入理解计算机系统》
《程序员自我修养》–别被名字迷惑了,这本书真正该叫 《编译链接与运行》,真是好书
《设计数据密集型应用》
Java系:
《Java 核心技术 》
《effective java》
《深入理解Java虚拟机》
《Java并发编程实战》
(二)打造一个自己的知识体系
所谓“知识体系”,指的就是把大量却不同知识点,系统、有序、指向性明确地组合成某种类型的知识架构。通过这个知识架构,我们可以更好地理解某些问题,解决某些问题。
当然,建议“知识体系”的这个过程并不简单,一般都需要经历以下六步。
这里推荐一位阿里P8大佬的一个知识体系,给大家提供一个参考。
- 底层基础(或者可以叫他《移动开发架构师筑基必备技能》第二点里面有分享,这份资料是一个基础知识的整合)
- Android高级UI与FrameWork源码:高级UI晋升+Framework内核解析+Android组件内核+数据持久化
- 360°全方面性能调优:设计思想与代码质量优化+程序性能优化+开发效率优化
- 解读开源框架设计思想:热修复设计+插件化框架解读+组件化框架设计+图片加载框架+网络访问框架设计+RXJava响应式编程框架设计+IOC架构设计+Android架构组件Jetpack
- NDK模块开发:NDK基础知识体系+底层图片处理+音视频开发
- 微信小程序:小程序介绍+UI开发+API操作+微信对接
- Flutter进阶,跨平台开发技术
大佬一直都在充实并丰满自己的这个知识体系,并把自己的总结整理成为了《移动开发架构师八大体系学习笔记》
(对应上面我的只是体系框架图),有需要的朋友可以直接点击【此处】或者通过下方代码块找我免费获取全套资料。
// Wechat number(可复制):
study5233
(三)面试准备
1.简历方面
简历的优化是非常重要的,特别是像我这样的双非院校,在校期间也没什么拿得出手的大项目,老实说,简历上面非常尴尬,很可能连面试通知电话都收不到。
下面和大家分析一下,能一眼让HR注意到的简历到底长什么样。
我有一个多年大厂招人经验的朋友跟我说:大厂招人,一般不会不要求应聘者全能,但是必须在某一项有专精技术。
所以,这里建议大家简历的第一页上半页,或者前三行,务必表明自己的技术栈。这里稍加注意:描述时,可以针对自己的技术能力进行一些吹的操作,但是切记不可瞎吹,也不可吹过头,不然,你的面试问题难度也会提升,同时,你的人品也会遭受质疑。
下面的这是一个比较好的简历模板:
不好意思,放错了图,下面的才是↓↓↓↓↓
(1)在写简历的时候要有侧重点,面试官的时间是很紧张的,没空看废话,对你的流水账日记不感兴趣(再强调一遍,第一页上半页,或者前三行,务必表明自己的技术栈)。
(2)个人经历的描述尽量往工作和岗位相关的方向靠拢,少提不相关的内容干扰他们提炼重点信息。
(3)项目短板的,告诉大家一个技巧,尽量挑选项目中自己熟悉的领域以及项目的亮点,要突出自己的贡献,是添加了哪些功能,还是优化了那些性能指数,最后再说说受益怎么样,例如这个功能被多少人使用,例如性能提升了多少倍。(最好按照岗位的要求,向上靠一靠)
(4)切记不要“优化”过度,谨慎使用“精通”两字,拿不准的绝对不要写在简历上,不然你就是在给自己挖坑。(面试会根据你简历上写得技术从浅再到深入原理的提问。)
这里给大家推荐一篇文章,大家可以作为参考。
项目经验不会说?字节跳动小姐姐手把手教你"套路"面试官!
2.知识技术方面
下面的分析适用于所有公司。
市场上的公司一般可以分成两种:大公司和小公司。小公司注重实践能力,大公司看中综合能力。
小公司面试会比较集中安卓开发这一块,关注的点主要是
- 有没有类似的项目经验
- 有没有遇到过他们差不多的问题
所以,面试准备中,除了基本的一些知识点还需要关注一些安卓开发实际中经常遇到的一些问题,诸如图片缓存,常见的开源框架等等。
大公司面试比较在意你的综合能力还有基础知识。
下面我是一些比较重要的知识点。
(1)进入大厂需要掌握的知识点
- 数据结构与算法
- java
- 安卓
- 计算机网络
- 操作系统
- ……
(以上按重要程度排序)
A 数据结构和算法(重中之重)
数据结构和算法非常重要!尤其是在字节跳动公司(美团,百度,爱奇艺也是一样的)。这个知识点是考验一个程序员技术水平最快的方法,尤其是对我们这些毕业不久的学生。
数据结构与算法这个知识点的 准备需要的时间比较长,要尽早准备 ,多刷一些leetcode或是其他类似的题。 我个人的算法能力一开始也很差 ,但是经过我自己安排的算法专项训练, 效果还是十分显著的 。下面我把自己的复习方法分享给大家。
下面是数据结构和算法的面试核心知识点,大家可以参考学习,逐个击破。
- 栈与队列:先进先出、后进先出
- 线性链表
- 查找:顺序查找、二分查找
- 排序:交换类、插入类、选择类
- 树、二叉树、图:深度优先(DFS)、广度优先(BFS)
- 递归
- 分治
- 滑窗
- 三大牛逼算法:回溯、贪心、动态规划(DP)
这里直接给大家分享一份算法速刷宝典吧(这是一个机构自费买来的,现在免费分享给大家啦)
有需要的朋友可以直接点击【此处】或者通过下方代码块找我免费获取全套资料。**
// Wechat number(可复制):
study5233
B 技术知识[重要知识点整理(高频面试真题)]
图片相关
图片库对比
LRUCache 原理
图片加载原理
实现图片库
Glide 源码解析
Glide 缓存
……
-
网络和安全机制
网络框架对比和源码分析
自己去设计网络请求框架
网络请求缓存处理,pokhttp 如何处理网络缓存
从网络加载一个 M 10M 的图片,需要注意的事项
TCP 的 3 次握手和四次挥手
TCP 与 PUDP 的区别、应用
……
-
数据库
Sqlite 升级,增加字段的语句
数据库框架对比和源码分析
数据库的优化
数据库数据迁移问题
Sqlite 常见异常
……
-
插件化、模块化、组 件化、热修复、增量更新、Gradle
对热修复和插件化的理解
插件化原理分析
……
-
架构和设计模式
MVC、MVP、MVVM 原理和区别
你所知道的设计模式有哪些
项目中常用的设计模式
手写生产者/ / 消费者模式
观察者模式
适配器模式,装饰者模式,外观模式的异同
用到的一些开源框架 , 介绍一个看过源码的 , 内部
实现过程
RxJava相关
Binder 机制及底层实现
……内容过多,鉴于文章的长度,这里就不一一展示了,需要的可以点击下方蓝色字体获取完整版
以上的问题都是精心整理过的,每个问题都是一篇长文,大家一定要好好理清楚,因为面试官都喜欢深挖和追问,大家在某一块知识点必须有深入研究,能够回答面试官4到5个追加问题。
有需要的朋友可以直接点击【此处】或者通过下方代码块找我免费获取全套资料。**
// Wechat number(可复制):
study5233
最后
长风破浪会有时,直挂云帆济沧海。
祝大家找到心仪的工作,收获满意的 offer !
加油!