Android三年工作面经

工作三年出来看看新的机会,依次面试过如下公司:

  • 小米(北京)
  • iHandy(北京)
  • 涂鸦智能(杭州)
  • 微软(北京)
  • 宜信(北京)
  • 蚂蚁金服(杭州)
  • 瓜子二手车(北京)
  • 高德(北京)

基本上投递的简历都得到了面试的机会,除此之外还有海康威视,有赞,同花顺等公司,由于有的公司问的问题基本上都差不多,所以就省略了一些公司的面经吧。


小米

面试小米的职位是Framework开发,所以面试的时候问的问题偏底层一点:

一面:

  • 双重锁以及可能遇到的问题。
  • 硬件加速。
  • WatchDog机制。
  • AMS的运行流程,从startActivity()说起。
  • Binder机制,包括总的运行流程(深入源码),one way机制以及最大可支持线程数量。
  • Android中Bitmap的使用,Bitmap的Native压缩逻辑,解码模式等等,计算一个Bitmap的大小,针对Bitmap做的优化点。
  • Textview优化。
  • Handler机制,底层epoll实现。
  • 项目优化点提问。

二面:

  • 编舞者,Vsync以及三重缓冲的理解。
  • 硬件加速原理,软件渲染会有什么性能瓶颈。
  • 绘制中的测量模式。
  • 性能优化:内存,UI。

三面:

  • Ashmem匿名共享内存
  • Opengl相关:加载图片,左右手坐标等。
  • Bitmap的内存格式,以及yuv。
  • Binder的优势。
  • 如何排查一个ANR。
  • 优化工具使用。

四面:

  • 原公司项目的介绍以及承担的角色。
  • 未来计划。

HR终面:

  • 离职原因。
  • 职业规划。

总体而言,难度偏中,面试官挺平易近人的,印象不错,对于上面的知识点,差不多回答出来70-80%左右吧,感觉还阔以。由于自己在零零散散的时间内也在结合着源码以及老罗的文章,所以关于源码方面的知识点准备的算是比较充足的。其次是关于项目中的一些技术点,这里建议是要熟练掌握,并且知其然知其所以然,不局限于会使用。

印象比较深刻的是Opengl模块的提问,由于接触的不多,在三面的时候面试官一直在问Opengl,而简历上也写了简单了解,但是没怎么做这方面的归纳和复习,所以基本上没答出来。不过不影响整体的面试,拿到了offer。


iHandy

首先做了一套笔试题,题目比较简单,主要涉及Activity生命周期,线程问题,IPC介绍,以及一个算法题。然后就进入一面了:

一面:

  • sharepreference的注意点以及进程间的使用。
  • 项目优化。
  • 两道算法题。
  • volatile和同步的区别。
  • android中的进程通信机制。

二面:

  • 进程保活。
  • 代码情景分析。
  • apk体积缩减。
  • 如果快速定位代码崩溃。
  • 项目问题。
  • 职业规划。

HR终面:

  • 原公司项目的介绍以及承担的角色。
  • 离职原因。
  • 未来规划。

iHandy的面试流程下来,前前后后也就3个小时左右,这家公司面试下来,给我的感觉就是更注重基础知识,可能跟公司内部技术背景有关,大部分是清北的技术,所以对基础更加看重,而且也有很多发散性的问题存在。总的来说,面试过程轻松+愉快,而且办公化境是硅谷风格的,个人感觉不错。

总体来说面试过程相对顺利,不过跟hr谈薪资时候并没有达到我的预期,所以拒了。


涂鸦智能

由于工作地点在杭州,所以先进行了简单的电话面试。

电话面试:

  • 个人开源项目。
  • 项目优化。
  • mvc与mvp的区别和作用。
  • Java中代码执行顺序(静态变量,静态块,实例变量)。
  • 讲一下个人熟悉的设计模式以及用途,是否会画UML图。
  • 组件化的意义。
  • 讲讲印象最深的UI方面的优化。
  • 开发一个sdk如何设计以及注意事项。
  • 开发一个项目需要考虑到的问题。

电话二面:

  • 自我介绍
  • Android插件化原理。
  • Android热修复原理,如何保证Dex包的安全性。
  • Https过程介绍
  • 项目中的优化点。
  • Binder机制通信原理,同步异步的差别。
  • C++智能指针
  • C++浅拷贝与深拷贝。

这里电话面试的时候有个基本问题答错了,即Java的代码执行顺序那块,挂完电话后发现有点不对...。而且面试官在聊的过程中,更加偏重于代码架构能力方面,所以架构方面的问题比较多,像上面描述的设计模式,组件化以及如何设计一个SDK项目,在开发过程中的注意事项等等等等,感觉准备的不是特别充足。不过还是侥幸过了第一面。

二面在一个星期后的进行的,关于Android的内容没什么好说的,不过由于该公司的产品需要使用到C++方面的知识,这块没有做过复习,本来学习的也不是特别好,所以C++模块的相关东西并没有回答出来,所以应该是挂了。


微软

微软这块主要是做桌面的,由于微软面试的情况大家都知道,算法开始....,本人算法并不是特别好,所以面试前特定刷了一下剑指Offer跟编程之美,然后就怀着一颗尝试的心情面试了。

电话面试:

  • 自我介绍。
  • 项目优化。
  • 从第三方库中学习到了什么。
  • 如何进行手机适配。
  • 算法题(3道,就记得2道了):
    1. 求有序数组中重复数字。
    2. 一本书中查找一个单词。
  • 程序设计:针对用户输入的密码,在原密码设计强密码,满足密码长度13<length<18,密码中需要有大小写字母,数字,特殊符号。

