题图和下面的插图都是我根据各网站整理出来的内容,须要的直接联系就行了android
When the snows fall and the white winds blow, the lone wolf dies but
the pack survives ----- Ned
Stark
因为众所周知的缘由,原生android开发现在已经日渐凋敝,做为一个Android程序员,不只要会Java,Kotlin,JavaScript,Css,Html,还要会Flutter,C++,FFmpeg,Linux等相关知识。程序员
笔者从7月份开始面试,到8月中旬截止(由于腾讯已经面试经过,本身面试面的也累了,就决定去腾讯了) 接下来就说说各家的面试题,一共面试了快二十家公司,既有外包,也有中小型企业,也有准备D轮甚至上市的C轮企业,更有BAT等知名企业。接下来就一一说一下各家公司的面试题。 也建议各位面试的时候不要上来就直奔BAT等,大厂面试官的技术广度与深度也不是刚出来面试的你,能搞定的。最好先去一些小公司看看他们问的哪些东西,本身回去在查漏补缺一下,最后去大厂。 最后祝各位能进入本身心仪的公司。面试
按照面试的时间顺序来一一罗列各家公
司的面试题。(记忆可能出现纰漏,哈哈,各位看看就好,有些公司的面试可能比较常规,就没有什么特别的印象)算法
武汉佰钧成(外包OPPO,自家面试官)
由于是周六的专场面试,也不用请假,因此立刻就参加了这家公司的面试。 两轮面试编程
- Activity的启动流程
- Activity的启动模式,应用场景
- 如何减小对第三方框架的耦合
- hashmap的基本原理
博彦科技(外包OPPO,OPPO面试官)
两轮面试设计模式
- Handler机制
- Binder机制
- 写一个单例模式,DCL为何要加V关键字
- 直接在Activity Sleep 5000ms,再post一个runable会不会ANR。
- 如何监听ANR
- View的绘制流程,每一个都是干什么的
- 事件传递机制
Insta360 (C轮公司)
三轮面试安全
- 组件化如何实现组件通讯
- HashMap基本原理 如何减小hash冲突 如何增大hash冲突
- 安装包怎么优化的
- 若是有A,B,C,D,E五个步骤,每一个步骤都须要操做对应请求,用哪一种设计模式。
华为外包
两轮技术面试性能优化
原本一面完了就让我等着二面的,等了十分钟后跟我说二面面试官暂时不在,等下次再约时间,出门等了10分钟的公交,离家还有20分钟的时候,又给我打电话让我回去参加第二面,而后就没去了,太折腾人。服务器
绿网科技
三轮技术面网络
- hashmap原理
- MVP,MVVM,MVC的区别是什么
-
- 若是让你设计一个app,打算怎么设计
- JVM垃圾回收有哪几种算法,有哪几种垃圾回收处理器
- Serial使用的哪种回收算法
- JVM的内存模型
- Android主线程是怎么启动的
- dex是如何转为机器码的
- llvm编译是如何优化代码的
- 说一个你本身的缺点。
最终结果是这样的 哈哈,仍是不能要过高

