ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

360校招Android笔试客观题全解析:考点分布与复习策略

360校招Android笔试客观题全解析:考点分布与复习策略 校招季那会儿我的电脑里塞满了以“公司-岗位-笔试真题”命名的文档“360公司-2018春招笔试-Android开发工程师客观题合集”属于我打开次数最多的几份之一。不是因为它比别家难而是这套客观题做完之后你会产生一种非常清晰的挫败感每个名词好像都见过真到落笔选的时候又犹豫不决。这套题集适合谁看准备Android校招的应届生、想跳槽但基础不牢的在职开发、需要出笔试题的面试官都能从里面咂摸出点东西。因为客观题这种东西最见功底背题刷量只能保下限真正吃透原理才能拉开差距。这份合集的价值不在于“刷完它”而在于它是一面镜子能照出你对Android知识体系到底掌握得有多深。今天我就以这套题集为线索把当年准备时的复盘思路、解题策略、以及放在今天仍然不过时的复习方法一次性掰开揉碎讲清楚。1. 先看清这套题集的全貌题型、节奏与考察倾向1.1 客观题的结构单选、多选、判断的前后夹击2018年360春招的Android开发工程师笔试客观题部分大概率是这么安排的单选、多选、判断题混合出现其中单选约占六到七成多选是真正的分水岭判断则用来制造“不确定感”。多看几套大厂笔试题就会发现客观题部分的题目数量通常不算少但给的时间有限平均到单题上往往不到一分钟。这就意味着你必须在极短时间内判断出考察点是什么并且快速排除干扰项。单选的干扰项一般设置得比较温和大多是“记错一个参数导致概念混淆”这种程度多选就狠一些四个选项里可能有两个完全正确、一个看似正确但细节有问题、一个干脆是反方向描述多选漏选错选都不得分所以很多人栽在多选上。我当年做完这套题之后的第一个感受是时间压力才是最大的敌人。如果你对某个知识点不熟想靠“斟酌一下”来蒙对那基本不可能因为后面还有更多题在等你。正确的策略是一眼能确定的题立刻选拿不准的题先标记最后留出时间回来推敲绝对不要在一道题上死磕。1.2 从360的基因看命题偏好安全视角是隐形加分题360这家公司做安全的底子太深了这份Android笔试客观题里安全相关的考点占比明显高于普通互联网公司的同类试卷。我当时整理这套题的时候就注意到WebView相关的题目特别多addJavascriptInterface的漏洞演进、file协议访问的安全风险、WebViewClient与WebChromeClient各自负责什么、如何正确判断页面加载失败而不是被错误页拦截。这些题在其他公司的卷子里当然也出现过但360考得更细会具体到“4.2之后为什么必须加JavascriptInterface注解”“哪些函数能被JS调用到”这种层面。组件安全同样是重点。一个App暴露出多少能被外部调用的Activity、Service、BroadcastReceiverContentProvider的authority和exported属性有没有危险组合这些本质上都是Android安全开发的常识但如果你平时只关注功能实现很少考虑“我这个组件是不是可以被别人拉起”遇到这类题就会露馅。如果你以后想进其他公司做安全方向或者系统方向的岗位从这里补起绝对不亏。1.3 考点分布一个基于做题经验的估算客观题不会完全均衡地覆盖Android知识树结合多个渠道对这套题集的讨论和我的做题记录大致呈现出这样一种分布以下为估算值不是官方统计考点模块大致占比常见切入方式Java/Kotlin基础20%集合类、装箱拆箱、字符串比较、泛型Android四大组件25%启动模式、生命周期、注册方式Handler/异步消息15%Looper、MessageQueue、线程切换View/布局/绘制10%绘制流程、事件分发、MeasureSpec网络与数据解析8%HTTP协议、TCP/UDP、JSON内存与性能优化7%内存泄漏、Bitmap、ANR安全相关6%WebView、组件暴露、权限数据结构和算法5%HashMap、排序复杂度、栈/队列其他4%设计模式、Gradle、版本适配这套题集之所以值得做很大程度上是因为它考得广而不偏。没有那种“背一个冷门API就能拿分”的题几乎每道题都能通过底层原理延伸出三到五个面试追问点。所以刷这套题的正确心态不是“把它做完对答案”而是“把它当成一份带你查漏补缺的目录”。2. 决定成败的不是“刷了多少题”而是基础功有多少水分2.1 Java与Kotlin基础客观题最爱考的语言底层Android面试不管怎么变Java基础都是一道绕不过去的坎。2018年那会儿Kotlin还没像现在这样全面普及但笔试里已经偶尔出现Kotlin特性题了。现在回头再看这套题里的Java基础题质量非常高因为它不考那种“你背过就会”的结论而是换个包装来考你是否真的懂。举几个高频考点String a abc; String b abc;用比较返回什么如果把b改成new String(abc)呢这背后是字符串常量池和引用比较的机制。Integer的valueOf有缓存范围超出范围后的结果是什么这道题几乎每家大厂都会出考察你对装箱缓存的理解。HashMap和Hashtable的区别、HashMap在JDK 1.8之后引入红黑树的触发条件、扩容为什么是2的幂次方。这些题在客观题里经常以“以下说法正确/错误的是”的方式出现。内部类为什么会持有外部类的引用静态内部类和普通内部类在构造上的差异这直接关系到内存泄漏的判断。Kotlin的可空类型、空安全、lateinit和by lazy的区别这类题在近两年的面试里地位越来越高。你发现没有这些题有一个共同点它们不会直接问你“HashMap扩容后元素怎么迁移”而是给出一小段代码、一个使用场景让你判断结果或结论。这就是考察你是否具备“把语言机制内化到日常开发”的能力死记硬背很难应对。2.2 四大组件与HandlerAndroid的骨架和心脏Android四大组件和Handler相关知识在这套题里占比最大也是拉开差距的地方。我见过太多简历上写“熟悉四大组件”的候选人但一考到细节就露馅。这里有一个很实用的记忆方法是我当年准备笔试时自己总结的Activity的四种启动模式核心就四句话——“standard默认新建singleTop栈顶复用singleTask栈内唯一singleInstance全栈唯一”。光记这四句还不够你必须知道每种模式背后的系统行为singleTop在目标Activity已经位于栈顶时走onNewIntent否则还是新建singleTask会把任务栈里位于它之上的Activity全部出栈确保它自己是栈内唯一singleInstance更特殊它独占一个任务栈常见于来电界面、闹钟这类全局性页面。Handler的考察角度更多。Handler、Looper、MessageQueue、Message四者的关系几乎是绕不开的每个Thread最多只有一个LooperLooper通过ThreadLocal和线程绑定MessageQueue是单链表结构、按时间排序取消息Handler把消息enqueue到MessageQueueLooper.loop()循环从队列中取出消息再dispatch给Handler。这套链路搞明白不只是为了应付笔试后面做异步任务、自定义View动画、跨线程通信全都用得上。Service的两种启动方式、onBind和onStartCommand的生命周期差异、Binder连接池的作用也是客观题里的常客。ContentProvider虽然在日常开发里很少自己写但它是跨进程数据共享的底层方案考场上的出场率反而高。2.3 数据结构与算法客观题里的算法题往往不需要手写代码很多人误以为客观题里的算法题很简单其实它只是换了个考法。常规的编程题让你写出完整解法客观题则通常是给出一段排序过程的中间序列判断可能采用的排序算法给定入栈序列判断某个出栈序列是否合法或者直接让你评估一段代码的时间复杂度。这些题考察的核心能力是“能不能在不运行代码的情况下通读逻辑得出结果”。我在刷这套题时遇到印象很深的一类题是HashMap相关已知初始容量和负载因子问元素数量达到多少时触发扩容。如果你知道扩容阈值容量×负载因子那这道题就是送分题如果不懂就只能瞎猜。建议复习数据结构时不要只盯代码实现要能自己画图模拟过程。比如二叉树的先序、中序、后序遍历你起码要能手绘出递归栈的变化过程栈和队列互相实现要能说出哪个操作是O(1)、哪个是O(n)。这些在客观题里考得比手写代码更狠因为它要求你真正理解过程而不是背模板。2.4 网络与操作系统Android开发者的两条硬腿Android开发到了后面想吃技术饭网络和操作系统这两块的底子是省不掉的。这套题里网络协议部分的标准配置是TCP三次握手、四次挥手、HTTP状态码、HTTPS握手流程和DNS解析流程。三次握手为什么是三次而不是两次或四次核心在于双方都要确认自己的收发能力正常同时防止历史重复连接请求突然到达服务器导致服务器建立无效连接。四次挥手为什么是四次因为TCP支持半关闭主动关闭方发送FIN被动关闭方可能还有数据要发所以回应ACK和发送FIN分成了两步。ANR的本质是主线程在规定时间内没有处理完输入事件或者没有完成绘制但客观题会考得更细哪些场景会触发ANR、广播接收器执行超时的时间阈值、Service执行超时的时间阈值。这些数字平时写代码用不到但笔试就爱考。操作系统部分进程和线程的区别、乐观锁和悲观锁、死锁产生的四个必要条件互斥、持有并等待、不可剥夺、循环等待都属于老生常谈但必须滚瓜烂熟的内容。3. 刷这套题的正确姿势四类常考形式的逐个击破3.1 概念辨析题答案往往就在两三个字的差异里这套题里最典型的一类题是“以下关于xxx的说法正确的/错误的是”。这种题看着简单陷阱都藏在概念的边界上。举个例子Activity的onStart和onResume有什么区别很多人的第一反应是“一个在可见前一个在可交互前”这没错但考试会继续考细节Activity处于onStart状态时是否可见可见只是不在前台、不能交互onResume状态下才能处理输入事件。再比如onPause和onStop一个是在失去焦点但还可见时调用一个是完全不可见时调用这两者的触发条件里“Activity是否仍然可见”就是核心区分点。我处理这类题的经验是不要靠背结论要把自己代入“系统在某个时刻做了什么”。你可以这样问自己用户按Home键返回桌面Activity依次执行什么用户按返回键退出又依次执行什么中间哪个回调可被系统杀死而不收到onDestroy把这些场景在脑子里跑一遍概念辨析题基本就稳了。类似的还有强引用、软引用、弱引用、虚引用的回收时机差异Serializable和Parcelable的使用场景差异getApplicationContext、Activity.this、getBaseContext()之间的区别。这些都是大厂笔试的高频考点原因在于它们能准确筛出“平时只调api、不关心api背后为什么这么设计”的人。3.2 计算题看似复杂核心就那几个公式客观题里的计算题通常不会太偏主要集中在这几个方向Bitmap内存计算。公式异常简单内存占用 宽度 x 高度 x 单像素字节数。一张1080x1920的图片如果使用ARGB_8888格式单像素占4字节那么内存就是1080192048294400字节约7.9MB。如果放到不同密度的资源目录下还需要考虑系统根据屏幕密度进行的缩放实际采样会乘以targetDensity / sourceDensity这个比例。dp和px的换算。px dp * (densityDpi / 160)。densityDpi为320的屏幕上1dp等于2px。这类题只要记住密度独立像素的意义就行让同一尺寸在不同密度的屏幕上看起来物理大小接近。时间复杂度的计算。看循环嵌套层次、看数据结构操作的复杂度。HashMap的get平均是O(1)TreeMap是O(log n)数组的线性查找是O(n)排序里快排平均O(n log n)但最坏O(n²)。还有一种容易忽略的计算题是二进制位移比如value 2相当于乘以4value 1相当于除以2。2018年的笔试题里出现过利用位移做性能优化的选项判断哪个写法效率更高。遇到计算题不要慌先把公式写在草稿纸上再代入题目给的数据。客观题里的计算量不会很大只要公式记得准两三步就能出结果。3.3 版本演进题先锚定一个稳定版本再记差异2018年那场春招Android 8.0API 26是当时的“新版本”所以客观题自然会有大量围绕8.0变化的题。通知渠道、后台执行限制、静态广播接收限制、自动填充框架这些都是当时的“新知识点”。复习这种题我有一个方法现在也推荐给你不要试图把每个版本的所有变化都背下来而是先锚定一个自己熟悉的稳定版本把该版本的知识体系吃透再去对比新旧差异。做2018年的题就往8.0靠面2025年的试就把Android 14、15当成锚定版本把近几年的行为变更整理成一张表。比如运行时权限是6.0开始的静态广播限制和后台Service限制是8.0开始的共享目录的file://Uri访问限制是7.0开始的官方推荐FileProvider前台Service类型限制是10到14之间不断收紧的而16K页面对齐则是Android 15之后需要关注的新问题。用“版本线”串起来比孤立背知识点高效得多。3.4 场景应用题把自己当成正在调试的工程师这套客观题里还有一类题它不长成“知识点问答”的样子而是给出一段现象描述让你推断最可能的原因。例如App在低内存设备上频繁崩溃最可能和什么机制有关某个功能只在一部分机型上异常其他机型正常排查思路应该从哪入手冷启动时间过长优化时第一步应该看什么这类题的解答思路本质上就是排查问题的思路先定位问题发生的阶段再评估资源瓶颈最后考虑系统限制。比如图片加载导致OOM第一反应应该是图片分辨率过高、没有做采样压缩而不是先怀疑缓存框架某个机型上崩溃而别的机型正常优先怀疑so库的ABI兼容、屏幕适配、系统版本差异而不是业务代码bug。我在刷题时把这些场景题当成“纸上DEBUG”每题都强迫自己写出排查链路从现象到假设再到验证。长期练下来对实际工作也有很大帮助因为它训练的是解决问题的思维框架而不是单纯的知识点记忆。4. 如果你正在刷这套题笔试之后一定要做这三件事4.1 错题复盘不要按题号整理要按知识点聚合很多人刷题有个习惯对完答案把错题截图存进相册然后就没有然后了。这样刷一百套题也提升不了多少。我当年刷这套360错题时做了个表格每一列分别是错题所属的一级分类Java/Android/网络/算法、二级分类集合/组件/进程、错误原因概念混淆/计算失误/题目没看懂、正确理解。全部记录下来之后用数据透视的方式统计一下马上就能看到自己的薄弱项集中在哪个模块。我当时统计完发现自己的问题集中在“Handler机制相关的一堆变体题”和“TCP挥手过程的时序题”于是针对性补了两天效果比盲目刷题好很多。错题的价值不在于“我记住了这道题的答案”而在于“我发现了我对某个知识点的理解偏差在那里”。所以复盘时不要只看正确选项要看错误选项为什么错、如果换一种问法是不是还能答对。4.2 把客观题转成面试问答卡客观题里的每道题几乎都能延伸成面试里的追问。举个例子一道关于Activity启动模式的题面试官可能接着问singleTask复用时onNewIntent和onActivityResult的调用顺序singleInstance会不会导致Task的问题如果A启动BB是singleTaskA怎么办所以在刷题的时候不要只满足于选出正确答案我建议你顺手把它扩展成“是什么-为什么-怎么解决”的问答卡。把零散的知识点组织成一个个可以“说”的答案后面面试时遇到同类问题就不慌了。这里给出一个我常用的问答卡模板题目来源核心考点一句话原理可能的追问方向我的回答要点客观题第X题Handler内存泄漏延时消息持有Activity为什么非静态内部类会持有外部引用改成静态内部类弱引用移除消息面试前把问答卡过一遍比临时翻笔记有用得多。因为你能用嘴讲出来才代表你真的懂了。4.3 留足时间给算法手写题和项目深挖必须清醒地认识到客观题只是第一关。笔试之后通常还有在线编程题以及两到三轮技术面。客观题帮你拿到面试资格但能不能走到offer取决于算法手写能力和项目深挖的表现。所以我建议不要把所有精力都花在刷客观题上。每天都留出时间练手写代码哪怕是LeetCode的简单题也可以目标是保持手感和边界条件敏感度。另外简历上写过的每个项目都要准备好在面试官面前讲清楚项目解决什么问题、你的角色是什么、难点在哪里、怎么验证效果。技术面到后期几乎都在聊项目客观题那些知识点反而变成了背景板。5. 用2018年的旧题准备现在的面试该坚持的和该补充的5.1 仍然值得反复刷的“硬通货”考点这套2018年的题放到现在有一部分内容依然不过时甚至可以说是“硬通货”。Handler机制在今天的地位有增无减。虽然协程已经普及但Handler仍然是Android系统消息循环的基石系统源码、View事件、Choreographer帧刷新都建立在它之上。Activity启动模式的考察频率也没有下降。HashMap扩容、ConcurrentHashMap分段锁/CAS机制、TCP三次握手和四次挥手、内存泄漏的典型场景这些基础考点在2025年的笔试里依然会出现只是可能穿着不同的外衣。我把这套题重新翻了一遍它的价值在于那些最底层的原理没有变变化的只是语言生态和应用层框架。所以如果你基础薄弱拿它来打底完全没问题。5.2 必须补充的新技术版图一份2018年题集戳不中的地方旧题集能帮你打下基础但如果你只靠它来准备现在的面试肯定不够。这几年Android技术栈的变化非常明显Kotlin协程基本取代了AsyncTask和大部分回调式异步面试必问协程的调度原理、结构化并发、withContext和async/await的区别、冷流和热流。Jetpack Compose快速普及声明式UI和传统View体系的思想差异、重组范围、状态提升这些都成了新考点。性能优化工具链更成熟了Android Studio自带的Profile、Macrobenchmark、Baseline Profile都值得掌握。构建体系越来越受到重视AGP版本与Gradle版本对应关系、R8混淆与资源压缩、依赖隔离、构建缓存。Framework层依然是进阶方向里的重中之重AMS、WMS、Binder、系统服务、应用启动流程。设备形态变多了折叠屏适配、车机Android、平板大屏适配这些都是面试官感兴趣的项目话题。隐私合规和数据安全成为必修课权限申请最小化、个人信息保护、合规SDK选择。结合这些新趋势去补旧题集覆盖不到的地方才能形成“底层原理稳新框架熟”的复合优势。5.3 我整理错题集时用的三个方法分享给你最后分享几个我用了很多年的复盘方法都是很土但很有效的操作第一目录归类法。把错题按《Android开发艺术探索》的章节结构归档。这本书的目录本身就对应着Android知识体系的主流划分按它的目录归类既能复习错题又能顺手梳理知识树。第二一周回测法。每周固定找一个晚上把这一周的错题重做一遍。如果还有错说明之前只记住了答案没有真正理解。这周就不要再加新题量先把旧题吃透。第三输出式复习法。把一道错题的核心知识点讲给身边的朋友听或者在笔记本上用大白话写一遍。能“讲清楚”和“写清楚”才是真的掌握。如果发现自己讲得支支吾吾那就是还有漏洞。我在实际刷这套2018年360春招Android开发工程题集时最大的体会是不要被“2018年”这个年份框住。旧题考的是不变的底层逻辑真正需要更新的是你的知识背景版图。把旧题当成体检表用它检测知识体系的短板再结合新技术的方向做定点补充这套题才能发挥出最大价值。
返回列表