字节(3轮技术面):
一面:
1.final 2.类加载 3.双亲委派机制,为什么要使用 4.GC 5.leackcanary 6.hashmap 7.concurrenthashmap 8.事件分发 9.handler 算法: 1.LeetCode 61:旋转链表 2.合并两个有序链表
二面:
1.final修饰int类型的变量能不能改变?怎么改变? 2.反射可以改变这个int值吗?怎么改变?反射的原理? 3.try catch块;try抛出异常,catch中有return语句,finally会执行,finally为什么会执行? 4.接口和抽象类; 5.sleep和wait; 6.操作系统层面wait调用notify之后具体是怎么样的? 7.java有哪些锁? 8.sychronized怎么实现锁; 9.操作系统的进程间通信; 10.安卓进程间通信; 11.binder机制; 12.学习的过程中使用过aidl吗? 13.apk打包过程; 14.如何获取view的宽高; 15.ConstraintLayout; 16.设计一个类似glide的图片缓存框架:面试官进行了引导:设计一个数据结构,缓存策略等; 17.创建了两个ArrayList对象,l1.getclass()==l2.getclass(),判断结果; 18.手写单例模式的饿汉式和懒汉式; 算法:层序遍历
三面:
1.前两个面试官问的问题下去了解了吗 2.代码插桩; 3.leakcanary内存泄漏; 4.ANR的检测; 5.怎么判断是不是内存泄漏:一个程序不是内存泄漏,但是内存占用很大,怎么分析这个问题 6.一个app申请了内存对象,这些内存对象在内存中是什么关系?可以通过内存的引用链来分析吗? 7.有一份内存,通过哪些方法分析哪些类对象占比比较大?(比如有一颗引用树,用什么方法或者工具统计,哪些对象加起来最大?) 8.安卓四大组件; 9.进程间通信; 10.binder机制; 11.双亲委派机制; 12.插件化的方法; 12.热修复:已经发布到线上的类,我们要修改类的方法,可以从双亲委派机制来思考下怎么做?在AMS注册之前怎么加载.dex文件? 13.操作系统原理:有socket阻塞和非阻塞io,为什么有这两种socket io? 14.安卓怎么设计一个网络请求的框架? 15.jvm内存有多大?怎么做调优? 算法: 子数组范围的和; 重排链表;
部分答案解析:
由于文章的篇幅有限,面试题及其答案太多了,没有办法一一展示出来。
详细VX关注公众号:Android老皮
百度(3轮技术面):
1.Java访问修饰符 2.volatile作用(面试官发音也奇怪,我第一遍没听清他说啥,他还给我拼一遍,结果拼写也没拼对,跨服聊天) 3.Java GC机制(知道的都缕了一遍) 4.死锁(说完定义啥的,问了点场景,死锁八股选手表示我不会= =答的拉胯到家) 5.Activity生命周期 6.Activity A到B的生命周期变化,B是透明的呢?(我寻思笔试这东西都占了三十分简答了,面试怎么还问?) 7.ANR(怎么捕获?怎么处理?麻了,问深了不会) 8.手撕:数组最小的K个数 9.手撕:有重复项数组的所有排列(感觉正常就一道算法吧,我好像写的太快了,面试官非常错愕的又给我找了一道,撑到四十分钟呗,结果这道我成功的没写完,讲思路也是暴力思路,醉了,自己给自己挖大坑) 10.Android布局 11.动画 12.网络请求 13.手撕:反转双向链表(面试官:你说下思路,写不写都行。我:那我写。当时心想的就是你这就要挂我?我得再让你看我十分钟)
部分答案解析:
美团(3轮技术面):
1.Android布局(各种Layout,什么FrameLayout的使用场景balabala) 2.说了点布局优化相关 3.进程和线程的区别 4.进程之间的通信方式 5.死锁 概念及发生条件(那时候还没背OS八股,完全按本科那点印象答,拉胯到家) 6.http和https区别 7.https通信的过程 8.tcp三次握手 9.tcp和udp的区别 10.数据库了解么?不了解。 11.数组和链表的区别 12.算法:二叉树的先序遍历 13.设计模式 14.手写个单例 15.Java:equals和hashCode方法 16.接口和抽象类的区别 17.接口中是否可以声明常量 18.对面向对象的理解 19.Android:四大组件及作用 20.Activity的生命周期 21.onNewIntent的调用时机 22.广播的两种启动方式 23.ANR 24.内存泄漏 定义 哪些情况会导致内存泄漏 25.Android屏幕适配做过哪些工作
部分答案解析:
腾讯
1.四大组件 2.activity生命周期 3.activity a跳转到 activity b生命周期变化 4.activity和service有什么区别 5.handler 6.loop死循环为什么不阻塞线程 7.进程间通信方式 8.http get和post区别 9.map 10.hashmap 11.用过那些库 12.glide三重缓存 13.为什么要用三重缓存 14.两张一样图片怎么办 15.MD5 16.LRU 17.还有什么可以实现LRU 18.有看过音视频这方面吗
部分答案解析: