先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip204888 (备注Android)
正文
操作系统:
1,重读Modern Operating System,重温OS的核心概念
2,重读Computer Systems a Programmer’s Perspective的关键章节,回顾里面的关键点
从七月底开始一直到十一月,花了接近四个月,很多东西都是一边面试一边准备:面试->发现盲点->修复盲点。
此外列出一些面试笔试题的资源,此外感谢基友@codewarrior之前的推荐:
1,Crack over the code interview
很靠谱的笔试面试指导手册
2,CareerCup
集齐了大量的真实笔试面试题,去外企的一定得看
3,TopCoder
如果不是ACM,练这个就够,其实面试也不会问太难的算法,哪怕是google
4,编程之美
尽管题目有些过时,但依然很实用,三星题目适合一个人仔细想
此外也说下一些不靠谱的资源:
1,IT公司面试100题
这个恐怕是国内传的最多的IT面试题
题目本身还可以,但那个出题人本身代码功底一般,给出的答案包含大量错误和缺陷,导致参考价值骤降
2,程序员面试宝典
翔一样的书,各种错误概念的堆积,**如果一个错误给我一块钱,我能从这本书搞成万元户。**如果去正规公司拿这本书准备,包你被黑出翔。
4,简历
在MS时,老大曾让我帮忙招几个靠谱的实习生,因此我收到了几百封简历,过了一把HR的瘾。这里说说自己在看简历时发现的几点:
1,可读性。不要用Word或压缩包,用PDF。此外在邮件里面用纯文本加上自己的简介,简化对方阅读的操作。要记住HR一天看的简历海的去了,压缩包是HR最痛恨的格式,因为解压了就不知道扔哪去了,有时干脆就不看;Word有版本问题,10的docx到了07往往被黑出翔。还有就是对方有可能不在PC上读邮件,因此纯文本的简介非常有必要。
2,群发。不要给人群发的嫌疑,看清楚目标职位和目标公司,我发的工程院招聘贴,收到的几百封简历里面有十余封是投到微软亚洲研究院,有几个干脆写“敬爱的某领导”,尼玛这不找抽么。
3,设计。特别提一下设计,很多电工的简历就是翔,丑的一逼,对齐没有,字体拙计,要点不明。再放到几百份几千份简历里面,活该你被忽略。建议所有电工投简历前阅读《给大家看的设计书》,至少搞明白里面的C.R.A.P四原则。不要小看设计的威力,在简历内容接近的情况下,良好的设计会大大加分。
4,篇幅。控制在一页以内。倒不是说不能写两页,而是HR没时间看两页这么多。而且就我看过的几百封简历而言,凡是超过两页的没一个靠谱,有这么高的先验概率,HR才没工夫一个个筛,反正中国有的是人。
5,重点。一定要有重点,做到让HR通过简历在20秒内确定你靠不靠谱。可以用加黑字体进行视觉引导。
6,措辞。甭搞“渴望得到这份工作”、“期待在xxx的工作机会”这样的句式,除了显得你低端,其它毛用没有。
7,别字。千万不要出现错别字,别字简历一般直接干掉。一页的简历都能出问题,一般不会靠谱。
因为看了很多不靠谱的简历,我对简历重要性的理解要比其他人深刻很多。首先花了一周把原来两页半的纸缩到一页内,然后找UI朋友帮忙调整了版式、缩进和字体,并找UX朋友帮忙进行重点调整以进行视觉引导,然后在PC和手机上进行了简历可读性测试。从而获得了100%的简历通过率。
此外,优先走内部推荐,这样最有效率,所以结识各个公司的朋友是非常有必要的。
海投简历既没必要也没效率,有这个时间不如改改简历来的实在。
相关书目:
1,给大家看的设计书,让你的简历看起来不像一坨翔。
2,Google Resume,如何写出靠谱的简历,进行靠谱的求职。
5,笔试
如之前所说,IT公司的笔试相对单纯(程序设计、算法和操作系统),而且范围较窄,有不少题目被出了一遍又一遍。因此市面上存在大量面试/笔试宝典之类的书籍和题集。
准备国内的小公司,这些面试/笔试题集还靠的住,因为小公司往往不会在招人环节上下太大的成本,因此他们的试卷一般就是东拼西凑的网上题目;对于大型公司来说,这些题库或是宝典就显的不够用了,尤其是外企。
所以不要把希望放在运气或是临阵磨枪上。就我自己而言,笔试准备了一个多月,尽管这个时间并不算多,但由于自己平时一直在阅读CS的基础书籍,并做了大量的纸上代码练习,因此笔试通过率也达到了100%(实际上是由于我笔试的公司题目都略简单,据说EMC和网易游戏的笔试难度很高,但当时由于时间冲突没有去成,因此搞出了这个数据)。
多说无益,这里拿搜狗、腾讯、微软和雅虎这四家公司的笔试试卷为例,简单的介绍下IT公司的笔试题型和题目组成。
搜狗:
题型由十余道不定项选择题和三道算法题目组成,要求在两个小时完成。选择题难度一般,比较杂,也有一些原题;三道算法题目有点意思,至少网上是很难找到,需要一定的算法设计能力(主要是动态规划)才能给出解决。
搜狗的笔试试题按职位分的很细,从C++开发工程师到iOS开发工程师再到数据挖掘研究工程师十余个职位,每个职位的题目都有一套独立的试卷。但是研发的算法题是一样的,最后一道算法题很有意思,我花了一个多小时才想到利用组合数学里面的知识(多元一次方程非负解)给出设计方案,后来和面试官聊这道题时他们也挺吃惊,因为我的方案比他们的答案还要优化。
腾讯:
题型由二十道单项选择题、六道填空题和两道算法题组成,其中两道算法题是二选一。难度比较简单,题型很广,既有程序设计语言的细节也有概率统计的基本知识,甚至还有C语言的创始人是谁这样的搞笑问题,从选择题上能看得出腾讯在笔试题上还是下了点功夫的,但算法题就太简单了点,至少我认为考不出什么区分度。
腾讯的笔试试题也是按职位划分的,但就没有搜狗那么细了,研发类笔试题目是统一的,要求一个半小时完成,印象里自己四十分钟就搞定收工,很多人都提前交了试卷,因为确实很简单。
微软:
题型只有二十道不定项选择题,难度较难,要求在一小时四十分钟完成。难度较难,覆盖面非常广,从设计模式,算法分析,代码阅读到C++语言特性,甚至连冷门的函数式程序设计语言都有涉及。
微软的笔试题目BT之处在于其独特的积分机制:答对了加分,不答无分,答错了倒扣。这就使得很多ds答完试卷感觉自我良好但实际已经被倒扣出翔。以最后一道题为例,答对了加7分,答错倒扣13分,相当于一下子损失20分。所以微软的笔试题会做就得做对,不会做就别蒙,要不更惨。
此外,微软的笔试题是英文的,加上时间比较短,有些人题都读不完,有些ds连functional language是什么都不知道,自然败的很惨。
雅虎:
题型由十余道单项选择题,一道设计题目和六道算法题目组成,其中六道算法题目是六选二,要求在两个小时完成。难度尚可,主要考察编程能力和算法设计能力。由于时间充裕,尽管是六选二,为了炫技,我直接答了里面的五道题目。然而面试时发现面试官判卷子时并没有把多答的题目考虑在内,囧tz。
相对于微软,雅虎的题目覆盖面就窄了许多,没有一道题目跳出程序设计、算法和操作系统这个圈的,只要勤加准备,很容易通过。
雅虎的笔试题也是英文,因此英语作答较为合适,此外,由于算法题目简单,给出optimal solution是必须的,比如说在logN的时间内算fibonacci number是必备的知识,能写binary search就不要写sequential search等等。
从笔试题可以明显看出,国外的大型IT公司(比如雅虎,微软和谷歌等)并不在意你现在的skill set,而更看重你的potential,因此题目大多很基础,并具备相当的深度,以确保你对CS有深刻的理解并能够走的很远;而国内的IT公司(比如百度、搜狗和人人等)更看重你现在的skill set,因此会出现不少语言特性,OS操作之类的具体题目,以确保你能够以尽快的速度上手干活,至于能发展到啥程度他们就不care了。
因此,准备笔试题的时候要确定自己的目标公司:主攻国内公司的话,C++的语言特性、linux基本命令操作这些细节也得准备,因为会有大量此类题目;主攻国外公司的话,良好的英文阅读能力必不可少,此外优秀的代码理解和代码编写能力也不可或缺。
此外,不要在笔试题目里犯低级错误,不要抄袭(面试时经常会问到笔试题),保持书写的工整(尤其是代码题目和问答题目)。
考虑到几乎所有的公司都有编程题目,也就是在纸上写代码,这里推荐几本相关书籍:
1,Elements of programming style 2nd,写出良好风格的代码。纸上代码一般不长,但短短几行代码往往可以看出这个人的水准,风格很差的代码往往会被pass掉。
2,Algorithm design manual 2nd,作为非ACM出身的码农,这本书比算导实用很多,课后题也很实在,对回溯,动态规划这些编程技巧讲的非常清楚。
3,C interfaces and implementation,无论是面试还是笔试,一般都会用C写程序,这本书包含大量的工业级C代码,绝佳的参考和模仿素材。
最后推荐下Elements of programming和Structure and interpretation of computer programs,这两本书难度很搞,需要大量的时间阅读,不适合临场阅读准备,但读过后,写出的代码绝逼会上两个层次,这里我就不多介绍了。
6,面试
之前有人PM我关于海投简历的问题。我个人不建议海投简历。因为对能力弱的人来说,海投简历只会让他信心更差,没有任何效果,有投简历的时间还不如精心准备少数几个好公司;而对能力强的人来说,海投简历之后会有大量的笔试和面试,笔试很耗体力,面试更很耗体力,不但需要打车或坐地铁在各个公司间穿梭,而且需要在面试时保持精神的高度集中,一般面下来都会精疲力尽,导致接下来的发挥不好。所以还是之前所说,优先内部推荐,然后再根据自己的情况和职业发展路线选择公司,选择职位,不用选太多,集中精力攻破领域内的TOP3即可。就我自己而言,求职期间,我一共投了12封简历,参加了12家公司的面试,一共面了35轮。说多不多,说少不少,因为自己投简历时也是本着互联网公司为主,小公司和企事业单位压根没有投,精准投放的好处在于可以集中精力准备同一类型的公司,从而达到不错的效果。
关于简历海投的问题就说到这里,接下来讲讲IT公司的面试。需要注意的是我这里聊的都是应届生面试,社会招聘面试可能会有所区别,但整体流程不会有太大差异。
尽管笔试题会有所差别,但IT公司面试的流程大同小异:标准的技术面试一般有45分钟到60分钟,大约分为三个阶段:
1,自我介绍(5~10分钟):
这个环节的主要目的在于建立面试官和求职者之间的沟通,面试官已经扫过你的简历,但需要对你有进一步的了解,以便建立一个初步印象,并便于进行接下来的技术提问,所以这个环节最常见的问题无外乎“进行一下自我介绍”,有时会加上3分钟或是5分钟的时限,有时会询问“说说你最得意的项目/作品”之类的变体问题。
由于这个环节相对固定,因此准备起来相对容易,但即便如此,面试初期时我在自我介绍环节也犯过不少错误。这里以我的经历简单的总结下这个环节的要点:
1,言简意赅,突出亮点
面试初期时,我犯的一个很大的问题就是自我介绍废话太多,诸如“出生自xx省xx市”,“自我评价xxx”之类的屁话连篇。要知道技术面试不是相亲,这里的自我介绍不是相亲里面的查户口本,而是要了解你这个人靠不靠谱,牛逼不牛逼。如何在3分钟内让别人觉得你牛逼呢?很简单,说且仅说你最牛逼的事迹,让对方留下深刻印象。就技术面试而言,牛逼的事迹包含三方面:做过的项目,读过的书,认识的人。
如果实在想不出来有啥牛逼事迹,那就比较难办。说实话,换做你是面试官,招一个履历毫无亮点的人进来有何用?
2,紧贴简历
面试官了解你的另外一个途径就是简历,然而短短一两页的简历很难说明白你简历项目中的亮点和难点。就算你不提及,面试官也会在简历中挑他感兴趣的点进行提问,因此自我介绍的内容应该是简历的补充。这样既能留给面试官不错的印象,也能有效节省时间,留出更多的时间进行技术提问环节和问答环节。
此外,千万不要搞出自相矛盾,比如说简历讲的做了A你在自我介绍中又说是B,这就不是拙计的问题了。
3,了解公司需求
不要试图用一套自我介绍来搞定所有公司,除非你的简历只有一句话("Exhausted graphic programming"或是"I wrote python"等)。不同的公司有不同的需求,在Google面前大谈.net技术显然不是什么好的选择(我在google一面中就做过这种挫事)。面试之前要进行详细的调研,了解公司和职位的需求,然后根据他们的需求定制自己的自我介绍和简历,效果会更好。
2,技术提问(35~45分钟):
通过自我介绍环节,面试官会对你有一个大概的评估,接下来会通过一系列深入的问题考察你的项目经历和技术能力。所以自我介绍环节不要吹牛逼,技术面试是很实在的东西,你有几斤几两问几下就出来,根本忽悠不过去。
按照MS的分类,技术面试问题分为三类:
1,Behavior questions:此类问题针对面试者的过往经历,一方面考察面试者的表达能力和实际经验,一方面也可以排除掉一堆在简历上吹牛逼的真ds:
“说说你最牛逼的项目?”
2,Hypothetical questions:此类问题会假设出一些场景,让面试者进行作答,主要考察面试者的应变能力和实际经验:
“给你三天,你会如何把xx项目做得很牛逼?”
3,Probing questions:如果前两类问题答的不错,面试官往往会追加一些问题,以探测面试者能够走多远,此类问题的出现也是一个标志,面试官对你之前的表现感觉还不错:
“你会如何改进你做过的最牛逼的项目?”
就具体技术问题而言,考察题目视你的应聘职位和你的过往经历而定,开发岗会侧重代码编写和系统设计,测试岗会更注重测试用例的编写等细节,产品岗要对线框图,交互设计有了解。不过算法设计和代码编写这两块是肯定有的,毕竟这是程序员的看家功夫,这个搞不定就没有然后了。
算法设计这块我就不多说了,不搞ACM的码农没啥发言权。代码编写的话这里多说两句:和平时的开发不同,面试时的代码往往是在纸上搞的,而非IDE。很多代码写的还不错的选手往往会在纸上代码这个环节被虐的翔尿齐飞,限于篇幅原因我就不多介绍纸上代码的技巧了,还是那句话,多练习。我自己把Software Tools、Elements of programming和C interface and implementation中的代码在纸上写过几遍,又把常见的面试题目练习了三遍,因此纸上代码环节从来没出过问题。
3,问答环节(5~10分钟):
如果前两个环节进展顺利,就会进入最后的问答环节。这个环节面试官一般会让面试者提几个感兴趣的问题,以增进相互的了解。
相对于前两个环节,这个环节会轻松很多。不过依然要注意,关于面试表现的问题最好别问,因为问也问不出来什么,至于待遇,那是HR的事情,技术面试官也无能为力。
最后根据自己的面试经历说说几个细节的问题
态度:记住你是去求职,证明自己的能力达到职位需求是你的首要任务。没有必要和面试官抬杠,把面试官搞不爽对你一点好处都没有。我在面试搜狗时就出过这问题(直接表示对面试官的问题的不屑),直接一面被砍掉。
着装:尽管IT公司大多不需要西装革履,但也别太拖沓,穿整齐些,至少给人很精神的感觉。我面试腾讯时直接搞了一件套头衫+迷彩裤+机车帽,结果是面试官从头到尾就没正眼看过我,直接一面被砍掉。
交流:面试是一个交流的过程,不明白的一定要主动询问,面试的大忌就是面试官给了一个问题,你一声不吭的搞了一个小时,最后发现搞的不是面试官问的问题,这时就算你很牛逼,面试结果往往也是悲剧。
7,国企
国内的IT公司一共去了6家,拿到6个offer,面试19场。
百度(2轮面试+1轮终面)
百度的应届生面试分为3轮,2轮技术面和1轮终面,3轮面试连在一起进行,如果搞到第1轮或第2轮就叫你回去,基本上不是悲剧就是备胎。如果进了终面,只要不出岔子,一般问题不大,因为百度每年招的人非常多,印象里有1500人之多。
可能是招的人特别多从而导致面试官人数不够,百度的面试在所有大公司里面几乎是最随意的,面试官往往都没有经过系统的面试培训,出的题目也只是从网上东拼西凑,比如像C++的虚函数的实现机制此类SB题目层出不穷。而且有些面试官缺乏对面试者最基本的尊重,我有几个同学在百度面试时差点被面哭。
就我个人而言,我先后参加了百度的实习生面试和正式员工面试。正式员工面试给我感觉相当不错,流程很规范,面试官很nice,问的问题也说的过去;然而实习生面试那两个人就是翔,不但问的问题很二,而且不给我任何交流的空间,同时在面试过程中表现出一副非常不屑的神情,令人极度不爽。
此外,百度的员工(包括面试官)给我一种工作过度的感觉,说惊悚些就是印堂发黑。结合艳红哥提到的狼性精神,我这号酱油男说啥也不敢去。
搜狗(2轮面试)
搜狗的应届生面试分为4轮,2轮技术+1轮HR+一轮Manager,4轮面试是分开的,所以会比较麻烦,毕竟来回跑来跑去的很费时费力。
我的搜狗面试经历比较诙谐,尽管面了2轮,但2轮都是一面,第一个一面是朋友帮忙推荐过去的面试,第二个一面是参加搜狗笔试获得的面试机会,从这里多少能看出搜狗招人是有点混乱的。
第一个一面非常囧,当时面试官问我C++,我表示很少用,接下来问了若干智力题,由于被问的有些拙计,于是反问“这种智力题有什么考察度,会做的人一下子做出来,不会做的一天也搞不定”。估计这句话把面试官搞毛了,接下来的气氛变的很紧张,后来面试官反问我“那你觉得应该怎么招人”,我回答“你们应该学学微软”。然后就没有然后了,囧tz。
第二个一面感觉还成,因为我笔试的题目答得比较出彩。接下来是一个strcpy的纸上代码和一个简单的OS生产者消费者问题,答得还算顺利,可惜依然没有然后,我怀疑可能是没有Hire Count了。
搜狗面试给我一个很大的教训,就是别装逼,求职就是求职,别和面试官抬杠。在接下来的面试中,我收敛了很多。
创新工场(2轮面试+4轮终面)
创新工场本身是一个孵化公司,它的招聘流程是这样的:工场进行笔试和面试初选,然后由工场下面的子公司进行复选,由于子公司众多,因此工场有一个双选会,每个通过初选的求职者可以选择3家工场的子公司,在这个双选会上开复哥很是鼓吹创业,不过效果似乎不太理想 😄
工场的初选面试有两轮,然后是3个子公司的复选面试。和其它公司不一样,工场的面试时间非常短,只有25分钟:一个自我介绍,两个无需写代码的题目。有点拼人品,因为这么短的时间很难考察全面。复选面试大多是电面,比较简单,算法题目说下思路就可以。顺便推荐下友盟,感觉这些子公司里面这家的发展潜力最大。
腾讯(1轮面试)
腾讯的应届生面试的组成我不太清楚,因为1轮就GG了。
腾讯的面试也让人很火大,面试官直接拿一个laptop在那里给你放ppt,一个slide一个题目,答完下一个slide,结果是我说的口干舌燥面试官还没说两句话。题目五花八门,从简历到智力题再到为人处事,印象里答了不下七八道题目,累的一逼还没通过,尼玛。
不过腾讯的面试中见到很多PLMM,目测有很多非技术岗。
人人(2轮面试+2轮终面)
人人的应届生面试一般是2轮面试+1轮终面,由于我的笔试和面试发挥不错,因此又得到了一个加面的机会,拿到了人人special offer,待遇非常给力。
人人的一面面试官非常nice,我当时迟到了30分钟,由于没吃饭因此直接蹭了几个面包,一边吃一边回答问题一边写代码。由于一面主要考察纸上代码,这个是我的强项,因此很轻松的通过了。二面相对杂一些,数据结构,算法,设计模式,多线程等都有涉及,不过问的都不深,也比较容易。
终面第一面由自我介绍+读过的书+写一段代码组成,正好刚刚读过Sicence of programming,于是就海侃了一顿程序正确性证明的东西,并用这个证明了下自己的代码的正确性,目测效果还不错。
面试复习笔记
这份资料我从春招开始,就会将各博客、论坛。网站上等优质的Android开发中高级面试题收集起来,然后全网寻找最优的解答方案。每一道面试题都是百分百的大厂面经真题+最优解答。包知识脉络 + 诸多细节。
节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。
《960页Android开发笔记》
《1307页Android开发面试宝典》
包含了腾讯、百度、小米、阿里、乐视、美团、58、猎豹、360、新浪、搜狐等一线互联网公司面试被问到的题目。熟悉本文中列出的知识点会大大增加通过前两轮技术面试的几率。
《507页Android开发相关源码解析》
只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。
真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注Android)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!文章来源地址https://www.toymoban.com/news/detail-858089.html
前两轮技术面试的几率。
[外链图片转存中…(img-UaJUvT9L-1713223482863)]
《507页Android开发相关源码解析》
只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。
真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。
[外链图片转存中…(img-1Ns7bPZ3-1713223482864)]
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注Android)
[外链图片转存中…(img-eTGUGbbt-1713223482864)]文章来源:https://www.toymoban.com/news/detail-858089.html
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
到了这里,关于9个offer,12家公司,35场面试,从微软到谷歌,应届计算机毕业生的2012求职之路的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!