今天介绍一位二本同学的学习、实习以及求职经历,他大三下学期开始学习,中间有过两段实习经历,秋招拿了B站、顺丰、百度、小米等Android开发的offer。
背景介绍
我是来自南京双非二本的大四学生,可以说学校不太好(和985,211相比)。由于高考失利,本来是想考研的,本来也准备了两个月,后来突然发现自己不知道除了学历还有什么是我考研的理由。
那时候也去问了我们老师,就是我们学校这个水平出去能工作吗?我们老师说其实可以的,所以就毅然准备找工作了。也就是那时候,2020年寒假,偶然加入了一个大佬的群。
最大的好处是,让我开了眼界,原来双非二本不仅仅能找到工作,还有机会去大厂!还有机会进外企!这给了我很大的信心,那时候我就很有目标,期间也是有过两段实习经历,不断积累学习,最终上岸百度。
学习过程
实话实说,像我们这种学校,很多课都是很水的。我还记得第一节操作系统的课,我本来满怀期待地做了第一排,想着就要学操作系统了,这么底层地知识一定要好好学。
可是后来我发现老师讲的也太生硬了,完全是照着PPT念啊,我听了几节课后就不再去了。整个大学生涯,就有两个质量比较好的课,分别是C语言和算法与数据结构,像java,操作系统、计算机 络,我更多地是自己找资料去学习。
所以对于一些不喜欢的课,还是在保证可以过的情况下,空下时间来多多自学吧,毕竟 上的资源也挺多的,学校图书馆的书也不少。
这些是我2020年上半年看过的一些电子书和笔记,对于看书的话,我有一些想法就是,一本书最重要的是它的目录!!看一本书之前先浏览一遍它的目录是很重要的。
第二点就是一本书不要指望着一遍过,第一遍粗读的主要目的是让你对这本书建立一个概览的框架,后续的的阅读可以去丰富这个框架。
第一遍不要一个一个字的啃,可以略读、选读。陌生名词多的部分可以先跳过,因为陌生名词多,很大概率是因为你这块知识还很欠缺,如果硬去读的话,其实是很费劲的,效率不高。
还有就是我觉得,解决一个问题,最直接的方法是直接去百度,其次是官 ,最后是找相关的书籍或者论文去翻阅,因为越往后操作是越重的。
还有就是这个可以看视频,因为是第一次学嘛。
最后是算法题了,这个是重点!!!按我的面试经历,算法题在整个面试的比重至少要有一半。百度,B站,头条,华为我都面过,而且只有头条面到hr,最后挂了。
百度一面上来直接让我撸4道算法题,华为是先笔试,笔试过了,每轮面试还会让你手撕代码(难度大概是层序遍历二叉树的那种,还算常规),最狠的是头条,每轮都会让你笔试,而且难度最大,会考你动态规划(懂的都懂)。
关于算法题的学习,多练,重复刷,多总结,有规律的练。牛客 的经典编程题我前前后后刷了有三四遍的样子,第一遍最痛苦(然而也是艰难困苦,玉汝于成),因为没有思路,要去看别人的代码,厘清思路。
第二遍就是大概率会有思路,但是尽量不要看别人的代码了,而且一道题会有不同的解题思路,建议多看看有利于开阔眼界,学习更多的技巧。算法题刷多了,给我的感觉就是确实是有用的,不仅仅是为了应付面试,对于工作中写代码也是会体现出来的。
简历
简历我单独拉出来说,因为简历很重要!简历很重要!简历很重要!!(说三遍哈)它和编程题是不同维度的重要,算法题不过关,很有可能再多面试机会也拿不到offer,但是如果简历不好好写,就很有可能你连个面试机会都拿不到,更何况是我们这种二本双非学校了。
可以将一些成果数字化,项目中揉入搜到的 上的一些难点。有一个star原则,大家可以了解下。刚一开始的简历,往boss上一扔,预约面试的几乎寥寥无几。我的简历真的是是改了又改,找实习的主管,找老师帮忙看,紧紧抓住每次机会,一般情况下大家都是愿意帮你的。一定要有项目,不然找实习都很难,而且光自己看视频学的项目还不够,还需要提炼出里面的重点内容。这部分也要感谢大佬的耐心指导,让我能早早地通过实习并拿到大厂offer。
实习经历
2020.4-2020.7
刚来第一家公司,心情跌跌起起,总之感觉不爽。我在这就事论事,不论是非。刚开始去那里时,就是感觉职位与我预期的不符,当天找了研发那边的老大,本来约好的下周两轮面试,过了就去研发。
没想到第二天一早hr就把我和主管叫过去来了个小会,总之就是你是实习生,刚来就转岗,不行。我能理解,可是一个多月后,我再问hr什么时候能转岗,她不回我,我知道她肯定看到信息了,而且后来也证实了。
这让我很不爽,我当时就想要不离职吧,好好准备再换一个公司。后来开了窍,我告诉我自己,以后这种事多着呢,现在这种情况一定要谨慎处理,也算是为以后积累经验了,不然后面再遇到这种进退两难的情况,都这么随意处理肯定不太行。
所以我就选了最稳妥的方案,接着待下去,同时抽时间继续刷题复习,直到拿到下一家offer再离职。后来的一个多月,基本每天都会抽出5个小时来刷题和看书,好在当时的主管人也很nice,所以中间过得也不错,只是一直在憋着一口气。
2020.7-2020.11
再后来,来到了另外一家,7月份到11月份,基本上是我在杭州最开心的一段时间了。在这里真的是遇到了一群值得感谢的人。先是侯哥,去公司是他面试的我,最初加入的是他的团队,但是我不感冒,所以就申请离职了,我当时对hr实话实说,感觉这样对大家都好。没想到hr竟然主动帮我转岗了,这也是我特别感激那个hr的原因。
hr帮我转到d团队里了,主管,然后是云哥,超哥。d团队很平等,我印象很深的是,我和我们主管,就一个问题,能和他有来有回地讨论半个小时,他也没显示出不耐烦。他人很好,属于那种平易近人的老师,我还记得,主管花了半天的时间和我讲solid设计原则,非常耐心。而且我平时问他问题,他也是那种一针见血回答到点子上的那种。我的性格不太适合太咄咄逼人的老师,遇到这样的主管,真的是非常幸运了。
百度面试过程
一面
上来首先自我介绍,随后两道算法题
1、数组中最长上升子序列
2、连续子数组最大和
3、匿名内部类访问局部变量的时候,为什么变量必须要加上final?
4、HashMap底层数据结构?怎么解决hash碰撞?扩容机制是怎样的?
5、讲一讲HashTable和HashMap的区别?
6、LinkedHashMap知道吗,讲一下?
7、讲一讲HashMap和TreeMap的区别?
8、JVM内存区域模型?各部分具体的作用是什么?
9、类加载的过程讲一下?
10、synchronized和volatile的区别
11、DCL一定是安全的吗?为什么?
12、什么是指令重排?
13、apk有几种安装方式?apk的安装过程是怎样的?
14、讲一讲Android都用过哪些虚拟机?Dalvik虚拟机和ART虚拟机的区别是什么?
15、Android系统是基于Linux内核的,为什么还要用虚拟机?
16、讲一讲事件分发机制?.
反问:
1、对Android未来发展的看法?
2、部门是做什么的?
二面
1、自我介绍
2、lifecycle了解吗
3、recycleview了解吗(不了解)
4、非对称加密,对称加密
5、https,http
6、状态码的含义,404,502
7、tls ssl四次握手
8、tcp三次握手
9、apk组成
10、leakcanary源码结构
11、retrofit和okhttp的源码结构
12、view的绘制过程
13、activity,Window,view的关系(还好看过源码)
14、activity有几个Window
15、事件分发源码
16、activity启动另外一个activity的时候横屏切换再点击返回,过程中发生的生命周期
17、自己做的项目用到的设计模式
18、了解的设计模式在源码上哪些地方有用到
19、int float double多少位
这些问题写出来看着挺简单的,但是会一直往深了问,比如一个activity启动另外一个activity,而且我感觉这个面试官是想到哪就问到哪。
反问:
1、面试情况如何?
三面
1、自我介绍
2、先写一个算法题,一个数组,有正有负,是否存在一个三个数的子序列,并且严格递增,解释了一下子序列,解释了一下严格递增,O(n2)写了,让优化……提示提示提示,我死活想不出来,这时候面试官的提示越来越高大上,提示包含关系,提示命题的逆否,提示到我越来越想不起来……过了很久很久。然后说我们下一个环节【此时已经知道肯定没戏了】【力扣334】
3、线程池,线程池参数,从提交任务开始的过程
4、jvm线程怎么调度的
5、线程生命周期,我说到中间他就会打断说那这个情况怎么出现呢,java怎么实现的,如何结束线程?提供了什么方法
6、java 的锁怎么实现的?
7、显式控制各个线程竞争的有哪些对象呢?
8、问操作系统一定有线程吗?
9、static、final、finalize、finally?
10、设计题,讨论一下,如果我们要自己做一个在线合作文档,类似腾讯文档,有两个需求,一个是多个人在操作的时候尽可能快的要让另一个人去看到前面人的改动;另一个需求是要处理所有人操作的竞争问题,你是怎么想的呢?excel直观,如果是一个doc类型在协作呢?
11、了解数据库吗?为什么数据库用索引来查找会很快呢?
12、一个线程会占用多少系统资源呢?
然后就是考察你的软素质了:
其他的想不起来了hh
总结:算法题想不出来没有关系,主要考察你的学习能力,抗压能力,沟通能力吧。实话实说就好了,百度的文化是简单可依赖,面试官说我也还挺符合(咱也不知道是真是假,权且是真的吧哈),百度也好,字节也好,B站也好,面试下来我收到最多的评价就是沟通能力挺好的,我的特点就是尽量简洁,必要时归纳下面试官想表达的意思再和他对一下,最后就是礼貌周到了。
面试总结
我是20年3月份找的一个Android大佬规划路线,找第一份实习花了一个月,拿到百度offer算下来,差不多刚好一年。从上家离职到今年3月中旬一直在面试,索幸还算比较满意的公司岗位,当然也有挑战,弄不好就做些边缘的工作,但是哪有那么十全十美的结果,我偏偏还就喜欢这种情形,还有就是钱多点少点对于职业初期来说问题不大。
二本学生如何逆袭大公司?
我是一名Android程序员,作为一名在大厂待过,有多年Android经验的老安卓,在这里,我有些话想说。
大家都知道,学历是一块很好用的敲门砖,但是,也只是敲门砖而已,学历并不能代表一切。
一个名牌大学只能证明你在高中时段里比其他人更努力,更能抗压,在学习计划和其他方面比他人更好,或许还有一定的天分在里面——但是,这只是阶段性的胜利和短暂的优势。
并不是所有名牌大学的毕业生最后都成为了成功人士,也并不是所有的一般学校的毕业生都是一事无成。
那么普通二本,成绩一般,没特长,没实习经历,学历不占优势,怎么找到一份好实习?
学会丰富和优化你的简历
要想获得面试机会,就必须通过简历筛选。而很多没有实习经历的同学,就会觉得自己没什么可以写到简历上。
1、没实习经历但不代表没经历
写在简历上的经历可以分为校外实习和校内实践。实习经历不够,校内经历来凑。企业招聘实习生,一般也没有硬性要求你有多丰富的实习经历,如果你把校内经历写好,证明你是有能力和潜力,让HR觉得你是他需要的人,就可以大大提高成功几率。
如果你是学生干部,除了把职位写上去,你更要展现你做过什么,收获了什么能力。HR看重的是你是否具备学生干部的能力,而不是你的身份。
2、根据岗位要求来丰富自己简历
应聘一家公司,你要对它有一定的了解,比如公司规模,部门架构,公司文化,业务范围等等。然后了解应聘岗位的具体的岗位职责和要求,知己知彼才能百战不殆。
3、其他加分点
没有实习经验,技能或证书也可以!比如,PS、PPT、EXCEL等基础技能都是在职场上可以用到的。
去哪里找实习?
1、同学、老师推荐
身边有一些老师同学、师兄师姐会有实习内推名额,如果在朋友圈、微信群看到他们发布了实习,感兴趣的话主动去咨询。
如何提升技能?
下面我提供一下我多年工作以来收集整理的学习路线,给大家做个参考:
学习一线大厂的各项技术:
大厂是我们的技术先驱,不仅仅是各种技术,还有很多令你大开眼界的使用方法,学习这些有利于自己竞争力的提高,深入理解后也可以提升你的学习效率。
现在竞争这么激烈,只有通过不断学习,提高自己,才能保持竞争力。
1.2020大厂面试高频知识点
2.Jetpack架构组件从入门到精通
3.Framework精编内核解析
主要内容包含:
4.Kotlin强化实战(附Demo)
5.Android设计思想解读开源框架
6.NDK模块开发
定期面试:
光学习了大厂的技术还不够,如何了解当下Android市场需要哪些技术呢?
定期的面试足以让你了解当下市场需要哪些技术,也更加容易确定自身的短板在哪,同时,也可以督促自己学习提升(小伙子,你了解的技术有点落伍了呀…)
万一拿到了高薪Offer,岂不是更赚?
《379页Android开发面试宝典》
多看大佬的学习笔记,学习大佬的设计思想:
只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。
真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。
《486页超全面Android开发相关源码精编解析》
以上这些内容均免费分享给大家,需要完整版的朋友,直接私信回复【资料】一键领取!!!
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!