前言
在老东家干了 6 年,发展一般,很想出去,但是一直没有合适的机会,只好一边准备面试一边学习。让我没有想到的是,突然收到了“毕业”通知,当然,不光是我,而是整个团队。
毕业,对于我这样的老员工来说是不错的结果,因为正好我也想出去,而且这次公司还能给不少补贴。
回家住了一段时间后,我开始了疯狂面试,今年的求职环境真的让人头疼,不要说张薪了,平薪都很难。
首先介绍下个人情况,双非本科,写码 8 年,其中 6 年在金融行业,算是有行业积累,但是核心业务并没有接触到。在金融行业工作,技术的提升是比较小的,好多流行的技术栈没有用过。
接下来就来看看我经历过的面试吧,一方面是给自己做一下总结,另一方面就是给大家一点点参考。
腾讯QQ
- 介绍glide的整体运作流程(大概的系统框架)
- 平时写的demo,项目有考虑过屏幕适配吗?
- glide被存放到服务器上,当服务器上的图片发生改变的时候,手机会更新新的图片吗?
- glide去load网络资源的时候发了请求,它是发了什么请求?
- okhttp有使用吗?知道retrofit和okhttp的区别吗?
- okhttp知道实现原理吗?有看过源码吗?
- 有使用过kotlin吧?kotlin从你的角度来说跟java有哪些比较大的区别
- 使用过 .let .also 这些高阶函数吗?简单说一些 .also .apply的区别?
- 说一个kotlin非空的问题,你之前有打包过jar包,如果项目中用的是kotlin写的,对外提供写好的方法接口,你的函数声明里的参数是非空的,这种情况下你觉得是安全的吗?
- 可以大概说一下类加载机制吗?
- 知道双亲委托机制吗?
- 比如在String.kt里加了一个扩展方法,String本身是没有这个方法,那调用的时候是怎么一个流程?
- JAVA的集合都有使用吧?说下ArrayList和数组的区别?操作ArrayList有哪些需要注意的地方?
- 说一下ArrayList线程不安全怎么解决的?
- 说一下HashMap的实现原理for循环和foreach有什么区别?
- 有过大图加载经验吗?Bitmap加载数据很大,比如10mb怎么处理?
- 事件分发机制,有没有在demo或者项目中遇到需要处理Touch事件的情况?
- RecyclerView的缓存机制知道吗?有没有遇到过闪图情况?
- 多线程问题 - 死锁 的必要条件和解除死锁的方法?
- 从浏览器输入一个网址到页面渲染的过程
- 服务端一般用80端口接受请求,如果同时有多个连接,服务端是怎么区分这些不同连接的?
- 三次握手,如果服务端返回的ACK报文丢失了服务端和客户端会发生什么?
- 平常有使用过数据库吗?知道主键是个什么东西吗?有些操作需要更新到数据库,但是中间有很多步骤,怎么保证这些步骤一次性全部生效?
- 你C++怎么样?知道什么是虚函数吗?指针呢?指针的指针呢?智能指针呢?
算法题:
- 删除升序链表中所有重复的元素
- 单例模式
反问
大华
- 自我介绍
- 说到Intent传Bitmap的问题 你用了全局变量 是不是得特别关注销毁和管理 管理周期(?有点怪)
- 假如说要查询数据库某一天的数据 一般我们数据精确到秒/毫秒级别的时间戳 这种时间格式怎么进行筛选 怎么去比较(说了from_unixtime和datetime,答得不是很好)
- Activity和Fragment之间数据通信和感知 Activity到Fragment Fragment到Activity通信,Fragment怎么调用Activity内方法
- 平时开发语言(Java,Kotlin只略懂) 问集合框架 什么情况用什么 互相进行比较
- 多线程异步任务 假设一个线程里有一个任务队列 怎么去保证任务的优先级顺序(说了Handler用延时和sendMessageAtFrontOfQueue)
- Android Studio工具的掌握情况 除了基本的编译之外的功能的了解
- 没有反问环节
- 在你的app里面用到了哪些技术 涉及到哪些安卓的基础知识
- 你们怎么开发的 有没有和后台服务交互 本地存储怎么做的
- 刚才说到涉及的界面是多Activity+多Fragment 为什么会出现Fragment这个组件 什么时候Activity会满足不了现有的界面开发(主要说了资源占用 生命周期)
- 除了刚说的Intent还有哪些Activity、Fragment之间通信的方式
- 其它通信方式(提到ipc通讯(顺带开始扯init fork zygote,AMS之类的 开始拖时间) rxbus,eventbus等)
- 你学习的一些框架比如okhttp和eventbus的源码有没有看过 平时通过什么方式学的
- 你有了解过这些框架的宏观架构和原理、核心实现吗 有没有具体了解过的框架、系统或者一个模块(大概靠回忆说了一下Retrofit的架构流程)
- 在项目中有没有碰到过吃力的事情和问题 是个什么样的情况 是怎么思考和解决的
- 反问 工作地点 总部 平时开发内容(系统应用/框架/app) 面评(没问题,不予置评)
得物安卓
- 自我介绍
- 问自我介绍中提到的安卓项目;
- activity的生命周期,各个阶段的方法名叫什么;
- 安卓的那些场景会导致内存泄漏;
- c++的垃圾回收机制(自己不懂安卓的内存泄漏,然后答了c++的内存泄漏,所以面试官问了c++);
- tcp的三次握手和四次挥手;
- 为什么tcp客户端的time-wait状态必须等待2MSL;
- http1.1与http2.0之间的区别;
- 线程安全的解决思路;
- 有哪几种锁;
- 进程通信方式,具体的使用场景;
- 二叉树的深度遍历,递归与非递归实现;
- 反问
- c++的内存模型,各个区的作用
- c++什么情况下会有野指针问题(说了两种情况)
- 还有什么情况下会有野指针问题(我说想不到)
- 链表,有一个指针,双指针,在引用的过程中间,有一个指针将他的链给断开,去访问的时候,另一个指针会发生什么(没理解面试官提出问题的题意,没答出来)
- 数组的越界呢?
- 文件的内存映射了解过吗?相较于普通的io流有什么优势呢?(没有专门背过,寄,后来面试官解答了这个问题)
- 一个数组的值先从小到大递增后从大到小递减,找出最大的值。(我没想到最优时间复杂度的解决方法,面试官给了答案)
汽车之家
- 看简历上掌握Kotlin,说一说协程
- 说一说Java的反射?反射为什么性能差?
- 熟悉Android的四大组件,说一说Activity的launchMode中的singleTask和singleTop的区别
- provider中getContext()获取到的context是什么context?
- 反问
- 部门业务和技术栈?有一个Unity3D项目,有一个地图SDK项目。技术栈Java和Kotlin都有
- 您觉得我还有哪方面需要改进的吗?挺好的,回答问题可以更具体地概述有几点,结构化思维去回答问题
- 协程是什么?
- 知道集合和多线程,那说一说你知道的线程安全的集合
- 讲一讲你知道的锁?从不同角度可以分为类锁和对象锁、公平锁和非公平锁、乐观锁和悲观锁,追问自旋锁
- 讲一讲LeakCanary的原理(弱引用队列+Activity生命周期),使用LeakCanary检测到了什么内存泄漏?是先知道这里会出现内存泄漏吗?不是,内存泄漏就是通过LC检测出来的,然后再去查找内存泄漏的原因
- LeakCanary用到了一个GC机制,GC Root都有哪些?
由于文章篇幅有限,不能将面试过的所有面试题展示出来,但是我已经将求职过程中碰到的面试题整理成PDF文档了,有需要的小伙伴,可以点击下方课程链接详细了解!!!
https://edu.51cto.com/course/32703.html
第一章 Java方面
- Java基础部分
- Java集合
- Java多线程
- Java虚拟机
第二章 Android方面
- Android四大组件相关
- Android异步任务和消息机制
- Android UI绘制相关
- Android性能调优相关
- Android中的IPC
- Android系统SDK相关
- 第三方框架分析
- 综合技术
- 数据结构方面
- 设计模式
- 计算机网络方面
- Kotlin方面
第三章 音视频开发高频面试题
- 为什么巨大的原始视频可以编码成很小的视频呢?这其中的技术是什么呢?
- 怎么做到直播秒开优化?
- 直方图在图像处理里面最重要的作用是什么?
- 数字图像滤波有哪些方法?
- 图像可以提取的特征有哪些?
- 衡量图像重建好坏的标准有哪些?怎样计算?
- ......
第四章 Flutter高频面试题
- Dart部分
- Flutter部分
第五章 算法高频面试题
- 如何高效寻找素数
- 如何运用二分查找算法
- 如何高效解决雨水问题
- 如何去除有序数组的重复元素
- 如何高效进行模幂运算
- 如何寻找最长回文子串
- ....
第六章 Andrio Framework方面
- 系统启动流程面试题解析
- Binder面试题解析
- Handler面试题解析
- AMS面试题解析
第七章 企业常见174道面试题
- SD卡
- Android的数据存储方式
- Broadcast Receiver
- sp频繁操作会有什么后果?sp能存多少数据?
- dvm与jvm的区别
- ART
- Activity的生命周期
- Application能不能启动Activity
- ....
有需要的小伙伴,可以点击下方课程链接详细了解!!!
https://edu.51cto.com/course/32703.html
标签:吱声,面试题,Java,内存,Activity,Android,被锤记,指针 From: https://blog.51cto.com/u_16163442/8620620