互联网时代的到来,让我们获取知识变得更加简单,理论上讲只要你想学,便会有不尽的知识等你,只要方法得当,够努力,任何人都可以都有可能成为大牛。
自己在努力的基础上,还学习了一些高效的学习方法,让我在学习的过程中更加高效,更迅速的掌握,以下是我学习AndroID的一些套路。
闭关刷题以前在网上找技术博客,不成体系的学习效果真的太低了,经常因为信息过多,还有信息不准确而耽误时间,很容易就分心了。
后面除了跟视频学习,就是一直在刷这套1307页AndroID 面试全套真题解析。
这份资料是真的帮到了很多,内容全面,覆盖率比较高,省去了很多时间和精力。
面试前面面了贝壳找房和网易,都通过了,虽然最后没有谈好,但是有了一些信心。后面让朋友帮忙内推了腾讯,三面顺利拿下offer,薪资是28K,相比于上一份工作上涨了15K。
这里主要放腾讯面经
一面
0、说说做过的项目(差不多包括了自我介绍)
说一下我表达的重点:我做了AndroidQ的适配;我在项目中使用了新的技术:liveData、BiometricPrompt;我使用到了设计模式:工厂、简单工厂、单例;我在不断优化我的代码;我关注Google开发者大会
1、问上一份工作
抓着工作中的技术点问了很多,然后后面问题的差不多都是来自这里面。
2、EventBus和回调的对比。有没有其他办法可以解决类之间的耦合性。
说了livaData,但其实差不多。老老实实说不知道了……
现在想了想,这个题目那份资料里面好像也有提到过,但是……我没记住!!!
3、ListVIEw和RecyclerVIEw的比较,ListVIEw没用了吗?
说了实现效果,代码、缓存方面、VIEwHolder的差异,讲了一下RecyclerVIEw在多个Fragment中有相同Item时的优越性。
ListVIEw这个问题问到我时我差点没笑出来……我看了微信团队对于卡包界面是否要更新为RecyclerVIEw的一篇文章,建议背诵全文……
4、Service和AsyncTask对比。
因为AsyncTask由于不使用匿名内部类方式很可能出现内存泄露问题,所以自己不使用,基本都是开线程池。然后面试官问AsyncTask底层,也就说了一下handler+线程池。
现在回想,有这么几个点:生命周期方面;消息传递方面;底层实现方面。
5、线程通信机制。
handler、信号量、互斥量、临界区管理synchronized之类的、共享变量volatile。
6、AndroID进程通信机制。
AIDL、Binder、共享文件。
前两个没啥说的了,老特长了。
说一下共享文件,这个我本来觉得很low,但是最近研究SharedPreference的时候,发现如果APP签名一样的话,可以使用同一个SharedPreference,所以也就说了共享文件。我不是想表达我用共享文件作为进程通信方式,我只是想说我了解SharedPreference。
7、ArrayList和Vector对比……不会Vector,那么ArrayList和linkedList对比。
底层,数组,链表。扩容问题,我概括了一下所有的集合类的扩容方式都是装载因子+当前容量+需要扩容容量。
我说线程安全的List有copyOnWriteArrayList,但是面试官没有往下问。
8、为什么扩容很多情况下都是扩容为两倍?
这个不会,但是说底层代码很多情况下扩容都是移位 *** 作进行的。可能和查询相关?
9、HashMap和Hashtable对比,ConcurrentHashMap。
Hashtable不是Map,Hashtable是Dictionary,而且锁的时候是锁数组,并发的粒度很大。
ConcurrentHashMap用的是分段锁而且有一个:判空+判相等+CAS+synchronized的一个锁的过程,所以很强大。
10、CAS相关。
11、知道优先级反转吗?
不知道……回去研究去……
12、TCP三次握手四次挥手。
主要思路是通过SACK和全双工来整体讲解。
13、代码,如何判断两个链表是否相交 。
我最开始想成了找到第一个相交结点,然后说了思路,面试官说有没有更好的。然后直接判断最后一个结点是否相等。面试官说如果有环呢,那只能用HashSet存一下了。
14、反问。
问了下面试官是什么事业群。
说是PCG平台,感觉自己应该是被PCG捞起来了。
后面就问了一下公司的一些不疼不痒的问题。
总结
整体答得还可以,就是以为是2点面试,结果3点30才面上,可能是我记错时间了。状态没有调整到最好。
二面
0、自我介绍。
1、hashCode和equals方法。
2、HashMap,hash冲突解决,红黑树相关。
3、String、StringBuilder。
面试官问String的加法
String a = "a"+"b"+"c";StringBuilder sb = new StringBuilder();a = sb.append("a").append("b").append("c").toString();
这两者效率差别,我说没差别啊,第一种String的加法被编译器优化成第二种,他不信我……不过还好,最后达成共识面试官面试完自己去查。
现在复盘觉得面试官应该想问的是这种情况:
String a ="";a+="a";a+="b";a+="c";
我还是对的。
4、wait、notify。
问是不是只能在有锁的情况下wait和notify。
[图片上传失败…(image-1692c4-1602502611210)]
5、线程间通信方式。
handler那一套。
6、快排原理,最好情况和最坏情况时间复杂度。
最坏情况逆序n**2,顺序情况我的算法还是nlogn,问了优化思路。
7、算法题,
用了贪心没ac,面试官提示快排,没想明白……
8、思考题,如果我想将一颗二叉树存入文件,怎么样的格式存储可以使得读取效率最高。
这题是个开放讨论题,和面试官一直在讨论怎么做。
【当时以为自己凉了,没想到顺利收到了三面的通知】
三面
0、自我介绍
1、实习工作深挖
2、RePlugin原理深挖,其他插件化框架对比
3、为什么要选择RePlugin框架
4、你觉得自己对于AndroID掌握到了什么地步
5、看过什么源码
6、你为什么要看源码
7、你为什么要写博客
8、知道哪些著名开源框架
9、什么是进程,进程调度算法
10、什么是线程
11、你觉得什么是JVM
12、有哪些线程同步算法
13、死锁是什么,举个例子
14、Object有哪些方法
15、Java异常有哪些,Error和Exception区别
16、OSI七层模型,TCP、UDP是哪一层,应用层有哪些协议
17、如果要设计一个大量图片下载的方法,如何确定并发量,有哪些指标。
18、APP间传递消息安全吗?要怎么做才能安全呢?
19、广播怎么分类
20、自定义view重写的关键有哪些,onLayout和onMeasure区别
21、AndroID有哪些动画,MotionLayout讲一下。MotionLayout使用场景。
22、Activity四种启动模式,SingleTask和Singletop的使用场景
23、一些Framework层的问题,不太会所以记不得了。
当时收藏一位B站UP主的视频,有需要可以去看一下
24、你为什么想了解Framework层知识。
25、算法题。
26、你对于我们的Offer的态度
27、闲聊
总结最后对于程序员来说,要学习的知识内容、技术有太多太多,要想不被环境淘汰就只有不断提升自己,从来都是我们去适应环境,而不是环境来适应我们!
这里附上上述的技术体系图相关的几十套腾讯、头条、阿里、美团等公司2021年的面试题,把技术点整理成了视频和pdf(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。
相信它会给大家带来很多收获:
上述【高清技术脑图】以及【配套的架构技术pdf】可以关注我免费获取
Android学习PDF+架构视频+面试文档+源码笔记
获:**
[外链图片转存中…(img-axJI9wsZ-1621581726615)]
[外链图片转存中…(img-PEfuXQ7E-1621581726616)]
上述【高清技术脑图】以及【配套的架构技术pdf】可以关注我免费获取
Android学习PDF+架构视频+面试文档+源码笔记
总结当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。
以上是内存溢出为你收集整理的渣本毕业两年经验,最全的BAT大厂面试题整理全部内容,希望文章能够帮你解决渣本毕业两年经验,最全的BAT大厂面试题整理所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)