- 提到了
ListView
- 为什么用
Rv
不用Lv
(说了1.强制实现viewHolder
(避免findViewById
) 2.缓存机制)
Lv
二级缓存怎么判断这个View
是他要的?(答了postion,id
)
- 然后问
id
指的是?(这里说忘记了)
- 四级缓存是怎么找到
view
他要的?(说了itemType
)
- 如果有相同的
itemType
怎么处理?(说了直接使用任意一个)
- 如果四级缓存中找不到呢?(说了手动加载)
- 手动加载是哪里来的?(说了从布局
xml
中定义的itemtype
中拿的)
xml
怎么关联到Rv
(加载代码inflate
的,不太了解)
-
堆内存和栈内存区别
-
5层网络协议包括哪些?
-
tcp
三次握手说一下 -
equals
和==
区别 -
hashmap
实现原理(说了基本结构,put
) -
get
是怎样实现的
智力题:
- 5升桶,3升桶,水无限,你给我装出4升水
算法:[82. 删除排序链表中的重复元素 II](javascript:void(0)😉
技术面三面 时长 37 分钟(视频面试)
-
自我介绍
-
架构设计主要是什么
-
说一下你提到的依赖倒置
-
除了依赖倒置还有什么重要的原则(刚说完单一职责就被打断)
-
MVP注意事项(说了内存泄漏的处理)
-
内存泄漏的原理
-
怎么判断内存不能被释放
-
如何检测内存泄漏(说了线下用
LeakCanary
,线上用Memory profiler
,然后自己扯到DialogFragment
内存泄漏) -
打断,问
final
作用(说了修饰类,方法,变量,作用) -
非静态内部类引用外部类对象,需要
final
关键字吗?(说了应该用static
,转为静态内部类,防止内存泄漏) -
多线程使用过吗
-
说一下线程池的使用(刚说了构造方法实现)
-
核心线程数什么作用(说了线程池的运行流程)
-
核心线程数和最大线程数的设置(
IO
密集型和CPU
密集型,最大线程数的话,看系统支持的并发量) -
一个进程有多少个线程?(说了空间允许的范围内可以一直开辟)
-
实际上是多少?(说了
2g
分配的空间) -
为什么是2g(说了之前看过,具体原理不太清楚)
-
一个异步任务都开一个线程,还是多个任务开一个线程,你怎么决定开不开?(说了耗时的话就开,不太耗时不开,因为线程切换调度的话,存在一定的开销)
-
线程安全怎么保证?
-
syncronized
内部原理是什么(说了修饰静态方法和非静态方法,代码块) -
修饰静态方法和非静态方法,能够并发执行吗?(可以,因为他们锁的对象不一样,说到了死锁)
-
死锁的原理是什么?
-
出现死锁怎么排查(这个不太会,说了用
jvm
中的jstack
) -
追问怎么用?(说没用过,只是知道)
-
问我他的原理是什么?(不太知道,说看
traces.txt
,看堆栈) -
怎么安全停止一个线程(说了用
volatile
修饰变量,通过while
(变量),手动设置true false
) -
volatile
原理是什么?(说了java
内存模型啥的,修饰特性啥的) -
网络了解吗
-
tcp
优点(可靠性,面向连接) -
面向连接是什么?(说了计算机通信前建立连接)
-
面向连接和非面向连接的本质区别是什么?(乱答,不知道)
-
拥塞控制原理
-
http
与udp
区别(说了层数) -
http
请求流程
下面开始聊天了
- 反问:
HR 面(24分钟)
-
你是周一面的三面,这几天关于面试你是怎么考虑的?
-
周一面试完,周四周五才给你反馈,有考虑过面试不通过吗
我说周二就给我反馈了
-
面试感受如何?
-
你对面试做了什么准备
-
客户端基础知识方面的话,你是怎么复习和准备的?
-
有做一些刷题吗?
-
字节算法这块,难度怎么样
-
距离毕业还有一年半,你怎么规划这段时间
-
你们是信息安全专业?应该不是计算机专业的同学吧
-
你是什么时候考虑转开发
-
你是大一就打算做开发?还是说进到工作室后,受到师兄的影响才转开发?
-
介绍一下工作室
-
配合方式是怎样的?
-
说一下影响比较深的项目
-
主要是客户端后台都有?
-
这个项目你们老师也是怎样评价的?
-
团队协作有没有遇到比较难推进的时候?
-
你会主动去配合团队吗
-
自己学习或者工作,怎么安排时间?
-
工作的时间占你一天多少时间?
-
任务你是怎么管理
-
你的方法论挺好的,你提到的日程管理软件是哪个?
-
旁边人用哪几个词语评价你
-
你的优点缺点分别是什么?
-
有遇到压力特别大的时候吗?
-
你在学校成绩怎样
-
你对自己的未来的规划
-
什么时候能来?能来多久
-
学校课程怎样
-
反问
面试的一些注意事项
面了几场,也总结出来一些人生经验
1、简历首选内推方式,速度快,效率高啊!然后可以在拉钩,boss,脉脉,大街上看看。
2、简历上写道熟悉什么技术就一定要去熟悉它,不然被问到不会很尴尬!
3、**做过什么项目,即使项目体量不大,但也一定要熟悉实现原理!**不是你负责的部分,也可以看看同事是怎么实现的,换你来做你会怎么做?做过什么,会什么是广度问题,取决于项目内容。但做过什么,达到怎样一个境界,这是深度问题,和个人学习能力和解决问题的态度有关了。
大公司看深度,小公司看广度。大公司面试你会的,小公司面试他们用到的你会不会,也就是岗位匹配度。
4、选定你想去的几家公司后,先去一些小的公司练练,学习下面试技巧,总结下,也算是熟悉下面试氛围,平时和同事或者产品PK时可以讲得头头是道,思路清晰至极,到了现场真的不一样,怎么描述你所做的一切,这绝对是个学术性问题!
5、面试过程一定要有礼貌!即使你觉得面试官不尊重你,经常打断你的讲解,或者你觉得他不如你,问的问题缺乏专业水平,你也一定要尊重他,谁叫现在是他选择你,等你拿到offer后就是你选择他了。
6、另外,描述问题一定要慢!不要一下子讲一大堆,慢显得你沉稳、自信,而且你还有时间反应思路接下来怎么讲更好。
现在开发过多依赖ide,所以会有个弊端,当我们在面试讲解很容易不知道某个方法怎么读,这是一个硬伤…
所以一定要对常见的关键性的类名、方法名、关键字读准,有些面试官不耐烦会说“你到底说的是哪个?”这时我们会容易乱了阵脚。正确的发音+沉稳的描述+好听的嗓音绝对是一个加分项!
7、最重要的是**心态!心态!心态!**重要事情说三遍!面试时间很短,在短时间内对方要摸清你的底子还是比较不现实的,所以,有时也是看眼缘,这还是个看脸的时代。
希望大家都能找到合适自己满意的工作!fighting!
怎么进字节跳动?
最近字节开始发起校招活动了,预计接下来会有很多学弟学妹们参加字节的技术面试,我这边以过来人身份分享下字节的技术面试流程和注意事项。
首先, 字节的技术面试一般有三轮,如果通过后会有HR面试。其中前三轮面试中,一面注重考察技术基础,四大组件的原理等等,还会考察操作系统以及网络的基础知识,数据结构算法等等。
二面在一面的基础上进行查漏补缺,如一面没有涉及到地方或者表现不好的地方等等,同时也会注重对技术知识的综合运用,观察软素质,如理解能力,思考能力,沟通能力等等。
三面技术可能更多考察对做过的项目的认识和对未来的规划预期,用来考察候选人的技术发展上限。如果通过了前三轮面试,恭喜你基本Offer就稳了,只要不出现诚信问题和严重的沟通障碍问题,HR面一般不太会卡人。
准备面试的时候注意基本知识的理解和运用,不用花太多时间去研究偏难的钻牛角尖的题,如leetcode上hard难度的题型,手撕红黑树等。
最后,好的简历对于拿到不错的面试机会也至关重要,这边建议简历里边能突出自己的水平的事项需要具体一些,如经历过的项目或者实习做过什么具体的事情达到什么样的成果,最好也能提供一些具体的数据。
如果没有实习经历,可以在简历中写做过的课程设计或者实验,明确自己做过的事情,亮点,成果。此外自己的优势,特长,都可以在简历中注明。但是,如果自己不熟悉的内容,建议不要在简历里面提,其实只是有过相关的经历,并不会有优势,反而会可能在面试的时候给面试官带来不好的印象,挑一两条最擅长,最熟悉的技术点写上并突出即可。
面试前的技能储备
很多人在刚接触这个行业的时候或者是在遇到瓶颈期的时候,总会遇到一些问题,比如学了一段时间感觉没有方向感,不知道该从那里入手去学习,对此我针对Android程序员,我这边给大家整理了一套学习宝典!
- Android学习路线图
首先,对于没有学习方向,知识不体系的人,我把我工作几年整理的学习路线分享给大家,做一个借鉴作用,还不知道怎么学习的人可以直接照着我这个学习路线一个个的去学习,知识不体系的人可以参考下我整理路线的方式,总之希望能够帮到你们!
- 模块化学习资源
接下来是每个模块我整理出来的文档学习资料,帮助大家更细致化的学习。
《Android汇总复习资料—Java》
《Android汇总复习资料—Android》
《Android汇总复习资料—Android扩展》
《Android汇总复习资料—Kotlin》
《Android汇总复习资料—Flutter》
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)
![](https://img-blog.csdnimg.cn/img_convert/d246915446c5fe52202bacf24bea2507.jpeg)
写在最后
最后我想说:对于程序员来说,要学习的知识内容、技术有太多太多,要想不被环境淘汰就只有不断提升自己,从来都是我们去适应环境,而不是环境来适应我们!
这里附上上述的技术体系图相关的几十套腾讯、头条、阿里、美团等公司2021年的面试题,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。
相信它会给大家带来很多收获:
当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。
相信它会给大家带来很多收获:
[外链图片转存中…(img-LpsJbB2Z-1712449721620)]
[外链图片转存中…(img-lq4r1Pc3-1712449721620)]
当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!