赞
踩
先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip204888 (备注Android)
果断将话题扯到concurrenthashmap,讲了concurrenthashmap相比于hashtable做的优化、segment的概念、concurrenthashmap高效的原因。中间面试官问的问题:
容器类中fastfail的概念。
concurrenthashmap的插入操作是直接操作数组中的链表吗?
集合类相关over,由于都是自己主动在说,把握了主动权,相谈甚欢。
多线程
由于上面提出了concurrenthashmap的概念,顺理成章聊起了多线程。有了上一部分的经验全程我主动讲,面试官针对性问了一些问题,大概内容如下:
为什么要使用多线程?多线程需要注意的问题。上下文开销、死锁等。
java内存模型、导致线程不安全的原因。
volatile关键字,缓存一致性、指令重排序概念。
synchronize关键字,java对象头、Markword概念、synchronize底层monitorenter和moniterexit指令。
lock语句和synchronize对比。
原子操作,CAS概念、相关参数。
乐观锁、悲观锁概念及使用场景。
线程池概念、实现原理等。
JVM锁的优化,偏向锁、轻量级锁概念及原理。
多线程方面回答得比较好,面试官反馈比较满意。
数据库
数据库方面笔者水平较菜,没有深入了解。面试官问了一个问题,
SQL语句中对表或者字段取别名有什么好处?
并不知道怎么回答,面试官也没有再问数据库相关。之后面试官问了解操作系统,回答:没学过。面试官:好的 ,那不问了。心中感动得无法用言语形容。
通信协议
接下来是对通信协议的了解,大概问了下列问题:
TCP三次握手、四次挥手。
http请求报文结构、响应报文,状态码。
http2.0相比于http1.0的新特性,推送、多路复用、消息头压缩等。
通信协议问得不是太深,了解得比较好即可。面试官反馈比较好。最后就是问android了,面试官说感觉你android应该挺厉害的,当时真的是受宠若惊。
android
android是重头戏。由于之前已经了解挺多,android方面基础的没有多问,比较深入。大概有如下问题:
handler机制组成,handler机制每一部分的源码包括looper中的loop方法、 threadlocal概念、dispatchmessage方法源码,runnable封装message等。
listview缓存机制、recycleview缓存机制。
bitmap高效加载,三级缓存等。
binder机制原理。
view的工作原理及measure、layout、draw流程。哪一个流程可以放在子线程中去执行?
draw方法中需要注意的问题?
view的事件分发机制。
android性能优化:布局优化、绘制优化、内存泄露优化、bitmap、内存泄露等。
内存泄露的概念?android中发生的场景?怎么解决?讲了handler、动画等。
面试android方面的时候已经真正地淡定下来了,有条不紊地和面试官说了自己所有的理解。反馈也挺好。
写算法的时候发生了一个小插曲,由于面试官直接面的都是以java写的,而笔者比较熟悉C++写算法,面试官也不太熟悉c++编译(g++),面面相觑一会儿才成功编译输出结果。真心非常感谢二面面试官的细致和耐心,最好的一次面试体验。面试官说他的这一面他过了,还会有一到两轮技术面试,礼貌地感谢面试官之后结束了,至此二面结束。二面108min。关闭连接后长呼一口气和女友分享了喜报,经此一役,我知道我的阿里之路已走完半程。
为什么说二面很重要呢?因为二面是所以技术面试中最为细致、考察最为最为深入的一轮面试,后面的面试官会很大程度上参考这一面试的结果,并且据说这一面很影响评级。
###三面
二面过后的第二天下午收到三面电话,约了三点的面试,由于之前的面试都是晚上可以在教室完成(在此感谢女友,没有你的陪伴就没有一个好的环境完成面试),三点的时间点是上课时间也基本找不到空教室,所以在教师休息的小房间完成了三面面试。
三面面试官感觉是部门主管级别,上来自我介绍后开始问问题。问了一下简历上在学校做的一个android的项目,说一个难点,讲了推送,巴拉巴拉讲了一通极光推送,感觉面试官不是很感冒,问了极光推送的实现原理,笔者一紧张竟然忘了讲长连接……又问了华为实习的项目,难点,怎么优化……我扯了一通字母树,感觉面试官还是不太感冒。这个时候已经有点慌张,然后……面试官开始问优缺点、之前签的公司、为什么想去杭州、你是怎么看待算法?还问了最优成就感的一件事情,你觉得为什么会获得一等奖?是不是因为对手太弱了(懵了……)?回答完直接问还有什么问题想问他…此时有点崩溃,感觉也答得不太好,问了还有哪些方面需要改善。然后结束了面试……三面29min。
面完三面挺难受的,感觉反馈不是很好,没发挥好。难过了一会儿吃了个饭回图书馆继续看书。
###四面
当晚上我还在图书馆感怀阿里离我远去的时候,一个杭州的电话来了……和四面面试官约好了时间,做一个技术和综合素质方面的面试。急匆匆和女友去找到了一个空教室,9点电话如约而至。四面面试官感觉斯文儒雅,上来介绍这是一轮交叉面,最后一轮技术面试。照例自我介绍后,问了如下问题:
通信协议
TCP保证可靠传输的实现:停止等待协议、滑动窗口协议、流量控制、拥塞控制等。
项目
说一个你记忆比较深刻的功能:我讲了一个查看当前WiFi网络连接终端信息的功能的实现。
说一下你遇到的问题:讲了一个十几万级别的字符串的匹配通过字母树优化的问题。面试官听了后和我详细分析了一下,得到了一个更好的实现方法……当时一阵汗颜,班门弄斧了。
问了一下项目中使用到的三级缓存策略。
获奖
聊了聊获奖经历,中间是怎么学习的。面试官看了看前面的面试过程,说问了多线程了,那他就不问了……
数据库
数据库方面问了以下的问题:
索引的种类。
###五面(HR)
度过周末后照例去图书馆学习,在周一下午接到hr的电话。周末准备了一些常见的HR面试问题,结果一个都没问到,问到的问题大概如下:
面完告知一到两周会有结果,要从池子里综合考量捞出一批人给offer(心中一慌,毕竟走到最后的对手都不容小觑)。随后HR面试官加了微信,有问题可以在微信上交流。
###后续
面完HR安心地在备胎池里面躺着。等待的日子总是很难熬,一天一天地过去,各种打听消息,听说有的前几批的拿到了意向(offer),心里拔凉拔凉。在过去四天后,周五的下午问了HR面试官后得知offer已在审批,据说比较稳,就是走个流程。联想到之前面完腾讯hr在offer审批等了很久还是心难安,在熬过周末,周一和周二,offer已经审批了三天,焦虑程度与日俱增。周二晚上十点半的时候,在宿舍无聊刷新闻的时候,突然收到一条短信和一封邮件,打开后发现是录用意向书。真的挺开心,长呼一口气,总算这条路走到了尽头。
以上是我的阿里春招之路的分享。
###总结
洋洋洒洒写到这边已经说了很多,也有一些经验和大家分享。找工作的日子真的很累,不过再累也要坚持。有幸参加过一些公司的面试,问的问题也都大同小异,主要是以下的一些方面:
###一些感慨
说一些个人感受吧,找工作其实很容易,一些公司单凭学历就可以让你进去上班,现在太缺程序员了,简单到你面试根本不聊技术谈谈人生、聊聊奖项就可以给你发offer,但是找一个好工作不易,数十上百个人抢一两个岗位很常见。
主要你怎么定义你对于“好”的理解,工资高?公司技术氛围好?行业地位高?工作安稳福利好?不加班?仁者见仁智者见智,没必要强行拿自己的价值观去评判别人的工作,最适合的才是最好的。所以在找工作的时候想清楚自己到底想要一个怎样的工作也是挺重要的,定义一个目标,努力去做,才是最重要的。
###技巧小谈
关于面试的一些技巧,个人觉得最根本的还是拓展你的知识架构的宽度和广度,形成你的一套说辞架构。以多线程为例,问到你多线程?可以先从为什么要使用多线程?使用多线程有什么好处?使用多线程一定会比单线程好吗?多线程会导致什么问题?导致问题的java内存模型是怎样的?怎么解决这个问题?解决方法如volatile、synchronize关键字等它的底层实现是怎样的?你是怎么使用多线程的?使用线程池有什么好处……
如果你真正理解了并将它完善成一个体系,面试官让你说多线程,接下来10min,你可以一直讲完。面试的参照不是你和面试官相比如何,而是你和你的竞争者相比如何,如果上面这一套完善地讲完,面试官对你的评价可想而知。
总而言之,成功是留给准备好的人的。无论是参加什么面试,都要做好充足的准备,注意好面试的礼仪和穿着,向面试官表现出自己的热忱与真诚就好。即使最后没有过关,也要做好经验的总结,为下一次面试做好充足准备。
这里我为大家准备了一些我在面试后整理的面试专题资料,除了面试题,还总结出了互联网公司Android程序员面试涉及到的绝大部分面试题及答案,并整理做成了文档,以及系统的进阶学习视频资料,免费分享给大家,希望能帮助到你面试前的复习,且找到一个好的工作,也节省大家在网上搜索资料的时间来学习。
毕竟不管遇到什么样的面试官,去面试首先最主要的就是自己的实力,只要实力够硬,技术够强,就不怕面试拿不到offer!
想要面试顺通嘛,赶紧领取下面的面试资料为之后的面试做足准备叭!这里提前祝各位面试成功!
我见过很多技术leader在面试的时候,遇到处于迷茫期的大龄程序员,比面试官年龄都大。这些人有一些共同特征:可能工作了5、6年,还是每天重复给业务部门写代码,工作内容的重复性比较高,没有什么技术含量的工作。问到这些人的职业规划时,他们也没有太多想法。
其实30岁到40岁是一个人职业发展的黄金阶段,一定要在业务范围内的扩张,技术广度和深度提升上有自己的计划,才有助于在职业发展上有持续的发展路径,而不至于停滞不前。
不断奔跑,你就知道学习的意义所在!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注Android)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注Android)
[外链图片转存中…(img-t7mTFoLS-1713186851312)]
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。