十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

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

小红书2024春招iOS笔试复盘:考点拆解与答题策略

小红书2024春招iOS笔试复盘:考点拆解与答题策略 小红书2024年春招iOS开发岗第一批笔试我是在2月底参加完的说实话这场笔试在当年所有投递的大厂中就属于比较典型的一类基础题占大头、算法题中等偏上、附带一两道工程向的简答整体风格务实不玩偏题怪题。考完当天我在备忘录里记了一堆复盘内容一直没整理最近身边有几个朋友也在准备春招陆续问到我这场笔试的具体情况索性把当时的考试范围、答题思路、踩坑细节全部写成一篇给后面投小红书iOS岗的同学做个参考。需要说明的是这篇文章不是官方真题解析我不会贴原题原文只对考点类型、知识边界、答题策略做归纳毕竟笔试题目存在一定随机性同一批次的同学遇到的题目模块也会略有差异。但你只要把我下面梳理的这些内容吃透再去看小red书这批笔试至少不会慌。我整个备考期间反复围绕几个热搜词做过系统梳理iOS开发的核心基础、电池优化、安卓和iOS开发区别、iOS混合开发方案。这几个方向恰好也是小红书面经里被反复提及的高频区。如果你也是准备iOS春招的建议先把这几个方向过一遍再读这篇文章效果会好很多。1. 笔试全貌拿到考卷那一刻我在想什么1.1 整体流程与时间结构小红书2024春招第一批笔试采用的是在线笔试平台iOS开发岗和客户端岗共用一套题库但会根据投递方向做题目配比。我当时收到的邮件通知写的是笔试时长90分钟实际进入系统后看到的是三大部分单选题、不定项选择题、两道编程题外加结尾一道简答/设计题。整体时间压力不算小尤其是编程题如果前面选择题犹豫太久后面大概率会写不完。这里先说一个很重要的经验笔试前一定要去平台做一次模拟测试不管你是用牛客还是赛码都要提前熟悉它的编译器、输入输出格式、自测用例的提交方式。我见过不少同学栽在这个地方算法题思路完全正确但因为没有正确处理多行输入或者没有用对语言版本白白丢分。小红书的笔试环境支持C、Java、Python、SwiftiOS岗我直接用Swift写算法题手感上会比用C舒服一些但前提是你得提前练过Swift下的算法实现特别是readLine()和split(separator:)这些基础输入解析写法。时间分配上我是这样规划的选择题部分控制在25分钟内编程题留50分钟最后10到15分钟写简答题。实际执行下来稍微超了一点选择题用了28分钟原因是有几道内存管理题需要画图推演比预想中耗时。后面我会具体说说这类题怎么提速。1.2 题型分布与得分权重从题型结构来看这笔试主要筛三样东西语言基础、数据结构算法、工程思维。我在考后把能记住的题型做了个统计给大家一个参考范围不保证每场都一样但方向基本稳定。单选题大致10到12道覆盖Swift语法、Objective-C运行时、内存管理、并发、网络、UI布局这几个方向。其中Swift语言特性考得非常细比如protocol associatedtype、泛型约束、闭包捕获列表这些不是简单的“Swift和OC有什么区别”这种送分题而是会给一段代码问你输出什么或者能不能编译通过。不定项选择题占4到5道这部分难度明显上了一个台阶考的是iOS开发里的实际场景比如多线程资源竞争、CoreAnimation的隐式动画、Block循环引用、KVO触发时机等。不定项选最怕的是多选漏选好在阅卷时通常按比例给分但如果你拿不准我的建议是少选不贪多保住基础分。两道编程题一题偏数据结构与算法链表、二叉树、动态规划这类经典题一题偏字符串处理或模拟场景题整体难度大致等于LeetCode中等偏下个别场次会出现简单题改版的组合题。只要平时坚持刷题两道题AC一道、部分用例通过另一道是完全可以做到的。最后一道简答/设计题场景是类似“如何设计一个图片缓存组件”“短视频App的Feed流卡顿如何定位和优化”“App启动时间优化怎么做”属于典型的工程实践题。这道题最拉差距但也是拿分最稳的因为它不需要你写出完美方案而是在考你有没有真实处理过这类问题有没有一套自己的排查思路。1.3 考察范围从iOS基础到工程实践我把整场笔试的知识边界归纳成一张清单备考时按这张表去复习效率会高很多模块核心知识点考察深度Swift/OC语言泛型、闭包捕获、值类型与引用类型、属性修饰符、runtime与消息转发中高频内存管理ARC规则、循环引用、weak/unowned、自动释放池、内存布局必考并发GCD队列、信号量、死锁、线程安全、RunLoop基本机制高频网络HTTP/HTTPS、TCP三次握手、DNS解析、Cookie与Session、网络库封装思路中频UIAuto Layout、事件响应链、离屏渲染、TableView/Cell复用中高频工程化启动优化、包体积优化、崩溃分析、混合开发、性能优化高频简答数据结构算法链表、二叉树、DFS/BFS、动态规划、字符串处理必考从这张表能看出来这笔试不是单纯背面试题就能过的它更看重你对iOS开发中常见问题的深度理解。特别是工程化那一行在选择题里出现的频率也在逐年增加比如“下面哪种方案能有效减少离屏渲染”“App启动时做了哪些事情会影响首屏时间”这些题目表面考概念实际考的是你有没有真正调过性能、看过Instruments的截图。2. 高频考点拆解这些题到底在考什么2.1 内存管理与引用循环必考的底层逻辑小红书笔试对内存管理的重视程度我在第一轮刷题时就感觉到了。这一块几乎每次选择、不定项都会碰到而且往往不是直接问你“ARC是什么”而是给你一段代码让你判断某个对象何时释放、或者闭包是否造成循环引用。举一个我考场上印象很深的例子一段Swift代码里A控制器持有B控制器的属性B控制器里的闭包捕获了A而A的某个属性又持有了这个闭包。表面看是典型循环引用但选项中穿插了[weak self]、[unowned self]的修饰还叠加了异步延时执行的场景。这类题如果想靠“看到闭包就加weak”的套路去猜很容易掉坑因为延时执行的闭包如果用[unowned self]对象提前释放后就会野指针崩溃。我在复盘时把内存管理的核心判断思路整理成了一个三步法先画出对象引用图谁持有了谁哪个是强引用哪个被弱化判断是否形成环从任何一个对象出发能否通过强引用回到自己再看生命周期特殊情况比如Timer、DispatchWorkItem、NotificationCenter的block观察者这些系统组件持有闭包时即使你加了[weak self]也可能出问题必须显式invalidate或移除。这种题我复习时用的方法是把Swift和OC里常见的循环引用场景全部手写一遍然后自己画引用关系图。不要只看书一定要动手写。笔试考场上你没法调试能在草稿纸上准确画图就是拿分的关键。我推荐大家重点练习几个高频场景Block作为属性被self持有、NSTimer/Timer与VC互相持有、网络请求回调捕获self、NotificationCenter observer block、WKWebView与原生交互的代理持有、第三方库或单例中的闭包持有。还有一个值得注意的考点是自动释放池。笔试里出了一个我至今记忆犹新的问题在Objective-C环境下大量临时对象被创建在for循环内部由ARC负责释放程序会不会内存激增这题的陷阱在于如果for循环内创建的对象被加入自动释放池那么它们的释放时机取决于当前RunLoop的一次循环结束而不是每一次迭代结束。如果循环体特别大、迭代次数特别多这些对象就会一直堆积在自动释放池里导致峰值内存飙升。解法是在循环体内手动添加autoreleasepool{}让局部临时对象在该作用域结束时就释放。这道题背后考的是“你以为ARC帮你管理了所有内存但实际上自动释放池的释放时机是滞后的”这个知识盲区非常考察实战经验。2.2 并发与线程安全GCD和RunLoop的实战陷阱并发模块在笔试里几乎不会缺席。单选题、不定项、甚至编程题都可能带上并发场景。我遇到的典型题包括sync与async在串行队列上的死锁问题、全局并发队列的targetQueue设置、信号量超时机制、DispatchGroup的enter/leave配对等。其中有一道题很有代表性在一个自定义串行队列里执行了queue.sync内部又调用DispatchQueue.main.sync。常规分析都会说“一定会死锁因为主队列此刻没有在处理事件”但题目选项中还设置了一个更刁钻的情况如果第一次queue.sync已经阻塞了当前线程这个线程恰好就是主线程那么主线程不可能再执行任何代码块包括主队列中的任务。所以这道题表面上考死锁其实真正考的是“队列是任务的排队机制线程是任务的执行载体两者不是一回事”这个底层概念。对于这种题我的建议是反复理解队列与线程的映射关系尤其注意全局并发队列的并发线程数量上限在Xcode 14以后引入了qualityOfService和maxConcurrentOperationCount的设置笔试可能结合OperationQueue出题DispatchBarrier在并发队列上的读写隔离作用如果错误用在串行队列效果等同于普通同步派发没有任何并发性能优势DispatchSemaphore的长期持有会导致线程挂起如果这是在主线程上操作会直接造成UI卡顿。RunLoop这块笔试考得没有GCD深但会出“Timers和RunLoop Mode”这种题。比如在UIScrollView滚动的过程中默认RunLoopMode是UITrackingRunLoopMode如果你的Timer注册在DefaultMode下滚动时就会被暂停导致定时器失灵。正确的做法是用commonModes添加或者指定RunLoop.Mode.common。这道题我做对了因为之前公司项目里有个轮播图在用户滑动时卡住当时排查半天才定位到RunLoop Mode的问题。如果你没踩过这个坑至少要记住Timer的注册方式决定了它在不同交互场景下是否还生效。2.3 网络层与HTTP从请求到优化的完整链路网络模块在整个笔试中占比中等但它的考题方向很规律基本围绕HTTP/HTTPS、TCP连接复用、DNS解析、弱网处理、网络库的封装思路这几个方向。有一道题我记得很清给你一个HTTP/2的多路复用特性问它对iOS网络请求优化有什么实际帮助同时还问了TCP连接复用和Keep-Alive的区别。这道题算是把网络基础和客户端优化串起来考如果只是单纯背“HTTP/2支持多路复用”这句话而不理解它解决了什么问题很容易选错。我在准备网络这块时建立了一条从请求发出到UI渲染的完整链路按链路去回顾每个环节的知识点DNS解析解析流程、DNS劫持风险、HTTPDNS方案在移动端可以通过预解析和缓存优化首次请求耗时TCP连接三次握手、四次挥手为什么HTTP/1.1是短连接而HTTP/2可以多路复用TCP_NODELAY的作用TLS握手HTTPS的完整握手过程证书链校验的常见失败原因在弱网环境下如何通过会话复用减少握手耗时请求发送与响应请求头的设计、图片协议、Cookie管理、重定向处理以及服务端返回后客户端的解析成本缓存策略HTTP缓存头ETag、Last-Modified、Cache-Control移动端本地缓存与请求缓存之间的协同异常处理超时策略、重试策略、数据容错、请求防重。网络这部分在笔试题里通常不会考到很偏的协议细节但会在简答题里出现比如“一个图片在弱网环境下加载很慢你会怎么排查和优化”。这时候你如果能把上面的链路讲出来再结合URLSession的配置、图片解码耗时、失败重试策略、CDN接入等具体方案就很容易得到高分。3. 从笔试看iOS开发的两大风向3.1 电池优化为什么春招笔试会考这个我在整理热搜词的时候看到“iOS开发 电池优化”挤进了榜单一开始挺意外的但转念一想这确实是这两年客户端笔试里经常出现的考察点。因为这背后隐藏的其实是iOS开发中最重要的资源管理思想不只是省电更是对CPU、内存、网络和传感器各模块的综合管理。小红书这批笔试虽然没有直接出一整道大题专门聊电池但在不定项选择题里有一道跟它密切相关的题哪些操作会明显增加App的耗电选项里包含了后台定位、持续网络请求、CPU高频调度、屏幕常亮、蓝牙扫描、推送唤醒、后台下载等。这题表面上是常识题但实际考察的是你对iOS系统资源调度机制的理解。做过iOS开发的人都知道电池优化不是直接调用某个“省电API”而是通过影响系统对App的资源分配来间接实现。比如系统检测到App长时间高频使用CPU时会通过功耗影响记录耗电情况如果App在后台持续进行高耗电操作可能被系统列入后台刷新受限名单。所以真正回答“如何做电池优化”你要从下面几个角度去思考降低CPU占用避免主线程计算密集任务、控制FPS帧率应该稳定为60帧而不是永远满帧渲染、合理使用图形渲染优化比如避免大图重复解码、避免离屏渲染优化定时器与后台任务使用beginBackgroundTask(withExpirationHandler:)能够延长后台执行时间但不能无限请求要避免在后台频繁唤醒CPUBGTaskScheduler是处理后台定时任务的正确方式控制网络开销合并小请求、使用WebSocket替代频繁短连接、批量上传日志和埋点、合理设置请求超时与重试机制定位与传感器策略连续使用startUpdatingLocation会持续唤醒GPS模块这是很多App耗电的主要来源在不需要高精度定位的页面换成startMonitoringSignificantLocationChanges或者其他降低精度的定位方式能显著降低耗电图像解码优化图片加载时要注意解码时机和缓存策略避免在主线程进行大图解码使用ImageIO进行逐步解码或缩小采样率能在保证画面清晰度的情况下大幅降低CPU和内存压力。我当时在简答题里没有直接写“每帧都控制在60帧”这种泛泛的说法而是从“我在公司项目里用Instruments观察到地图模块常驻导致耗电排到整体耗电前三位后来把地图实例做成懒加载并在地图退出时主动释放才把耗电降下来”这个角度去说。笔试阅卷老师大多也是从客户端一线出来的这种具体到定位耗电、有理有据的答案会比空谈优化策略好很多。3.2 安卓与iOS开发的区别一道经典对比题“安卓和iOS开发区别”也是热搜词里的常客这次笔试虽然没有单独成题但在不定项选择题里考到了与跨端技术相关的题目其中有一道抽象程度很高的题让我一下子想到了JVM和iOS运行时之间的差异在实际工程中的影响。安卓与iOS开发的区别面试和笔试考察的往往不是“用的语言不一样”这种表面的东西而是各自运行时的差异以及相同的需求在两端实现时为什么方案不一样。比如内存管理上Java靠GC在ART虚拟机中通过并发标记清除来回收对象OC/Swift靠ARC在编译期和运行时通过引用计数管理生命周期。这导致在编码习惯上安卓开发者不太会主动关注引用环但iOS开发者必须把weak/unowned放在敲代码的第一步后台机制上安卓的系统权限更开放虽然有Doze模式但实现后台长连接相对容易iOS的后台模式非常有限除了少数白名单能力大部分App在后台几分钟后就会被挂起。所以做跨端IM或者消息推送时两端的实现方案完全不同渲染机制上安卓的View系统直接绘制在Surface上有独立的Choreographer负责帧调度iOS的UIView基于CoreAnimation底层是CALayer的提交和渲染UI更新必须在主线程这决定了两个平台在做复杂动画时的优化思路完全不同。这类题在笔试中不一定会直接问“说说安卓和iOS开发的区别”而是通过某个具体现象来引导你思考。比如给你一段描述“同样的一个页面在安卓和iOS上表现不同安卓首帧很快但列表滑动时掉帧iOS首帧稍慢但滑动丝滑”然后让你选原因。这就是在考你对工具链和运行时差异的理解。我复习时用的方法是把两个人同一需求的代码分别写出来然后对比他们的生命周期、内存、主线程调度、布局测量时机、图片解码的过程。这个过程熟练之后笔试里遇到端侧对比题基本不用思考就能写出答案。3.3 iOS混合开发方案笔试中的新角色跨端方案是这两年客户端笔试的又一高频点尤其小红书的老板架构和客户端生态都比较复杂前端大量网页和小程序都需要嵌入到App中所以混合开发方案的考察几乎必含简答题和不定项。本次笔试最后一道简答题的背景就是一个“详情页已有Web版本如何以低成本嵌入到原生App中并保证体验”这本质上是考察你对iOS混合开发方案的整体理解。常见的iOS混合开发方案基本可以分成四类方案原理适用场景优缺点WKWebView 加载 H5页面通过前端框架打包成 HTML/JS/CSS 后由 WebView 渲染活动页、运营页、嵌入式表单开发快、动态更新强但性能和原生交互有瓶颈JSBridge 交互原生与 JS 通过桥接方法通信原生壳与 Web 页面互调需要原生能力能结合原生能力但桥接通信有性能损耗React NativeJS 视图由 Yoga 布局后映射为原生组件跨端核心业务页渲染体验接近原生但复杂动画和长列表仍有限制FlutterDart 编写自绘引擎 Skia/Impeller 渲染对跨端一致性要求高的场景高度一致性但内存占用较大与原生通信有桥接成本小程序容器自研或接入小程序 SDK通过 WebViewJSBridge 模拟原生需要运行多个小程序业务动态性强但开发复杂包体积和性能都需打磨在笔试中回答这类题不要只列方案名称要结合具体产品场景给出选型理由。我的答题结构基本是先描述业务现状一个已经存在的H5页面需要增强原生能力比如调用相机、推送、分享等再对比几个不同方案在动态性、开发成本、性能、交互能力四个维度上的优劣最终给出WKWebViewJSBridge作为初期过渡方案的结论同时预留出向RN或Flutter迁移的扩展点。这种“先分析后选型再迁移”的思路很符合大厂对客户端工程师的工程思维要求。另外如果你想体现出深度可以提到WKWebView的进程安全性在iOS 14之后WKWebView的JIT在A14平台已启用iOS 15以后多WebView实例的进程管理以及WebView导致的内存占用问题这些细节往往能成为加分项。我在写简答题时就补充了一条在WKWebView中通过WKURLSchemeHandler拦截自定义scheme的请求从而在Web页面与原生之间建立安全的通信通道避免了JSBridge大规模注入导致的维护成本和安全性问题。这个点体现了你对跨端方案底层原理的了解而不仅仅是会用WebView加载URL。4. 我的答题复盘与时间分配4.1 选择题宁可秒过也不能恋战选择题是整个笔试的节奏基石。我身边有同学在单选题上花费太多时间结果后面编程题完全不够写。我自己的策略是能15秒判断出答案的题直接过需要画图推导的题最多给3分钟超时蒙一个先提交。这不是摆烂而是取舍。因为选择题的分值占比有限而编程题一道题的得分通常等同于六七道选择题为了选择题丢编程题完全不划算。具体操作上我做选择题时的习惯是先扫一遍所有题把一眼能看出答案的快速标记把需要计算的题统一放在后面做。这样可以确保所有简单分都拿到手再集中精力处理硬骨头。对于记忆模糊的题使用排除法能大幅提高命中率。比如某道题问“下面哪种方式不适合在子线程更新UI”选项里如果有DispatchQueue.main.async、OperationQueue.main.addOperation、DispatchQueue.global().sync那DispatchQueue.global().sync通常就是正确答案因为它是同步派发到全局队列而UI更新需要在主线程。这种基于选项对比的分析方式比翻书找原话更可靠。4.2 算法题30分钟一题的操作策略两道编程题我实际完成情况是第一道链表相关题AC通过第二道字符串处理题只过了部分用例。复盘下来这个结果跟我平时刷题习惯有直接关系。我平时练习LeetCode时链表、二叉树这类经典题刷得比较扎实每题都能15分钟内写出题解但字符串处理题我练得少导致考场上一紧张边界条件处理不完整导致部分用例超时或溢出。分享一个针对笔试编程题的30分钟操作节奏前5分钟读完题目后先不急着写代码手动模拟一遍示例确认题意无误。如果示例有歧义按最常规的理解处理并在注释里标注假设。中间15分钟搭建整体框架优先保证代码能跑通常见情况不要一上来就考虑所有边界。写出主体逻辑后立刻提交一遍拿部分分。最后10分钟针对特殊用例补边界数组空、1个元素、整数溢出、字符串包含空格、字符大小写等。这10分钟往往是AC和部分用例的分水岭。对于第二道字符串题我复盘时发现主要问题不是思路不对而是对Swift的字符串索引操作不够熟练。Swift的String不是随机访问容器直接用下标遍历字符在性能上也有隐患。正确做法是把它转成Array(characters)或者用String.Index管理位置。这个坑平时在LeetCode上用Swift刷题一定会遇到所以我的建议是准备笔试阶段就固定一门语言进行算法训练比如我是用Swift千万别今天用C明天用Swift否则到考场上你连API都记不熟练。4.3 简答题与设计题怎么把半懂的题写出得分点最后一道简答题的题干通常是一个很开放的问题没有标准答案但存在明显的档次区分。我和几个同样上岸的同学交流后发现阅卷老师最看重的反而不是方案覆盖得多全而是有没有真的想过这个问题的边界条件和取舍逻辑。比如考“如何设计一个图片缓存组件”低分答案大概是“两级缓存内存磁盘磁盘用文件存。”这种答法太单薄。高分答案应该是先明确组件边界这个缓存组件服务于哪些场景是仅用于列表图片还是包含大图、长图、GIF、WebP不同场景决定Cache策略差异很大设计内存缓存基于NSCache或自定义LRU控制内存缓存条数上限和总字节上限何时响应UIApplicationDidReceiveMemoryWarningNotification进行清理设计磁盘缓存保存路径、文件命名建议用URL的MD5、写入方式异步写、批量写以及磁盘配额清理策略按最后访问时间排序解码与解码线程存放的是原图数据还是解码后的位图解码放在子线程还是主线程缓存一致性当服务端图片更新后如何失效如何支持按版本号刷新。我当时把公司项目中一套基于YYImage二次开发的组件设计经历了进去写出了“内存缓存用的是NSCache 自定义淘汰策略磁盘缓存直接使用文件系统图片解码在子线程并通过回调回到主线程渲染”这样具体的方案。笔试的简答不用长篇大论但每句都要体现“我干过”的效果纯理论堆叠很难拿高分。5. 常见问题与避坑实录5.1 笔试前的准备清单结合我踩过和看别人踩过的坑整理了一份针对大厂客户端岗笔试的装备清单事项建议原因电脑操作系统提前确认平台对macOS/Windows的支持情况有些线上笔试平台对浏览器版本和系统版本有限制临时换设备很麻烦浏览器使用Chrome/Edge稳定版关闭插件防止广告拦截、翻译插件干扰编辑器网络准备一个备用网络手机热点笔试过程中断网基本等于白考IDE本地装好Xcode或VS Code并配好Swift环境平台自带的编辑器补全很弱本地跑通用例再粘贴更稳草稿纸准备一叠A4草稿纸和两支笔内存引用图、链表指向、动态规划状态转移都得手绘时间提前10分钟进入笔试等待页面防止人脸识别、麦克风调试等流程耗时其中本地Swift环境我觉得最关键。虽然笔试平台支持多语言但实际做算法题时平台的Debug能力非常有限你甚至可能看不到标准输出。我当时的做法是在本地Xcode里用Command Line Tool工程提前跑一遍所有用例跑通后再把代码复制到笔试编辑器里提交。这个流程能省掉无数次在线调试的等待时间。5.2 做题时最容易犯的错5.2.1 在不确定的题上花太多时间这是我考试时想克制但没完全克制的毛病。不定项选择里有道题我明明不确定是选两个还是选三个选项还是在那里反复推理最后用掉6分钟纯粹是浪费。正确做法是根据知识储备和出题人意图去排除能排除两个就只选一个最确定的答案。不定项选择少选有部分分乱选一分没有所以不确定时就果断选你认为最稳的那个。5.2.2 编程题没先看数据范围第二道编程题我部分用例没过之后复盘发现很大原因是没认真看数据范围。题目给的字符串长度上限是10的5次方我直接用了O(n^2)的暴力法超时在所难免。如果我先看数据范围就能更快想到使用前缀和或双指针优化。这里要养成一个肌肉记忆拿到编程题至少花30秒看数据范围这是选算法思路的第一步。5.2.3 简答题只列点不展开很多同学写简答题时习惯写“使用LRU缓存”“使用子线程解码”这种一行一个点以为答全了就能拿高分。但实际上阅卷老师看的是“你会不会做”而不是“你知道多少名词”。如果你只写“使用LRU缓存”老师没法判断你是不是真的理解LRU还是只是听过这个词。所以简答题要写出具体到场景的实现方式比如“内存缓存采用双向链表哈希表实现LRU当缓存条目超过200条时淘汰最久未使用的记录”。5.3 从笔试到面试考完还能做什么笔试考完到收到面试通知之间往往有几天到一周的空窗期这个时间千万别干等。我强烈建议做两件事第一立刻复盘笔试中卡壳的知识点。不要因为笔试已经结束就松气因为笔试和面试的知识面高度重合。我当时笔试一道RunLoop题没答好回家后立刻把那套RunLoop Mode、Source0/Source1、Timer与Mode的关系全部重新学了一遍并且对照公司项目代码分析了实际触发时机。结果两周后的面试真就问到了部分相关话题我能对上就是靠这个空窗期的补救。第二基于笔试的简答/设计题尝试扩展出一套完整的项目方案。比如笔试考了图片缓存你回去后可以顺手把一套完整图片缓存组件的接口设计、存储策略、淘汰策略、并发控制写成设计文档。这套文档本身就是简历上一个可以展示的素材。另外一个容易忽略的点是小红书笔试一般在官网投递之后会自动发送笔试链接要记得查收邮件和官网站内信。有些同学的邮箱会把这类邮件放到垃圾箱错过了笔试时间就非常可惜。笔试这关说到底是时间管理和知识广度的双重考验。我参加完这次笔试最大的感触是基础知识的掌握程度决定了你能答得多快工程经验的积累决定了你的简答题能不能写得让阅卷老师眼前一亮。如果你离笔试还有几周每天保持刷两道算法题花一小时过一遍iOS内存管理、并发、网络、混合开发的知识框架再结合一些真实项目的排查案例做整理效果一定比临时抱佛脚好很多。希望这篇复盘能帮到你。后续如果收到面试通知我会再整理一篇关于面试准备的经验分享。
返回列表