写点什么

记一次腾讯社招 Android 面试(已拿到 offer 入职)

用户头像
Android架构
关注
发布于: 8 小时前

腾讯二面




1.单例设计模式都写写,静态内部类是怎么保证线程安全的?


2.synchronized 底层实现原理,ReentrantLock 公平锁与非公平锁。


3.主线程等待所有线程执行完毕,再执行某个特定任务怎么实现?原理和源码看过没?


4.自定义 view 的一般流程,要注意些什么如何优化,点击事件和长按时间分别是怎么实现的?


5.四种启动模式,在源码分析中的原理是怎样的?


6.讲讲 bindService 的过程,你当初是怎么优化后台服务进程的?


7.开发中你都用到了哪些设计模式?说说当时具体的场景。为什么你要用方法工厂,另外两种呢?


腾讯三面




1.讲讲 handler 的底层实现原理?


2.说说你做的日志记录优化?


3.你看过 binder 驱动的源码,说说他的内存映射过程,说说客户端等待服务端处理返回的流程,如果要跨进程传递大内存数据你具体会怎么做?简单写一写吧。


4.在公司做过哪些优化?


5.过程中遇到的一些最难解决的问题?


6.提到了动态修复替换加载 so ,那你知道怎么修复 class 吗?怎么修复资源呢?


7.还有什么要问的?


总的来说,一面的面试官比较亲切,二面面试官要严肃些,说话比较有气场(应该是个 leader),三面的话压力就有点大了。幸运的是最后顺利拿到了 Offer。


下面分享一下面试前的准备技巧和一些 Android 面试要点:

引人注目的简历

准备简历有两点是绝对要记住的:不要等到真正开始找工作前几天才开始准备你的简历,越早准备越有优势!


简历一定要用 PDF 格式,一定要用 PDF 格式,一定要用 PDF 格式!


简历真的很重要很重要,招聘系统或者是邮箱里一天可能会收到几十万份甚至更多的简历,HR 可能打开 10 秒都不够就决定这份简历是不通过还是进入下一阶段了。


简历的目的:让企业的人从整体上了解你是一个具备什么能力的人。

常见的面试小技巧

面试有很多小技巧的,特别是和 HR 对线的时候(HR 看到不要找我呀,害怕.jpg)


  • 不懂不要说不懂:面试官在知识深度上超出我们的掌握范围,如果问到不懂可以参考下面的做法:


可以结合自己的理解去回答,无论正确与否,虚心请教


若是有标准答案的问题但不懂,可以说:“目前还没有接触到这部分知识,面试完以后会去学习,加强理解!”


  • 引导面试官:面试官抛出一个问题时,围绕该点展开回答,可以串联一些其它知识,但不要说太多,引导面试官:


提到 ArrayList 时,提一下 LinkedList,引出 LinkedList


提到 HTTP 时,提一下 HTTPS,引出 HTTPS


  • 手撕代码:切忌抬手就写,要确定题意,对有不理解的地方要敢于提问。解题时跟面试官说自己的思路,以及每一步干什么,一边写一边向面试官解释。


不要一开始就追求最优解,面试官不会太反感粗糙的代码,但他希望你是一个有逻辑、思路严谨的人。


面试官会引导你优化你现有的代码,不必因为一开始写不出最优解而苦恼。


  • 反问环节:要从面试官那儿获得对自己的反馈,比如:


当前企业最主要的技术栈是什么?


公司目前的主要业务是什么?该岗位主要负责什么内容?

Android 面试要点

下面分享一份我之前整理的 Android 面试资料,希望能帮助到有心在技术这条道路上一路走到黑的朋友!

一、Android 基础+进阶

1.Activity 启动模式


2.Activity 的启动过程


3.进程通讯


4.Android Binder 之应用层总结与分析


5.进程保活方法


6.从源码了解 handler looper ,messageQueue 思路


7.handler 如何实现延时发消息 postdelay()


8.Android 中为什么主线程不会因为 Looper.loop()里的死循环卡死?


9.RxJava 原理及如何封装使用


10.okhttp 源码分析


11.retrofit 源码分析




12.LeakCanary 核心原理源码浅析


13.LruCache 使用及原理


14.ARouter 原理


15.注解框架实现原理


16.Android 如何编写基于编译时注解的项目


17.RxJava2+Retrofit2+OkHttp3 的基础、封装和项目中的使用


18.Rxjava2.0+Retrofit+Okhttp(封装使用)+MVP 框架搭建


19.Android 插件化和热修复知识梳理


20.Android 开发中比较常见的内存泄漏问题及解决办法


21.如何检测和定位 Android 内存泄漏


22.图片占据的内存算法


23.为什么图片需要用软引用,MVP 模式中的 view 接口用弱引用


24.基于 DataBinding 与 LiveData 的 MVVM 实践


25.App 稳定性优化


26.App 启动速度优化


27.App 内存优化


28.App 绘制优化


29.App 瘦身


30.网络优化


31.App 电量优化


32.安卓的安全优化


33.为什么 WebView 加载会慢呢?


34.如何优化自定义 View


二、Java 基础+进阶

1.HashMap


2.ArrayList


3.LinkedList


4.Hashset 源码分析


5.内存模型


6.垃圾回收算法(JVM)


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


8.类加载过程


9.反射


1


《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
浏览器打开:qq.cn.hn/FTe 免费领取
复制代码


0.多线程和线程池


11.创建多线程方式、线程池工作原理


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


13.断点续传


14.Java 四大引用


15.Java 的泛型


16.接口、抽象类的区别


17.从 java 容器类的设计讨论抽象类和接口的应用


三、数据结构与算法面试题

1.常用的数据结构有哪些?


2.数组


(1).如何在一个 1 到 100 的整数数组中找到丢失的数字


(2).如何在给定的整数数组中找到重复的数字? (小米)


(3).如何在未排序整数数组中找到最大值和最小值?(字节跳动)


(4).在 Java 中如何从给定数组中删除多重复制?


(5).大数相加(今日头条)


3.链表


(1).那查询第一个跟倒数第二个呢?(这就不一样了,第一个直接给了头结点,倒数第二个需要从倒数第一个开始查询,走两步) (腾讯)


(2).arrayList 底层原理 (滴滴)


(3).如何在一次遍历中找到单个链表的中值?(中国平安)


(4).如何证明给定的链表是否包含循环?如何找到循环的头节点?(优酷)


(5).两个有交叉的单链表,求交叉点 (华为)


(6).如何得到单链表的长度?(360)


(7).如何在不使用递归的情况下逆转单链表?(小米/美团)


(8).怎么判断链表有环? (滴滴)


4.队列 &堆栈


(1).如何使用栈实现队列的功能(广州荔枝 FM)


(2).两个栈实现一个队列(蘑菇街)


(3).两个队列实现一个栈 (腾讯)


(4).对比一下队列和栈,以及它们底部实现 (腾讯)

用户头像

Android架构

关注

还未添加个人签名 2021.10.31 加入

还未添加个人简介

评论

发布
暂无评论
记一次腾讯社招Android面试(已拿到offer入职)