一面:

  • 算法题:
    1. 翻转一个有序数组中k索引后的数字到前面,如:[1,2,3,4,5],k=2,那么翻转后的结果为:[4,5,1,2,3]
    2. 在上面翻转结果内寻找数组中的最小数

二面:

  • 算法题:
    1. 判断一个二叉树A是否是B二叉树的子树,考虑特殊情况。

三面:

  • 算法题:
    1. 链表翻转,分别使用递归跟非递归的方式实现,如何解决环形链表翻转的问题。

四面:

  • 算法题
    1. excel中列表示为A,B,C...AA,AB...BA,BB...ZZ,AAA...,设计算法输入一个列数字,输出对应字母。

终面:

  • 项目问题
  • 算法题:将中文数字转换为阿拉伯数字,如三千二百二十六->3226,需要写出测试用例以及各种case。

微软的面试基本上是15min左右的项目介绍跟45min的算法设计流程,总的流程下来并不是特别顺利,尤其四面的时候算法思路对了,但是写的有点晕了,实际上就是一个10进制转26进制的题目,本来以为挂了,结果过了,可能天不亡我吧,哈哈哈哈。磕磕绊绊下来拿到了最终的Offer,不过等待的时候真的是煎熬。整个面试下来到入职1个月的时间...


宜信

宜信主要是做某个贷款App,面试问题如下:

一面

  • glide原理:缓存机制,图片生命周期,内部Bitmap优化,为什么不会有内存泄漏的问题。
  • Binder机制,mmap shm区别。
  • 滑动嵌套实现以及触摸机制。
  • 手写二叉树非递归后序遍历。
  • 多线程知识,Sychronized锁对象和Sychronized锁类的区别。
  • 启动模式,具体实例分析。
  • 插件化实现。
  • 组件化原理。

二面

  • 项目优化。
  • java基础。
  • 多态的理解与使用。
  • hash跟equals的作用 。
  • 实现一个队列 使用双栈 如何保证读多写少的线程安全?读写锁。

面试下来磕磕绊绊,技术面算是过了,跟hr谈的时候拒绝了offer。


蚂蚁金服

面试的的部门是做海外支付宝的国际化部门,面试内容如下:

电话面试:

  • 项目优化点。
  • 硬件加速原理。
  • 插件化原理。
  • 热修复流程,什么项目需要热修复的功能?
  • 快排思路,在数组有序的情况下快排的时间复杂度?
  • tcp 三次握手 四次挥手 两次有什么问题?
  • 如何设计单线程池?BlockingQueue超过队列长度会有什么问题?
  • 多线程设计 如何实现CountdownLatch的功能?
  • 单例模式下为什么两次判判空?懒汉 饱汉 为什么DCL使用Volatile?
  • 策略模式的使用。
  • 桌面启动Acticity流程。

Android相关的知识点个人觉得回答的还阔以,但是到了多线程这块的话就磕磕绊绊了,由于面试官问的问题比较开放,所以感觉有一些并没有答出来面试官想要的答案,然后就挂了....。通过蚂蚁的面试,发现自己的基础知识模块仍然不够扎实,没什么好说的,回炉继续深造。


瓜子二手车

面试部门是做瓜子二手车App的,当时面试的时候很多的候选人,应该是在扩招当中吧。面试内容如下:

一面:

  • 算法:使用数组实现栈,如何在O(1)的情况下获取栈内元素最大值。
  • Okhttp的优点。
  • Glide内部缓存的淘汰机制(LRU)。
  • LRU实现原理,HashMap跟LinkedHashMap底层实现区别。
  • Tinker热修复原理。
  • 具体触摸事件分析。
  • 项目相关。

二面:

  • 项目优化。
  • 算法:长度为m的数组中寻找n个相对有序的数字组成最大数字。

三面:

  • 项目中遇到的困难的点,如何解决。
  • 插件化实现原理。
  • 算法:实现反转单链表,如何反转环状链表。

hr面:

  • 离职原因。
  • 未来规划。
  • 如何自主学习的。

瓜子二手车面试过程中涉及了比较多基础的一些算法,相对于头条来说,应该是相对简单难度。总体情况面下来的话,个人感觉发挥一般吧,能答得也都答出来了,算法模块确实是自己薄弱的一环,今年的目标也有了,算计导论看起来...。

hr在1周后打的电话给了薪资和offer。


面试总结

面试面了差不多10+家左右吧,有的公司的面试我觉得没啥好写的就不写了。百度跟腾讯没有给机会面试,头条面了一面,主要当时微软过了,所以就随便面了一下...。高德面试到了3面,挂了。

最终下来拿到了小米,瓜子二手车,ihandy,宜信,微软5个Offer,果然不辜负我准备的时间,最终选择去了微软(虽然给的钱少吧,哈哈)。

今年行情确实不如往日了,不过做技术的,我认为只要自己的水平足够,能够静下来学习,还是有立足之地的,所以还是撸起袖子加油干吧,共勉哈哈。

针对面试中的不足这里做个整理吧:

  • 广度:ios,web,后端.etc。
  • 算法基础仍然不扎实。
  • 虚拟机知识。
  • C++得重新捡起来。

今年的目标也就有了,哈哈

转载于:https://my.oschina.net/u/3863980/blog/3051661

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值