尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

2023年360校招Android客观题解析:高频考点与备考策略

2023年360校招Android客观题解析:高频考点与备考策略 2023年秋招季360的技术岗笔试一出来我身边好几个学弟学妹都跟我吐槽客观题部分看着简单但陷阱一个接一个稍不注意就踩坑。作为一名在Android开发圈摸爬滚打了十多年的老工程师也帮不少应届生做过笔试复盘今天就围绕360校招技术岗的Android方向客观题把考察逻辑、高频考点、易错题型这些掰开揉碎了讲清楚。这篇内容适合两类人看一类是正在准备2023届及以后校招的Android方向学生想了解大厂笔试题到底考什么、怎么准备另一类是刚入行不久、想系统查漏补缺的初级开发毕竟这些客观题覆盖的知识点恰恰是日常开发中最常用也最容易被忽视的基础。先说个基本判断360的客观题整体难度不算变态但覆盖面很广从Java基础到Android四大组件从Handler机制到性能优化甚至还有一些安全相关的考点——毕竟是安全起家的公司。题目数量通常在40到60道之间时间给得比较紧平均一道题也就一分钟出头所以很多人不是不会做而是来不及做。这篇文章我会从题型结构、核心考点、易错点分析、备考策略几个维度展开帮你梳理出一条清晰的准备路径。1. 2023年360校招Android客观题到底在筛什么先说结论客观题不是用来筛“谁更聪明”的而是用来筛“谁的基础更扎实”。360作为一家以安全产品起家的互联网公司对工程师的要求一直是“基本功过硬、思路清晰”。Android方向的客观题本质上是在考察三件事你对Java/Kotlin语言特性的掌握程度、你对Android系统运行机制的理解深度、以及你在实际开发中是否踩过坑、有没有总结过。1.1 题型结构与时间分配从近两年的情况看360校招技术岗的在线笔试普遍采用牛客网或赛码平台客观题部分包括单选题、多选题和少量判断题。单选题占比最高通常在60%以上多选题是拉开差距的关键因为多选、少选、错选都不得分容错率极低。时间分配上客观题加上后面的编程题总时长一般在90到120分钟。我的建议是客观题控制在40分钟以内必须做完把剩下的时间留给编程题。现实情况是很多同学在客观题上纠结太久结果编程题没时间写这是最亏的。有个很实际的技巧如果你在某道多选题上卡了超过两分钟直接标记跳过先做后面的题。客观题的分数分布是均匀的一道题两分和一百分没区别没必要为了不确定的多选题牺牲整场考试。1.2 客观题在整轮面试中的定位客观题只是第一轮筛选它的作用是把你和面试官拉到同一个知识基准线上。笔试之后还有技术面面试官大概率会从笔试的错题里挑几个追问下去。所以我的建议是笔试结束后别急着扔把不确定的题目记下来回去挨个查清楚。这个习惯我见过太多人忽视了。有人在笔试里蒙对了一道Handler的题觉得自己没问题结果面试被问到“MessageQueue的next()方法在没有消息时会怎么处理”直接愣住。笔试蒙对不是本事搞懂才是。还有一点需要注意360的笔试系统通常会记录你的答题时间。如果某道题你答得很快系统不会管但如果整张卷子都是秒答可能会被标记为异常。正常节奏做题就好不用刻意控制速度。2. Java和Kotlin语言基础客观题的送分题与送命题很多同学觉得语言基础简单不用专门复习结果往往是这部分失分最多。360的客观题里Java和Kotlin的内容能占到20%到25%主要集中在集合框架、并发编程、内存模型、异常处理这些方面。2.1 集合框架绝不是“背个继承图”这么简单集合框架几乎是大厂笔试的必考内容但考法远不是让你选ArrayList和LinkedList的区别这么浅。2023年的题目风格更偏向于“在特定场景下选集合”。典型的考法是已知一个方法需要频繁进行元素的插入和删除并且查询操作较少应该选哪种集合这种题看着基础但很多人会忽略数据结构底层的实现差异。ArrayList基于动态数组插入删除涉及元素位移LinkedList基于双向链表插入删除只改指针但内存开销大且不支持随机访问。还有一类高频考点是HashMap的底层原理。2023年的题目里HashMap的考察已经从“默认容量是多少”升级到了“扩容阈值是多少”、“为什么线程不安全”、“红黑树化的条件是什么”。这些知识点如果你只是背过面试题而没有真正看过源码很容易在多选题里翻车。我建议复习时把HashMap的put方法源码完整走一遍计算hash、定位桶位、判断链表还是红黑树、触发扩容的条件size threshold且桶位不为空。这些都是客观题里反复出现的细节。2.2 并发编程synchronized和volatile是永远的主角并发编程是Java基础里最拉分的一块。360的客观题比较喜欢考察synchronized的锁升级过程、volatile的可见性和有序性、以及ThreadLocal的使用场景。锁升级几乎每年都会考无锁状态 → 偏向锁 → 轻量级锁 → 重量级锁。题目通常会给一个具体场景问你此时处于什么锁状态。比如“一个线程连续多次进入同步代码块此时是什么锁”答案是偏向锁。这里有个容易混淆的点偏向锁在竞争不激烈时会撤销撤销过程会触发STW所以实际开发中偏向锁不一定是好事。volatile和synchronized的区别也是老生常谈但能真正答全的人不多。volatile保证可见性和有序性但不保证原子性synchronized保证可见性、有序性和原子性。注意volatile不能替代synchronized但synchronized可以替代volatile。多选里这种描述换个说法就成了陷阱比如“volatile能保证原子性”这是错的。ThreadLocal的考点往往是内存泄漏问题。ThreadLocalMap的Entry继承WeakReferencekey是弱引用value是强引用如果线程不复用且ThreadLocal没有及时remove就会造成value泄漏。客观题里喜欢在判断题里出现“ThreadLocal会随着线程销毁而自动回收”这种错误描述。2.3 Kotlin协程从加分项变成必选项2023年的一个明显变化是Kotlin协程的占比变高了。这是行业趋势毕竟新项目的代码基本都是Kotlin写的协程已经成为主流的并发方案。协程的客观题考点集中在withContext、launch、async的区别suspend关键字的原理协程调度器的选择。其中最有迷惑性的一道题是“launch和async在异常处理上的区别”——launch的异常会直接抛出async的异常在内部被捕获只有调用await时才会抛出。如果题目问“async启动的协程抛异常后会怎样”答案是不会崩溃但需要调用await才能收到异常。协程上下文也是一个常见考点Dispatchers.Main、Dispatchers.IO、Dispatchers.Default的区别以及withContext和delay是否会阻塞线程。这些内容如果平时写代码用得多做题几乎不用思考如果你还在用回调式写法建议专门花时间补一下。3. 四大组件与Handler机制Android客观题的半壁江山Android核心知识点在360客观题里的占比在30%以上其中四大组件和Handler机制是绝对主角。这部分没有捷径只能靠理解加记忆。3.1 Activity生命周期远比你想象的复杂Activity生命周期是客观题最基础的考题但也是最容易出陷阱的。常规的onCreate、onStart、onResume顺序大家都会背但一遇到屏幕旋转、跳转页面、按Home键很多人就开始晕。2023年考了一种比较刁钻的场景Activity A启动Activity BB是透明主题。此时A会回调什么答案是A只回调onPause不会回调onStop。因为B是透明的A依然可见所以不会走onStop。如果不了解透明Activity对生命周期的影响这道题就会选错。还有启动模式的考察singleTask和singleInstance的区别是高频题。singleTask会复用栈内已有的实例并清空其上的所有ActivitysingleInstance则是整个系统只有一个实例并且该实例独占一个任务栈。题目如果问“设置在singleInstance的Activity启动另一个Activity会怎样”答案是系统会新建一个任务栈来放新的Activity因为它所在的栈不允许再放其他Activity。onSaveInstanceState和onRestoreInstanceState的触发时机也要注意。很多同学以为只有系统回收Activity时才会调用其实屏幕旋转也会触发。客观题里常考的是什么时候onSaveInstanceState会被调用答案包括按Home键、屏幕旋转、系统内存不足、启动其他Activity不一定。3.2 Service和BroadcastReceiver显式与隐式的边界Service的考察集中在启动方式上startService和bindService的区别以及两者混用时的生命周期。最容易考的是“bindService后调用stopService会怎样”——答案是stopService不会生效必须unbindService之后Service才能停止。还有一个细节Service的onStartCommand方法返回值含义。START_STICKY、START_NOT_STICKY、START_REDELIVER_INTENT分别代表什么以及什么场景应该选哪个。这个在实际开发中很重要客观题也爱考。举一个典型例子下载服务被系统杀死后希望服务自动重启并继续下载任务应该返回START_STICKY还是START_REDELIVER_INTENT答案是START_REDELIVER_INTENT因为它会重新传递最后一次的Intent。BroadcastReceiver的考点主要集中在Android 8.0之后隐式广播限制。2023年的题目里出现了“静态注册的Receiver还能不能收到隐式广播”这种判断题答案是在Android 8.0及以上除系统广播外静态注册的Receiver无法收到隐式广播。这个考点几乎是必考因为它是适配Android高版本时最典型的坑。3.3 ContentProvider了解机制比会用更重要ContentProvider在四大组件里考得最少但不会缺席。360的客观题一般考它的原理和应用场景跨进程数据共享、insert/delete/update/query的线程模型、以及ContentResolver的使用。这里挑一个高频错题ContentProvider的query方法运行在哪个线程答案是Binder线程池不是主线程。所以ContentProvider的CRUD操作默认在Binder线程池中执行如果在query里做耗时操作不会直接ANR但不建议这么做。另外ContentProvider的onCreate运行在主线程所以这里千万不能做耗时初始化。这个知识点有段时间特别爱考因为很多做SDK的同学会把初始化逻辑放在ContentProvider里导致启动变慢。3.4 Handler机制从Message到Looper的完整链路Handler机制是360客观题里最稳定的考区几乎年年出现而且越考越细。基础的“Handler、Looper、MessageQueue三者关系”不用多说真正的陷阱在于消息处理链路中的细节。第一谁创建Looper主线程的Looper是Looper.prepareMainLooper()自动创建的子线程使用Handler必须先调用Looper.prepare()再调用Looper.loop()。题目经常问“在子线程中new Handler抛出的异常是什么”——答案是RuntimeExceptionCant create handler inside thread that has not called Looper.prepare()。第二MessageQueue的next()方法会阻塞吗答案是没有消息时会调用nativePollOnce进入阻塞但不会ANR因为它不占用CPU。很多同学把“阻塞”和“卡死”画等号这里就是误区的来源。第三Handler的sendMessageDelayed是怎么实现延时的很多人以为是延迟之后才把消息插入队列实际上是按延迟时间排序插入到了时间再取出执行。这个区别在客观题里经常考题目会问“延时消息是按什么顺序插队的”。第四同步屏障和异步消息。这是Handler机制里比较深的内容刷题时容易忽略。当存在同步屏障时MessageQueue会跳过所有同步消息优先执行异步消息直到移除屏障。这个机制被用在Choreographer的VSYNC调度里如果题目考到“哪个类的消息是异步的”答案是Choreographer的CALLBACK消息。4. 自定义View、性能优化与网络框架拉开差距的客观题这部分的内容在笔试卷子里不一定最多但区分度很高。基础好的同学能全对基础不牢的同学连选项都看不明白。4.1 自定义View测量、布局、绘制三件套自定义View的客观题主要考View的测量和绘制流程最经典的是MeasureSpec的三种模式UNSPECIFIED、EXACTLY、AT_MOST。记忆错误的高频点在于wrap_content对应AT_MOSTmatch_parent和固定dp值对应EXACTLY。题目喜欢反着考问你“match_parent是哪种MeasureSpec模式”答案是EXACTLY。因为match_parent给了父容器一个确定的尺寸要求。还有一个考点是View的绘制顺序onMeasure → onLayout → onDraw。如果在自定义View里想要设置背景色应该在哪个方法里答案是onDraw但更高效的方案是直接在构造方法里setBackgroundColor避免每次绘制都做重复操作。自定义ViewGroup的测量逻辑也是常客onMeasure里要测量所有子View并计算出自己的尺寸onLayout里要确定每个子View的位置。题目如果问“ViewGroup默认会调用子View的onDraw吗”答案是会因为ViewGroup继承自View。但如果ViewGroup开启了setWillNotDraw(true)那么它自己不会绘制子View不受影响。4.2 性能优化内存泄漏、anr与卡顿性能优化这块360客观题的风格偏向实战给一个具体场景让你选最合理的优化方案。这类题没有绝对的对错只有最优解所以需要理解背后的原理。内存泄漏是必考内容。最常见的几个泄漏源内部类持有外部Activity引用Handler、Runnable、静态Context引用、匿名内部类Runnable、注册的监听器没反注册。题目常考“以下哪个操作不会造成内存泄漏”——不会泄漏的选项通常是在onDestroy中反注册广播、使用静态内部类加弱引用、及时removeCallbacks。ANR的判定标准也考过Activity最长响应时间是5秒BroadcastReceiver是10秒Service是20秒。这个数字前几年是固定的但Android高版本对某些场景做了调整客观题里一般还是考旧标准因为题目要照顾大部分开发者。卡顿优化考的比较多的是布局层面。include、merge、ViewStub的使用场景merge只能作为根布局使用用于减少嵌套层级ViewStub用于延迟加载不常用的View但ViewStub只能inflate一次之后就没了。4.3 网络与图片加载协议细节决定成败网络方向的客观题主要集中在HTTP/HTTPS、TCP三次握手、OkHttp和Retrofit的原理上。TCP三次握手算是老熟人了但考法可以很刁钻客户端发送SYN报文后进入什么状态答案是SYN_SENT服务端收到SYN并回复SYNACK后进入SYN_RCVD状态。选项会故意混淆成ESTABLISHED或CLOSE_WAIT。HTTPS的握手流程也常考客户端和服务端如何协商对称加密密钥。简单说就是客户端用服务端的公钥加密一个随机数发给服务端双方用这个随机数生成对称密钥。题目问“HTTPS的第一次握手传输了什么”答案是ClientHello包含支持的加密套件和一个随机数。OkHttp的考点集中在拦截器链上重试与重定向、桥接、缓存、连接、网络、等。最常考的是“自定义拦截器应该加在哪个位置”以及“缓存拦截器的作用”。Retrofit的考点则集中在动态代理和注解解析上Retrofit通过JDK动态代理创建API接口的实现通过注解描述请求方式、参数、URL。图片加载库Glide也是高频考点但360的题目通常只问到基础层面Glide默认的内存缓存和磁盘缓存策略。多选里会出现“Glide支持哪些图片格式”——GIF、WebP、JPEG、PNG都支持。还有一种典型的干扰项是“Glide只能加载网络图片”这是错的它支持各种来源。5. 容易被忽略的考点安全机制、架构模式与2023年新变化360毕竟是安全公司Android安全方向的题目会比其他大厂多一些比如组件暴露、数据加密、权限机制等。这些考点平时刷LeetCode和八股文的时候很容易漏掉所以单独拿出来提醒。5.1 四大组件的暴露风险Android应用安全的考察通常不会太深但会考一些常识性问题。最常见的是“以下哪个组件可以在未授权的情况下被外部调用”——答案是exportedtrue的组件。题目会给一个AndroidManifest.xml片段问你哪些组件存在暴露风险。这里有个容易忽略的细节如果组件设置了intent-filter而没有显式设置exported那么隐式Intent可以唤起该组件系统默认exported为true。在Android 12及以上如果组件同时设置了intent-filter和exportedfalse会导致运行时崩溃因为系统不允许隐式调用未导出的组件。还有一个考点是数据和文件的安全存储SharedPreferences、SQLite数据库、内部存储、外部存储的权限差异。题目一般会问“哪些数据不适合明文存储在外部存储”——答案通常包括用户密码、Token、支付信息。5.2 架构模式MVC、MVP、MVVM的区别与选择架构模式的客观题考察的是基本概念和适用场景。MVC里Controller和View的耦合、MVP里Presenter和View的双向交互、MVVM里通过DataBinding或LiveData实现的双向绑定这些概念考察频率差不多。最容易混淆的是MVP和MVVM。MVVM的特点是ViewModel不持有View的引用通过LiveData或Flow这种事件流来实现通知天然解决MVP中Presenter持有View导致的泄漏问题。题目如果问“下列哪种架构可以天然避免视图引用导致的内存泄漏”答案是MVVM。Jetpack组件的考察也在逐年增多。LiveData、ViewModel、Room、Hilt这些组件的基本使用和原理都会出现在多选题里。这里给一个备考建议不要只背概念要把Jetpack官方文档的简介部分过一遍尤其是ViewModel的生命周期范围和LiveData粘性事件这两个点笔试里出现的概率很高。5.3 2023年值得关注的新动态每年校招笔试都有少量题目会跟当年的技术热点挂钩Android方向的2023年热点主要是Kotlin协程的流行、Jetpack Compose的普及、Android 14的适配要求、以及大厂对音视频和性能优化方向的需求上升。Jetpack Compose的题目一般比较简单比如“Compose的UI刷新机制是什么”、“state变化会触发什么操作”。如果你只学过传统View体系看到这种题目可能会慌但这类题通常只占一两道不会影响大局。2023年的另一个趋势是大模型和AI应用开始出现在客户端开发的笔试题中比如“端侧部署大模型的方案有哪些”、“如何在Android端做模型推理优化”。360作为有AI技术积累的公司偶尔会出一两道这种题作为信息量附加。这种题如果不会可以直接跳过它对最终结果的影响有限。6. 客观题的完整备考策略与答题技巧考完试复盘的时候很多同学会感慨“题目我都会就是没时间做。”这句话基本可以等同于“我掌握得不熟”。客观题拼的不只是知识面还有熟练度和应试技巧。6.1 备考材料与方法说到备考我的建议是把精力集中在三块官方文档、源码解析博客、历年真题。很多人的问题在于资料太多什么都想抓结果什么都是浅尝辄止。第一优先级是官方文档。Android开发者官网的指南部分尤其是关于应用组件、并发、性能优化、Kotlin入门的内容覆盖了客观题90%以上的知识点。官方文档的特点是准确、权威不会出现网上博客常见的过时信息。第二优先级是源码解析类博客。这里推荐那些专注于一线大厂面试的公众号和掘金专栏比如“Android性能优化最佳实践”、“深入理解Android内核设计思想”的读书笔记。看的时候不要泛泛地看要带着问题去看HashMap为什么线程不安全、Handler的IdleHandler是干什么的、协程的挂起到底意味着什么。第三优先级是历年真题加模拟。360的真题在牛客和赛码平台上都有做个两三套基本就能摸清出题风格。做完之后一定要逐题复盘尤其是那些做错的题要把背后的知识点彻底搞懂而不是背答案。6.2 答题时间的分配与检查策略客观题的答题时间分配按照我的经验建议采用“先易后难、两遍扫描”的策略。第一遍把会做的题全部做完标记出不确定的题。不要在一道题上恋战一眼不会就先跳过。整个客观题部分的理想状态是第一遍20分钟第二遍检查15分钟剩5分钟检查有没有空题。第二遍优先处理多选题。多选题的容错率太低多选一个和少选一个都是零分所以如果某个选项不确定宁可少选一个也不要冒险去猜。当然这是针对“选错倒扣分”平台的策略如果平台规则是“少选不得分、错选扣分”那原则就变成“只选最有把握的”。检查阶段的三件事确认没有漏题、确认选项和题目一一对应、确认没有因为手滑选反。我见过不少同学不是不会做而是把“下列说法错误的是”看成“下列说法正确的是”这种失分太冤了。6.3 笔试之后客观题如何衔接技术面客观题考完之后如果你进入下一轮面试面试官大概率会拿到你的答题记录。有些面试官会直接问你“笔试里有一道关于Activity启动模式的题你不确定现在可以再想想吗”所以建议你在笔试结束后的当天就回忆并记录下拿不准的题目挨个查清楚。这一步做得好面试时就算被问到也能轻松接招。还有一个小技巧面试时如果被问到和笔试相关的知识点可以顺带提一下“我在准备笔试的时候复习到这一块当时对XX有些疑惑后来查了源码发现……”这种表达比干巴巴的背诵加分很多至少说明你有自驱力和学习能力。写在最后客观题准备到一定程度你会发现它不只是为了过笔试更是对你Android基础的一次系统体检。我在帮人改简历和模拟面试的时候经常会遇到项目经验很丰富但基础概念答不上来的候选人一到Handler延时的原理、协程调度的细节就卡壳这种基础不牢带来的不自信在一对一面试里藏不住。所以如果你正在准备360或者其他大厂的校招请把客观题当成一次查漏补缺的机会。花两周时间把Java集合与并发、Android生命周期与组件、Handler机制、性能优化这几个重点板块过一遍再配合真题做两轮模拟通过笔试基本没有问题。知识点不懂的优先查源码和官方文档不要背那些二手八股。你真正理解的东西才是面试时能拿得出手的东西。
返回列表