46道面试题带你了解高级Android面试,威力加强版

# 阿里 ### 自我介绍 * Android学习方式 * 对源码是否了解(Android Java) ### 源码 * Handler消息机制(具体涉及到的类 & 细节) * HashMap(数据结构 & **put操作**) * **HashMap扩容时间复杂度** * **ArrayMap** ### JVM * Java内存区域 * 堆栈区别 * 哪些区域线程私有,哪些共享 * **栈帧** * 方法调用时的入栈出栈操作 ### Java * 并发访问: 1. **volatile(只保证了可见性和有序性,不能保证原子性)** 2. **synchronized:修饰代码块/方法/对象的区别?** **(单例模式DCL会不会失效?)** 3. **Lock** ### Android * Activity生命周期(具体执行,涉及到哪些类?) * **ANR(什么是ANR?怎么监测,运行前,运行后,线上监测?)** ### 项目 * **项目线程同步的优化(session/cooike/token/上传凭证的区别)** ## 阿里一面 1h (挂) ### 自我介绍 ### 项目 * 使用人数/有无上架商店 * 有无IM通讯模块 * 登录模块是怎么解决的 * **如何优化千万级别用户下让用户实时知道自己状态(APP端 & 服务器端)** ### Java * synchronized修饰方法和类有什么区别 * volatile关键字作用 ### JVM * 内存分配 * 垃圾回收算法 ### Android * **事件分发机制** * 消息机制 * **View绘制流程(具体原理,包括不限于绘制三大流程)** * Handler(怎么实现多线程?为什么Looper死循环没事?怎么实现线程间通讯?) * 操作系统层面死循环是怎么回事? * 死循环一定会导致ANR麽? ### HTTP协议 * **HTTP缓存了解不?** # 腾讯 ## 提前批一面 50min ### Android * 四大组件是什么?轮番介绍之 * Fragment是什么?与Activity区别? * SurfaceView与View区别?SurfaceView原理? * 前台服务与后台服务区别? * AIDL了解么? * IPC方式?谁最快? * Protocol Buffer了解么? * APP中多进程有什么用? * 方法数65536怎么解决? * View显示过程? ### Java * 线程同步方式? * 死锁是什么? ### 虚拟机 * 内存分配方式? * 堆和栈的区别? * GC?垃圾回收? * class文件生成过程? ### 计算机网络 * 什么是HTTP? * HTTP/HTTPS区别? * TCP/IP 三次握手 四次挥手? * TCP/UDP区别? * HTTP是长连接还是短连接? * HTTP状态码? * 抓包工具?怎么抓包HTTPS? ### 设计模式 * 生产者,消费者是什么? * 命令模式是什么? ### 数据结构 * 快排是什么?时间复杂度多少? * 七大排序分别是什么? * 二叉树原理? * 红黑树是什么? ## 提前批二面 30min (挂) ### C++ * class与struct区别(看到我相关课程上写了C++,就开始问我C++,我说C++基本没怎么用过,才开始问我Java) ### 项目 * 介绍项目,有什么难点? * 竞赛用了单片机? 指令级是什么? ### Java * HashMap介绍下? * **ArrayList,LinkedList用法有什么要注意的**? * 注解介绍下? * 泛型中类型擦除? ### 数据结构 * 线段树 B+树? ### Android * OkHttp了解不? * OkHttp使用需要注意什么? * RxJava介绍下? * Activity四种启动模式? * 一个APP 怎么退出所有Activity? * 接上问如果有第三方SDK,怎么退出? ## 正式批一面 40min ### 手写代码 * 字符串出现频率中位数 * 最长公共子串问题LCS ### 项目 * OKHTTP框架 * TCP UDP HTTP区别 * TCP**滑动窗口** * 用UDP实现TCP ### 数据库 * 三大范式 * 索引 * **怎么知道命中索引** ### 操作系统 * 进程间通讯方式 * **共享内存原理** ## 正式批二面 35min (挂) ### 项目 * 内存泄漏? ### Android * **OKHTTP 对HTTP与HTTPs之间的区别** * **HTTPs加密原理** * **BlueboothAdapter** * **Activity在AndroidManifest.xml文件中有哪些标志位?** * **CLEAR_TOP?** * **singleTop和singleTask分别的使用场景** * Android存储(文件,SP,数据库[**具体介绍下SQLite**]) ### JVM * **Android虚拟机与Java虚拟机之间区别** ### Java * 深拷贝 浅拷贝(内存溢出or垃圾回收时有什么区别?) * 多线程模型 ### 数据结构 * 二叉树 * B树(**插入/删除过程**) ![](http://www.icode9.com/i/li/?n=2&i=images/20210706/1625584026949085.jpg) # 字节跳动 ## 字节一面 1h ### 项目 * 介绍项目 * HTTPs加密的解释 * 对称/非对称加密 ### Java * 深拷贝/浅拷贝,怎么实现深-浅拷贝 CopyonWrite * Java内存(分配->回收) ### 网络通信 * TCP挥手 第三次不挥手会怎么样 ### 算法 * 数组A 数组B 计算A-B * 0-n之间所有质数(先求所有合数) ## 字节二面 1.5h ### Java * 线程同步问题(为什么需要同步&怎么实现同步) ### 设计模式 * 单例模式(静态内部类) * 其他设计模式简介 ### 数据结构 * 排序算法 * 归并/快排(实现原理/平均复杂度/能否提前结束/谁性能更优) * 堆排(怎么实现调整堆结构/k个最大的数) ### 算法题 * 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组 ## 字节三面 40min (挂) ### 自我介绍 * 专业课程 * 看过哪些书 ### 操作系统 * 内存分配区域(Java层面回答?对象引用在堆和栈都有么?函数内部new的对象存放在哪?) * **用户态/内核态** * **中断** ### 计算机网络 * 计算机网络有哪几层?分别对应什么协议? * IP TCP传输的都是什么数据? * DNS? ### Java * 泛型上界,下界定义/作用 * Java有哪几种锁 * 临界区概念 * synchronized和可重入锁的区别 # 爱奇艺 ## 爱奇艺一面 50min ### 项目 * 主要介绍了实习项目,分析了内存泄漏,线程同步的问题 ### 计算机网络 * HTTP/HTTPS区别 ### Android * OkHttp框架(里面有那些设计模式) * 如何终止一个线程 ## 爱奇艺二面 50min ### 介绍项目 * 内存泄漏的来源 * 有没有做过优化 ### Android * Service的两种启动方式?区别在哪? * 性能优化有没有做过? ### Java * 手写单例模式 ### 算法 * 删除链表中一个节点 ## 爱奇艺三面 40min ### 自我介绍 * 项目 * 有没有特别擅长的 ### Java * public作用? * .java文件名怎么确定? * 外部类最多有几个? * 内部类最多有几个? * 内部类支持嵌套么? * 线程池怎么给新建的线程设置名字? * 线程池种类? * 注解的使用? ### Android * Activity的启动模式下生命周期 * Activity A->B的生命周期 * Handler中怎么实现Looper和线程绑定? * 一个线程最多有几个Looper? * 多个Looper报的异常? * 消息阻塞再次唤醒是什么机制? * ThreadLocal是什么? # 网易 ## 网易一面 15min ### Android * OkHttp * Retrofit * RxJava ## 网易二面 15min ### Android * OkHttp * Retrofit * RxJava ### 算法 * 斐波那契数列 ## 网易HR面 15min ### 聊天 * 怎么学习Android * 专业 * 为什么不进医疗仪器行业 ### 个人 * 城市选择 * 家庭情况 ### 业务 * CC直播部门 * 先做培训和功能迭代 * 网易游戏的生态链一环 & 技术实力尚可 ![](http://www.icode9.com/i/li/?n=2&i=images/20210706/1625584026180670.jpg) # 华为 ## 华为一面 ### 项目 * 实习项目 * 可优化的地方 * 专业 ### 算法 * 复盘笔试题 ## 华为二面 * 聊人生 * 对华为文化看法 * 家庭情况 * 专业情况 ### 最后 我这里整理了一份完整的学习思维以及Android开发知识大全PDF,有需要的同学可以自行领取。 ![](http://www.icode9.com/i/li/?n=2&i=images/20210706/1625584026731215.jpg) **[资料获取方式:Android完整知识学习体系路线](https://docs.qq.com/doc/DSkNLaERkbnFoS0ZF)** 当然实践出真知,即使有了学习线路也要注重实践,学习过的内容只有结合实操才算是真正的掌握。
上一篇:Spark3.1.2单机安装部署


下一篇:美国确诊超46万!美国州长竟然抢起高龄程序员了,什么情况?