共计 3250 个字符,预计需要花费 9 分钟才能阅读完成。
题图和下面的插图都是我根据各网站整理出来的内容,需要的直接联系就好了
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 的区别是什么
- Java Memory Model 的内存模型
- 如果让你设计一个 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