写点什么

2020 互联网寒冬之下, 作为一个 Android 老码农, 是如何进入腾讯的?

用户头像
Android架构
关注
发布于: 刚刚
  • 为什么操作数栈是 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++,比较看重思路与抽象的解决方案。


如果你想去一家不错的公司,但是目前的硬实力又不到,我觉得还是有必要去努力一下的,技术能力的高低能决定你走多远,平台的高低,能决定你的高度。


在面试前我也准备了很久,刷了很多大厂面试题,知识点整理出来分享给大家,算是一个感恩回馈吧:

Java 相关

1.容器(HashMap、HashSet、LinkedList、ArrayList、数组等)


2.内存模型


3.垃圾回收算法(JVM)


4.垃圾回收机制和调用 System.gc()的区别?


5.类加载过程(需要多看看,重在理解,对于热修复和插件化比较重要)


6.反射


7.多线程和线程池


8.设计模式(六大基本原则、项目中常用的设计模式、手写单例等)


9.Java 四大引用


10.Java 的泛型


11.final、finally、finalize 的区别


12.接口、抽象类的区别


如有需要全套面试题+解析,直接划到文末免费领取哦~

Android 相关

1.自定义 View


2.事件拦截分发


3.解决过的一些性能问题,在项目中的实际运用


4.性能优化工具


5.性能优化 (讲讲你自己项目中做过的性能优化)


6.Http[s]请求慢的解决办法(DNS、携带数据、直接访问 IP)


7.缓存自己如何实现(LRUCache 原理)


8.图形图像相关:OpenGL ES 管线流程、EGL 的认识、Shader 相关


9.SurfaceView、TextureView、GLSurfaceView 区别及使用场景


10.动画、差值器、估值器(Android 中的 View 动画和属性动画 - 简书、Android 动画 介绍与使用)


11.MVC、MVP、MVVM


12.Handler、ThreadLocal、AsyncTask、IntentService 原理及应用


13.Gradle(Groovy 语法、Gradle 插件开发基础)


14.热修复、插件化


15.组件化架构思路


16.系统打包流程


17.Android 有哪些存储数据的方式。


18.SharedPrefrence 源码和问题点;


20.sqlite 相关


21.如何判断一个 APP 在前台还是后台?


22.AMS 、PMS


23.Activity 启动流程,App 启动流程


24.Binder 机制(IPC、AIDL 的使用)


25.为什么使用 Parcelable,好处是什么?


26.Android 图像显示相关流程,Vsync 信号等


如有需要全套面试题+解析,直接划到文末免费领取哦~

源码理解

Glide :加载、缓存、LRU 算法 (如何自己设计一个大图加载框架) (LRUCache 原理)


EventBus


LeakCanary


ARouter


插件化(不同插件化机制原理与流派,优缺点。局限性)


热修复


RXJava (RxJava 的线程切换原理)


Retrofit (Retrofit 在 OkHttp 上做了哪些封装?动态代理和静态代理的区别,是怎么实现的)


OkHttp


算法与数据结构

1.时间复杂度 / 空间复杂度


2.常用的排序算法有哪些?


3.字符串反转


4.链表反转(头插法)


5.如何查找第一个只出现一次的字符(Hash 查找)


6.如何查找两个子视图的共同父视图?


7.无序数组中的中位数(快排思想)


8.如何给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。


9.二叉树前序、中序、后序遍历


10.最大 K 问题


11.广度、深度优先搜索算法


12.String 转 int。核心算法就三行代码,不过临界条件很多,除了判空,还需要注意负数、Integer 的最大最小值边界等;


13.如何判断一个单链表有环?


14.100 亿个单词,找出出现频率最高的单词。要求几种方案;


15.链表每 k 位逆序;


16.镜像二叉树;


17.找出一个无序数组中出现超过一半次数的数字;


18.计算二叉树的最大深度,要求非递归算法。


19.String 方式计算加法。

网络

1.网络框架对比和源码分析


2.网络七层协议有哪些?


3.Http 和 Https 的区别?Https 为什么更加安全?


4.HTTPS 的连接建立流程


5.解释一下 三次握手 和 四次挥手


6.TCP 和 UDP 的区别


7.Cookie 和 Session


8.DNS 是什么?


9.DNS 解析过程


10.HTTP 报文结构


11.HTTP 与 HTTPS 的区别以及如何实现安全性


12.如何验证证书的合法性?


13.https 中哪里用了对称加密,哪里用了非对称加密,对加密算法(如 RSA)等是否有了解?


14.client 如何确定自己发送的消息被 server 收到?


15.谈谈你对 WebSocket 的理解


16.WebSocket 与 socket 的区别


17.谈谈你对安卓签名的理解。


18.请解释安卓为啥要加签名机制?


19.视频加密传输


20.App 是如何沙箱化,为什么要这么做?


21.权限管理系统(底层的权限是如何进行 grant 的)?


如有需要全套面试题+解析,直接划到文末免费领取哦~

Kotlin 相关

1.从原理分析 Kotlin 的延迟初始化: lateinit var 和 by lazy


2.使用 Kotlin Reified 让泛型更简单安全


3.Kotlin 里的 Extension Functions 实现原理分析


4.Kotlin 系列之顶层函数和属性

用户头像

Android架构

关注

还未添加个人签名 2021.10.31 加入

还未添加个人简介

评论

发布
暂无评论
2020互联网寒冬之下,作为一个Android老码农,是如何进入腾讯的?