Android面试总结

以前都是看别人写面试经验,这次我也想写一次面试总结。说起这个很是惭愧,开发android有两年多的经验了,但是总感觉后知后觉,市场不断在变化。给我的感觉就是,15-16的时候出来只要你懂activity生命周期,会绑定数据,懂listview的复用机制,handler消息机制,事件分发机制,那么基本就能找到一份不错的工作,明显有变化的是17年,开始要懂得会用一些第三方的库,懂得基本的原理,然后会学着去造轮子,机型适配,android新特性,看看项目上面用了哪些技术,简历上写了哪些技术,感觉也就差不多了,等到现在18年的时候,我觉得侧重点变了,会碰到一些面试官不看你的简历,不看你的项目,就问你一些原理,一些源码的分析,这,虽然是我早就预料到的,但是感觉自己准备的还是特别不充分,尤其是冷不丁问到自己真的没看到的。但是总结下来,还是自己欠下的债(手动尴尬)

一、自身情况

本身从sz那边过来hz,我讲下我觉得两个城市的第一个感觉就是交通了,真的无力吐槽这边的交通了。可能跟我住的地方有点偏僻也是有点原因,但是确实交通不好,公交为主,基本是人手一辆电动车,天气方面的话,更热了,总之,我的室友一直在安慰我,要克服,会习惯的。

二、初面(坐了一天的公交)

  1. 番外

出门在外,第一天早早就查好了公交,然后要在杭州汽车北站转一趟148…地图显示是未发车,15分钟后,我相信地图是对的。。。车的影子都没看到,所以后面我做了比较明智的选择,打了一个摩的,回来后我的小伙伴问我多少钱,说我被杀了。。。没有生活常识啊,以为8公里就已经挺远的了。气的他第二天就把电动车塞给我了。。。(意外之喜)

2.正题
这个面试官主要是根据简历情况、app里面比较炫酷的功能进行提问的,问完以后再根据你的回答抽查几个知识点。我大概回忆下

  • 首页这个控件挺炫酷,用了自定义ViewGroup吧,能详细讲讲如何实现的吗
  • 这个小说阅读器是如何实现存储的,然后如何确定分页的
  • 这个定时器用了什么方式实现的
  • 手写板功能如何实现
  • 音乐播放器是如何实现的
  • 项目中哪一块是你负责的
  • 聊天功能是如何实现的
  • 自定义view的绘制流程
  • 什么是内存泄露,如何解决
  • ArrayList和LinkedList的区别优缺点,为什么
  • apk瘦身你是怎么做的
  • 能说说Android 5.0 6.0 7.0 8.0的兼容性适配吗
  • 大概核心部分是这么多了

3.总结
一味的去了解了下框架技术之类的,导致项目可能有些点没有覆盖到,知道了要回去稍微熟悉下项目,我觉得面试官说的对,大家都不认识,最直观的就是看你这个项目,从项目中入手。ps:该公司是做商场移动智能设备的,挺有前景的

4.综合考虑了下自身情况和自身的优缺点以及通勤情况,推掉了下午的一个比较大的公司的面试,也开启了与sz完全不同的策略了,不是所有的面试都去了,通勤状况将是很大的考虑点。

二、面了一些要求比较高的公司(不同的套路)

1.番外

如果说昨天是做公交车坐到吐,然后找不到路以后,我开启了我的小电驴之旅,一开始我还很害怕,但是室友跟我说了,可以插耳机导航,我顿时觉得这是一个最优解,虽然偶尔会导航错。

2.正题(上午)

  • activity生命周期
  • handler的优缺点
  • handler和thread的区别
  • 看你项目,问你能不能独立开发
  • 拿出手机,点开公总号,问你能不能做这个app,一个商城类app

总结:整体感觉面试官不太专业,后面问了,说自己是产品经理。。。我。。。然后整体感觉对开发团队不太重视,所以后面也没有去,做的是一个简单的商城系统,要求两个月内上线。

3.正题(下午)

  • 一套笔试题
  • 面试官开始对着笔试题一道道讲解下来
  • 子类和父类初始化问题(子类必须无条件继承父类的无参构造方法)
  • java异常的分类
  • EventBus的源码的理解
  • 简单介绍下mvc,mvp,mvvm
  • 三次握手、四次挥手
  • GreenDao如何设置表关联
  • sqlite数据库升级
  • 内存泄露和内存溢出的区别?如何优化
  • AnsyncTask的使用场景?它的缺陷是什么?如何优化?
  • 单线程下对Handlder下的Message,Messagequeqe,Looper之前的关系
  • 实现下图弹窗,考虑弹窗切换,back响应
  • RxJava中的操作符,对RxJava的理解
  • Builder设计模式
  • 多线程的优缺点
  • 线程实现的两种方式,优缺点(thread,runnable),为什么

总结:面试官很专业,也很耐心给我讲解了一些遗忘的基础知识,我觉得很有帮助,面试不仅仅是一次双向选择的机会,也是互相学习的过程,很感谢面试官。

4.正题(下午/隔壁的公司)

  • 你最擅长Android中哪一个方面
  • 你最熟悉的第三方框架库是什么
  • Retrofit中create到底做了什么
  • Kotlin中的新特性
  • 谈谈你对Lambda表达式的理解
  • ButterKnife的工作原理,它与其他注解框架有什么不同
  • 注解的一些关键字
  • apk瘦身你做了哪些
  • 提高Android Studio的编译速度做了哪些操作
  • Java中的四大引用
  • volatile的工作原理,与syncronized的区别
  • view的绘制流程
  • onlayout是如何确定位置的呢
  • 对线程安全性的理解
  • 为什么要使用线程池
  • 内存泄露内存溢出
  • 使用了哪些性能调优的工具
  • Android 6.0 7.0 8.0的新特性

总结:这个面试官也很厉害,不聊项目,也不看我的简历,直接开门见山,问我最熟悉Android开发中的哪一块,然后展开来问到我不会为止,后面又问了熟悉哪一个库的源代码,想直接讨论这个,后面问了一些性能方便的问题以及兼容性适配,感觉自己又被查漏补缺了一遍,被虐后更加强大了。wtf

三、休整了一天,对自己的java基础知识以及android基础知识进行了一遍巩固

四、自己最想去的一家公司的面试

1、正题(bs)

  • 数据库如何设计
  • 数据库主键唯一性如何保证
  • 数据库去重以及缓存消息的拉取
  • 抛开现有问题的缺陷,如何设计主键唯一性,因为回答了时间戳的形式,有可能重复
  • 内存泄露以及解决方式
  • java中的四种引用
  • 子线程为什么能通过handler发送消息给ui主线程(ThreadLocal)
  • LocalBrocast为什么效率更高,为什么只能在本应用中进行通信
  • StringBuilder和StringBuffer的区别
  • 如何理解线程的安全
  • Android应用的启动流程
  • 三次握手/四次挥手
  • Activity的启动流程
    。。。

总结:最终结果是好的,3轮技术面下来,面试官认可了我的工作经验,但是觉得还能更系统的学习。最终决定去bs

五、大结局
感觉面试的话需要准备的有

  1. 清晰地认识自己简历上写的知识点
  2. 熟练掌握自己演示项目的实现方式
  3. 扎实的基础知识

感谢这次的hz之旅,虽然有各方面因素的推波助澜,但是我会更加努力,因为离家的距离更近了。下周去新公司报道,希望自己珍惜接下来的时间,努力弥补差距,争取有新的突破,时刻不忘学习充电。ending

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值