当前位置:   article > 正文

【Android面经】泡池子半年,我终于拿到了腾讯的offer!_面试泡池

面试泡池

前言

先讲述一下本人的BG

湖南人,普通二本毕业,软件技术专业主要学的是Android开发专业,从毕业到现在,从事Android开发工作也有三年了,就在去年八月提出了离职,趁着九月份时间好开始投简历。

多多少少也发出去几十上百份简历,收到的面试邀约寥寥无几,我甚至一度颓废,觉得我真的失业了,市场容不下我。
在这里插入图片描述

经历了一段时间的面试失败之后,我总结了一下原因,时代的变迁和移动端的飞速发展,如今Android开发岗位的要求越来越高,想要成为一名合格的Android开发人员,性能优化和framework是必须要掌握的。
在这里插入图片描述

于是我过年期间怒学两个月的性能优化和framework,年后继续投简历,三月份陆陆续续面试了好几家大厂。现在已经拿到了腾讯的offer。下面就给大家分享一下我的面试心得。

一、蔚来

  • 自我介绍
  • 聊我的本专业
  • framework
  • 性能优化
  • 说一说MVP架构,MVVM架构
  • MVVM架构中ViewModel为什么在翻转屏幕之后还能保持原来的界面
  • 说一说Handler机制,Handler机制的使用场景,Handler机制的标志位
  • Looper与线程是如何保证一对一的?ThreadLocalMap
  • Glide的三级缓存?三级缓存分别是什么?
  • OkHttp的拦截器?
  • 算法题,两数之和,acm模式

二、百度

  • 自我介绍
  • 项目拷打
  • MVVM+DataBinding+Lifecycle+LiveData
  • Glide
  • OkHttp
  • 线程池原理,参数意义
  • 广播(全局广播,本地广播)
  • UI绘制
  • 事件分发机制,长按如何实现
  • ANR
  • 排序算法
  • framework
  • 笔试题(两数之和)

三、CVTE

  • Activity的生命周期

  • ActivityA打开ActivityB的生命周期

  • Service的生命周期

  • 如果调用startService再调bindService,随后再调unBindService能否成功关闭服务

  • 你做过的App性能优化主要是哪些方面呢?

  • 可以讲讲你是怎么处理内存泄露的吗?强引用、弱引用、软引用、虚引用区别和内存回收的优先级?

  • 可以讲讲你是怎么处理ANR的吗?

  • 怎么进行布局优化?

  • 自定义View的流程?

  • 如果要你设计一个写死宽高的ImageView,你怎么做?

  • onMeasure中的MeasureSpec有什么作用?

  • 你们App是什么架构?对各种架构的区别和优点有什么见解?

  • Eventbus的源码有看过吗?是怎么感知哪个类进行了注册事件的呢?

  • 有哪些常见的屏幕适配方法?

四、小天才

  • ARouter的原理?
  • MVP,MVVM模式相对于MVC模式的优势?
  • 知道六大设计原则吗?不太清楚具体都有什么。说一下除了单例模式之外的两个设计模式
  • 事件分发的过程?onClick和onTouchEvent,onTouch哪个先执行?(onTouch>onTouchEvent>onClick)
  • 如果现在出现了横向滑动和竖向滑动的冲突,你会如何解决?如果获取到的x移动距离和y移动距离一样大如何定义逻辑?
  • 使用Glide有做一个封装吗?应该封装到一个工具类里面来做复用
  • 讲一讲内存泄漏和内存溢出?为什么会内存泄漏?列举三种内存泄漏的情况
  • 有做过性能优化吗?说了包体积优化,布局优化。内存泄漏优化其实也是
  • 说一下具体写过的自定义View?
  • Activity A跳转到Activity B再按下back键回到Activity A各自的生命周期变化?如果按下back键回到Activity A之后发现Activity B没有调用onDestory()方法你会如何去调试找bug?
  • 100个任务放入到线程池,如何设计最快的完成任务。如何要在前面99个任务执行完成之后再执行第100个任务呢,如何设计?
  • 项目中遇到的难点?异步场景下的数据同步。如何解决?接口回调的场景下,如果数据还没有返回,但是用户终止了应用程序,- 你觉得你的设计有什么问题和解决方法?内存泄漏如何解决?弱引用