现组建了一个Android的大圈子共同取暖,内有大神小白起飞,圈内会不定时更新一些Android中高级的进阶资料,欢迎你们带着技术问题来讨论,共同成长进步!(包含资深UI工程师,Android底层开发工程师,Android架构师,原生性能优化及混合优化,flutter专精,大厂面试);
同洲电子
四轮技术面
- Activity的启动流程
- 静态类的静态方法能不能被子类重写(不能,走的invoke-static指令,只有走invoke-virtual指令的才可能实现多态)
- Linux的启动流程
- 对Native层有没有兴趣
- 对作智能家居有没有兴趣
- 招一个应届生进来作app也是作,招你也是作,为何要招你
顺丰科技
一轮技术面 总共三轮面试
- handler机制
- looper的唤醒是在Java仍是Native层,怎么作到的
- HashMap,ConcurrentHashMap,HashTable有什么异同
- Binder通讯机制
- 跨平台开发熟不熟悉
- 如何提升海外用户的访问速度,假设服务器在深圳。
- 如何学习一个新东西,有哪些执行步骤
百度
- 红包随机算法 是怎么作到的
- 写一个二叉树的深度度优先遍历,递归 非递归
- Android中LocalServerSocket是干什么用的
- binder的Native层代码看过吗
- Linux有哪些RPC机制
- 为何android使用了Binder机制没采用共享内存
- 若是让你设计一套进程间通讯的机制,你会怎么设计
- Linux的模块动态加载机制是怎么实现的
- 一个物理屏划分为三个逻辑屏,是靠谁来分发事件的。
- ConcurrentHashMap是否是绝对的线程安全。(final,绝对线程安全,相对线程安全,线程不安全)
- 线程池是如何管理线程状态的
大宇无限(C轮公司 前身是豌豆荚)
是我第二心仪的一家公司,办公环境,氛围,福利都好的一逼,惋惜了 总共七轮面试 五轮技术面
- Kotlin的访问权限
- Koltin为何比Java更安全
- Koltin比Java好在哪
- JVM的内存模型
- JMM的内存模型
- 为何操做数栈是Thread-Private
- 计算二叉树的深度
- ArrayList跟LinkeList区别
- ArrayList如何扩容的,如何提升ArrayList的效率
- 动态代理静态代理区别
- 启动优化怎么作的
- 若是给你个IOS APP,你打算怎么优化。
- http有哪几种版本,版本间有什么区别。https跟http有什么区别。
- apk为何要签名,v1跟v2签名的区别
- apk从编译打包都安装的流程
- dex到odex为何不能在编译期优化
- 热修复原理
- 你的优点是什么
平安
三轮面试
- http2.0 1.1 1.0的区别
- http如何保证安全性
- 安装包优化有哪几种方式
- 启动优化有哪几种方式
- View的绘制流程,每一个方法干什么的,若是要获取View的宽高,在哪一个方法里获取
- 如何应对弱网环境
- android数据存储方式
- 若是一个app没法访问网络,你怎么作数据存储。
- DVM跟JVM的区别
- React Native跟原生开发的优劣
腾讯
三轮面试 一面
- 算法题 通电小球
- Android 沉浸式状态栏 怎么实现的
- 事件处理函数有哪几个,父View 子View 监听同一个事件,重写哪些方法。在哪一个View重写?
- ViewRootImpl接受事件吗?
- apk编译打包流程 V1,V2 签名区别
- 利用logging监听方法耗时,会不会让app增大延迟。
- eventbus为何要用CopyOnWriteList?
- 插件化怎么加载资源的?
- JVM怎么保证gc效率跟线程运行效率的 ?
- 若是android没用对应的view,flutter能运行吗? 手写单例模式,volatile 跟 synchronized区别?
- 接口暴露,可是不让别人调用,有哪些办法?
二面
- 为何采用flatbuffer? 比Json好在哪里?
- 如何处理Crash,NativeCrash呢?Google是怎么作到的?若是上报过程当中再次产生Crash能不能捕捉到?
- uncaughtException是被谁调用的,若是再次崩溃能不能捕获到?
- Linux是怎么知道app崩溃的,若是想要在被kill前 作一些耗时操做,该怎么作?
- 考虑设计一个crash捕捉模块。
- 100万个数字求100个最大值。
- 手写快速排序算法。
三面 (GM面)
- kotlin比Java好在哪里,是函数式编程吗?
- 如何防止DNS劫持?
- 若是让你实现一个调试器,你会怎么设计?静态调试?动态调试呢?
总结:
大厂基本上不太看重具体的技术,不管你是Java仍是C++,比较看重思路与抽象的解决方案
若是看到这里的同窗,想在技术上有精进的话,推荐几本书:《深刻理解JVM(周志明)》《Android开发艺术探索》《Android内核剖析》,给你们准备了一份很全面的Android进阶资料;内容有面试专题讲解丶Android一系列从初级到中级高级的知识的讲解,以及最新最火的互联网技术的讲解,flutter—底层开发-性能优化—移动架构—资深UI工程师 —NDK ;网盘自取连接:https://pan.baidu.com/s/1vqgc...
提取码:r637