终于等到周末有点时间坐下来做个总结了,本总结是根据本人近段时间面试过程中遇到的经历写的,或许对近期想跳槽的朋友们有些许帮助,或是对于大牛来说这些东西so easy,完全不需要这玩意,所以,看你个人喜欢咯。但是对于我来讲,还是有必要总结一下,毕竟自己太菜了!而且大部分面试时间都是超过1个半小时以上的!最高纪录是有两三家全程达到3个小时的面试时间!这offer来得真的是不容易啊!大概分为笔试题和技术面试、人事经理或是财务面试、以及个人心得体会和总结三部分做个简单总结,具体如下:
目录
笔试和技术面试部分
这部分笔试题的话我这里推荐一个网站给大家去刷刷上面的题目,上面的题目都是很经典的https://leetcode-cn.com/explore/(力扣网),很多公司喜欢拿这个网站上面的题目作为技术面试题和笔试题,另外面试题除了Android的问题之外,更多的还有数据结构和Java这两个方向的,基本每家必问的这两个模块的问题,所以请不要单纯的只复习Android的面试题,不然你会吃亏的!
- 如何确保Android客户端数据与服务器数据同步问题?例如:提交数据到后台中间突然没网,这种情况该如何处理数据同步问题?
- View的绘制原理及源码实现过程
- 事件分发机制和过程,传递过程,都用到哪些方法?具体举个实例说明
- Glide加载图片框架的原理和底层源码实现流程
- MVP、MVC和MVVM模式分别是什么?有什么优缺点?最大的区别是什么?使用场景在哪里?
- 内存泄露主要是由哪些方面造成的?如何避免?
- 加载图片出现OOM如何处理?(不使用第三方加载框架的情况下)
- 性能优化主要有哪些方面?如何优化?一般都用哪些工具检测?
- 谈谈对Handler机制的理解,内部如何实现循环取消息的?源码具体实现流程具体是这样?方法执行顺序是怎样?
- Android四大组件是什么?他们底层是如何进行通信的?他们的生命周期是怎样的?每个生命周期处理的操作是什么?如为何要在activity中的oncreate方法里面加载视图?
- 比较Android各个api的特点和差异
- Activity和fragment之间是怎样互相通信的?谈谈你对FragmentManager的理解
- Service的启动方式有几种?他们的区别是什么?使用场景在哪里?
- 广播有几种?说说他们的优缺点?针对8.0广播收不到你是怎样处理的?
- 说说你对Android里面常用的几种设计模式的理解,并举例说明使用场景?
- 常用的数据存储方式有几种?说说他们的用处和使用场景
- 进程间通信有哪些方式?他们的原理是怎样的?
- 线程之间通信方式有哪些?线程开启的方式有几种?说说他们的优缺点?
- ListView和RecycleView比较,以及adapter的具体实现和优缺点。
- 比较常用的网络框架OkHttp、RxJava、RxAndroid、Retrofit以及其他的网络框架实现流程和底部实现原理、源码
- gc回收机制谈谈你对他的了解
- 数据结构中,List和数组的区别和使用的优缺点、使用场景
- 1.0f-0.9f与0.8f-0.7f是否相等?或是说他们的结果用 == 表示,结果是true还是false?为什么?说说原因
- Java的思想和特性以及具体使用场景
- 如何做适配问题?
- Activity的启动过程?源码里主要调用哪些方法?
- Activity的启动方式有几种?具体说说每种启动方式是怎样的和使用场景
- String、StringBuilder和StringBuffer之间的比较
- Java中堆和栈的理解
- Socket通信原理和过程? 网络七层协议是哪些?他们各自的定义是什么以及他们各自的作用是什么?
- HashCode值冲突如何处理?
- SQLite数据库操作中,有几种创建方式?谈谈你对commit和replace的区别和优缺点
- 第三方推送都用过哪些?对接收不到推送问题你是怎么处理的?具体举例说明一下
- 比较一下java语言和kotlin语言的优缺点
- 第三方地图你都使用哪些?使用过程中会存在什么问题?如偏差问题你如何处理?
- 有没有了解插件化?说说你的了解
- Lru算法原理是怎样的?
- 谈谈你是如何做缓存方面的操作的?
- 对嵌套出现滑动冲突问题你是怎么处理的?
- 横竖屏切换执行的生命周期器是什么?
- 应用保活问题你是怎样处理?
- 谈谈你对线程池策略的了解和使用场景
- 常用的异步操作你使用的是哪些?
- RxJava 常用的操作符有哪些?分别是干什么的?
- 列表加载出现卡顿,这种现象是什么原因造成的?该怎么处理这种问题?
- 谈谈你对注解框架ButterKnife的底层实现原理的理解
- 谈谈你对长连接的了解
- Android与js的交互具体过程是怎样的?
- LinkedList和ArrayList实现原理是什么?优缺点有哪些?适用场景在哪里
- 对dagger2的使用和了解
- 谈谈你对Gradle的理解
- 说说常用的5大布局?约束布局的特点和优缺点?
- 手写程序题:这里有n个航班,它们分别从 1 到 n 进行编号。我们这儿有一份航班预订表,表中第i条预订记录bookings[i =[i,j,k]意味着我们在从i到j的每个航班上预订了k个座位。请你返回一个长度为 n 的数组 answer,按航班编号顺序返回每个航班上预订的座位数。
- 手写程序题:写一个10秒倒计时的程序,从20秒开始到10的时候停止,注意不能造成内存泄露,xml文件可以忽略。
人事经理或财务经理面试问题
一般到这一步就已经说明你离offer已经不远了,但往往又容易出差错而导致前功尽弃,所以不要高兴太早,这一个环节还是比较重要的。我遇到的常问问题大概有:
- 说说你在每家公司的离职原因?(必问的)
- 你的人生规划和职业规划是怎样的?(必问)
- 你的优缺点有哪些?你自己与别人比较有什么最大的不同点?
- 如果上级领导或是老板提出的方案有问题,你反复劝说无果不采纳你的建议时候,你该怎么做?
- 你对加班的看法是怎样的?
- 如果绩效考核不合格的话扣你工资你怎么做?
- 在工作中如果团队协作出现问题你该怎么处理?如何和团队沟通?具体举例说明(必问)
- 你每日上班的安排都是怎样的?或是你的工作习惯是怎样的?(必问)
- 你觉得对你来说技术重要还是沟通交流重要?为什么?
- 你怎么看待公司大小周问题?
- 前同事或是公司领导都是怎么评价你的?他们的评价标准或是考核标准都是什么样的?
- 你的择业标准是什么?为什么选择我们公司这个行业?说说你对这个行业的一些认知和看法
- 在技术方面,你觉得你最厉害的地方在哪里?
- 你觉得你的社交能力和表达能力怎样?具体概括一下
个人心得体会和建议
以上就是面试问题的汇总了,可能还有很多没想起来,所以暂时就把想起的啥就写啥出来先,如后面有想起的其他问题的话再后补吧 。总的来讲我个人对自己的这次跳槽面试过程还是挺满意的,我从上家公司离职后我躺了四天,休息够后我又花了四天时间去招聘网站上面看了其他公司的一些招聘信息中的一些技能要求,然后根据技能要求有针对性的去复习,扬长补短,主要学习自己弱势方面的知识点,这个过程中我是边复习边写简历的,中间过程也看了两份别的技术大咖总结的2019年面试题。
简历完成后,我前两天是在前程无忧和智联上投的简历,但是很多HR基本都是查看完简历、对你感兴趣、获取你的联系方式然后就没下文了,不过我还是获得了三家的面试邀请,第一家面试完出来回到半路就给offer通知了,首战告捷我还是挺开心的,对后面的面试充满了信心。然后我转战Boss直聘上,更新完简历立马就有很多HR找上门,然后各种面试邀请就来了。有些小的创业公司我直接是拒绝的,因为真的是怕待小企业的创业公司了(此处省略笑哭和痛苦的表情)。几天的面试,收到offer的概率好像有一半吧,其中有一家上市公司,因为面试走三步流程,时间太长,前两轮笔试和技术面试后面通知我都过了,最后一轮通知我去和他们经理谈谈,但是因为我已入职另一家公司加上其他个人原因吧,我直接选择放弃了最后一轮的面谈。
所以,我个人建议,在写简历之前或是面试之前,很有必要先去看看目前招聘公司注重哪一方面的技能要求,这样你自己可以给自己摸个底,然后根据自己的情况去有针对性的做个系统复习,因为个人觉得公司招聘岗位技能要求应该都是当前互联网形势下比较注重的一些技能和方向趋势;其次是网上找找最近一年或是两年其他大咖总结的一些面试题,因为这样可以站在巨人的肩膀上使自己成长更快、学到更多东西;另外,个人的沟通和表达能力也是非常重要的,因为我面试过程中就遇到公司对这方面有很高的要求,所以可以对自己做个查漏补缺,提升一下自己。至于其他技能的话,Kotlin语言和Flutter语言有时间可以去了解学习一下,还有需要掌握一些基本的HTML、JavaScript等一些基本的Web技术。总的来讲,还是要多学习一些东西,我过去一年多感觉自己真的有点颓废,静不下心学习东西,所以没取得什么明显的进步成果,所以还是好好学习吧!最后预祝大家面试成功!工作顺利!一起加油哦!