五、腾讯

一面

  • View过度绘制有什么工具进行查看
  • SharedPreference两个进程同时进行读写会有什么问题
  • Android进程间通信方式
  • 热修复原理,讲的Tinker
  • DNS协议,CDN
  • 算法题,一个数组有两个数字不同,其他都成对出现,怎么找出来
  • 智力题,一块钱买一瓶水,两个空瓶换一瓶水,n元能喝几瓶水。

二面

  • struct和class有什么区别?
  • 说一下单例模式?
  • 懒汉式的单例模式存在什么问题?
  • 说一下.cpp和.h文件的区别?
  • 如果直接在.h文件实现函数会有什么影响?
  • 单继承和多继承的差异?
  • 字节溢出有了解过吗?
  • 两个int相乘数值溢出的原因?
  • 可以在一个头文件里面定义多个类?
  • define的作用?
  • ifdefine endif在编译的时候作用?
  • c++的编译过程?
  • vector底层实现?
  • lambda表达式的参数是如何捕获的?
  • malloc、free 和new、 delete 的关系?
  • new、 delete 什么时候调用构造函数,什么时候调用析构函数?
  • 有接触过字节对齐吗?bool+int的字节大小是多少? 一个结构体是bool+int的大小是多少?
  • java中concurrenthash_map底层是如何实现线程安全的?
  • 讲一下hash冲突?解决hash冲突的方法有哪些?
  • 讲一下一致性hash?
  • 链表的查找时间复杂度,最差,最优,平均?
  • 红黑树的查找时间复杂度,最差,最优,平均?
  • 红黑树在最差的场景下会退化成什么?
  • avl树、b+树有了解过吗?
  • 如果读数据比较多用什么树比较好,如果写数据比较多用什么树比较好?
  • 讲讲c++中的友元?
  • c++ sort中排序时指定排序方法时,返回的类型有哪些,分别有什么用?
  • 在形参中使用const有什么好处?
  • 讲讲const指针?

三面

  • RePlugin原理深挖,其他插件化框架对比
  • 为什么要选择RePlugin框架
  • 你觉得自己对于Android掌握到了什么地步
  • 看过什么源码
  • 你为什么要看源码
  • 你为什么要写博客
  • 知道哪些著名开源框架
  • 什么是进程,进程调度算法
  • 什么是线程
  • 你觉得什么是JVM
  • 有哪些线程同步算法
  • 死锁是什么,举个例子
  • Object有哪些方法
  • Java异常有哪些,Error和Exception区别
  • OSI七层模型,TCP、UDP是哪一层,应用层有哪些协议
  • 如果要设计一个大量图片下载的方法,如何确定并发量,有哪些指标。
  • APP间传递消息安全吗?要怎么做才能安全呢?
  • 广播怎么分类
  • 自定义View重写的关键有哪些,onLayout和onMeasure区别
  • Android有哪些动画,MotionLayout讲一下。MotionLayout使用场景。
  • Activity四种启动模式,SingleTask和SingleTop的使用场景
  • 一些Framework层的问题,不太会所以记不得了。但是告诉面试官我已经下了Framework层相关电子书,是下一步需要看的。
  • 你为什么想了解Framework层知识。
  • 算法题

面试总结

1、跳槽之后先选择中小厂进行面试,毕竟大厂的面试官不是几年没参加过面试的你就能搞定的。
2、自身一定要有过硬的基础知识,在面试的过程中不断的查漏补缺,
3、面试的时候把握好心态,不要自己心态崩了还持续性的面试。
4、在面试一家公司之前,一定要在网络上先找一下这家公司近几年的面试题,了解面试官比较喜欢问什么。

写在最后

面试前需要大量的去刷面试经验和面试题,作为Android程序员,性能优化和framework这两个板块尤为重要。在这里我给大家分享一下我背的面试题资料,有需要的朋友可以下方自取。

Framework资料分享

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

性能优化资料分享

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

更多相关面试资料

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/694167
推荐阅读
相关标签
  

闽ICP备14008679号