前言
作为一个程序员,性能优化是无法避开的事情,并且性能优化也是软件系统中最有挑战的工作之一,更是每个工程师都需要掌握的核心技能。
性能问题和Bug不同,后者的分析和解决思路更清晰,很多时候从应用日志即可直接找到问题根源,而性能问题,其排查思路更为复杂一些。
对App进行性能优化,是一个系统性的工程,对工程师的技术广度和技术深度都有所要求。 一个简单的应用,它不仅包含了应用代码本身,还和虚拟机、存储、网络等紧密相关,线上应用一旦出现了性能问题,需要我们从多方面去考虑。
但在实际的工作中,很多情况下只能看到症状,却完全不知道该从哪下手去排查和解决它。
与此同时,除了一些低级的代码逻辑引发的性能问题外,很多性能问题隐藏的较深,即便能够排查,排查起来也会比较困难,需要我们对应用的各个子模块、应用所使用的框架和组件的原理有所了解,同时掌握一定的性能优化工具和经验。
下面分享一下我在爱奇艺的面经
面试前的话:在面试时一定不要受前面没有过的面试的影响,一定要有一个好的心态,不要面试还没开始就自己把自己思绪搞乱了
一共进行了4轮面试
爱奇艺一面 50min
项目
- 主要介绍了以前做过的项目,分析了内存泄漏,线程同步的问题
计算机网络
- HTTP/HTTPS区别
Android
- OkHttp框架(里面有那些设计模式)
- 如何终止一个线程
爱奇艺二面 50min
介绍项目
- 内存泄漏的来源
- 有没有做过优化
Android
- Service的两种启动方式?区别在哪?
- 性能优化有没有做过?
Java
- 手写单例模式
算法
- 删除链表中一个节点
爱奇艺三面 40min
自我介绍
- 项目
- 有没有特别擅长的
Java
- public作用?
- .java文件名怎么确定?
- 外部类最多有几个?
- 内部类最多有几个?
- 内部类支持嵌套么?
- 线程池怎么给新建的线程设置名字?
- 线程池种类?
- 注解的使用?
Android
- Activity的启动模式下生命周期
- Activity A->B的生命周期
- Handler中怎么实现Looper和线程绑定?
- 一个线程最多有几个Looper?
- 多个Looper报的异常?
- 消息阻塞再次唤醒是什么机制?
- ThreadLocal是什么?
爱奇艺四面(HR面)
- 自我介绍下吧
- 你对公司有什么评价
- 做了哪些项目
- 你身边同事和朋友如何评价你呢
- 如果与同事发生了意见的不一致,你会如何解决呢
关于HR面试
其实早就听说HR面试的最终的录取结果具有一票否决权,在面完前面的技术面试之后,还是很担心的。大概得到以下结论:
- 诚信至上,所以在简历中不要存在任何虚假信息,企图通过虚假信息得到面试机会的后果得不偿失
- HR更关注你的表达能力、与同事相处的能力以及对工作的态度
- 对自己的是否一个明确的职业规划
由于篇幅原因,这份面试宝典已经被整理成了PDF文档,有需要Android面试宝典全套完整文档的麻烦点赞+点击GitHub即可获取资料免费领取方式!
本文在开源项目:GitHub中已收录,里面包含不同方向的自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中…
BD%95%E9%9D%A2%E8%AF%95%E6%8B%BF%E9%AB%98%E8%96%AA%EF%BC%81.md),里面包含不同方向的自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中…