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

资讯详情

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

iOS工程师能力评估:从基础到架构的九维实战衡量框架

iOS工程师能力评估:从基础到架构的九维实战衡量框架 做了几年iOS一线开发也陆陆续续参与过不少团队的技术面试和人才评估我发现很多团队在“评测一个iOS工程师到底行不行”这件事上其实是很粗糙的。要么是拿着网上的面试题让人背一轮八股要么是让候选人做个自我介绍然后凭感觉打分。结果就是看起来很厉害的人入职后连个简单的内存泄漏都查不明白而一些平时不太显山露水的工程师反而能在项目关键时刻把性能瓶颈和系统兼容性问题解决得干净利落。这篇文章我想从一个长期做iOS开发、也长期参与技术评估的人的角度系统聊聊“iOS工程师能力评估”这个话题。它适合什么人看一类是技术管理者、iOS团队负责人需要搭一套靠谱的评估方案另一类是正在准备跳槽、想自我评估的iOS开发者可以用这套框架对着看看自己到底处在什么水平。整篇文章只有一个目的把“iOS工程师能力”这件事从模糊的直觉变成可拆解、可衡量、可复用的方法论顺便把这些年我在评估中踩过的坑和总结的经验一次说清楚。1. 为什么需要一套系统的iOS工程师能力评估先说一个我自己的观察很多团队在招聘或晋升iOS工程师时最常犯的错误是把“面试表现”等同于“工作能力”。一个候选人在面试中能流利背出strong和weak的区别不代表他能在一套复杂业务里正确处理对象生命周期一个工程师能熟练使用Xcode不代表他能分析线上崩溃日志并定位到具体模块。能力评估的本质是预测“这个人放到真实项目里能不能解决问题”。要做到这一点靠几道零散的技术题是不够的。iOS开发涉及的东西太杂了语言功底、系统框架、UI构建、工程化工具、性能优化、网络调试、上架发布每一个方向都能挖得很深每一个方向也都能藏住真实的短板。我比较推荐的做法是先建立一套能力模型把“iOS工程师能力”拆成几个相互独立、可以单独打分的维度再针对每一个维度设计对应的考察手段包括简历筛选、笔试、面试追问、实机操作、项目复盘最后用一套统一的评分标准做汇总而不是靠某个面试官的“我觉得”。这套思路是我在实际带团队时反复调整过的下面把每一层拆开讲。1.1 评估的真正目标不是筛选“题库型选手”市面上有大量“iOS面试题合集”背熟它们确实能通过不少面试。但这恰好说明只考知识点问答的评估体系是失败的。一个合格的评估方案应该让“会背题但不会干活”的人没机会蒙混过关。举个例子。你问“iOS内存管理的方式有哪些”候选人答“ARC、引用计数、weak、autoreleasepool”这只能说明他记过概念。你换成“请描述一下一个block里使用self时为什么可能造成循环引用在什么场景下不会循环引用怎么验证你的结论”这就能把背题的人和真正理解对象生命周期的人区分开。如果继续追问“用Instruments的Leaks工具发现不了循环引用时你会怎么做”考察的就是实战排障能力了。所以我强调的能力评估不是简单列一张问题清单而是一套组合拳概念题看知识面场景题看理解深度实操作看动手能力项目复盘看工程习惯。1.2 评估体系要覆盖“开发-调试-发布”全链路很多团队的评估范围只覆盖到“写代码”这是远远不够的。一个完整的iOS工程师能力画像至少应该覆盖三个大阶段开发阶段、调试优化阶段、发布运维阶段。开发阶段看的是语言功底、系统框架理解、UI构建能力和架构设计水平调试优化阶段看的是能不能用工具定位崩溃、内存泄漏、卡顿、网络异常发布运维阶段看的是懂不懂证书机制、上架流程、审核规范、线上问题监控。这三个阶段缺任何一个都意味着工程师在真实项目中会存在盲区。我见过不少开发能力很强的人一提到描述文件过期、打包报错、审核被拒就完全懵了这种人在小团队里会非常拖节奏。2. 能力模型总览把“iOS工程师”拆成九个可度量维度既然要系统评估第一步就是拆维度。我常年使用的模型一共九个维度覆盖了iOS工程师从初级到高级成长路径上的主要能力项。2.1 九个维度分别是什么维度核心考察内容对应能力层级语言基础OC/Swift语法、内存管理、泛型、协议、扩展初级到高级系统框架UIKit、Foundation、Core Bluetooth、多任务、后台机制初中级到架构师UI与交互自动布局、UIStackView、动画、响应链、SwiftUI初中级到高级并发编程GCD、OperationQueue、async/await、线程安全中高级工程化工具Xcode、CocoaPods/SPM、调试器、模拟器、证书初中级到高级性能优化启动、卡顿、内存、功耗、网络优化高级架构设计MVC/MVVM/VIPER、组件化、模块解耦高级到架构师调试排障崩溃分析、抓包、日志、Instruments中高级上架与合规App Store Connect、审核、签名、版本管理中级到高级这九个维度不是平行的它们之间有依赖关系。语言基础和系统框架是地基UI、并发、工具链是日常开发用得最多的部分性能和架构决定了一个人的天花板调试和上架能力则决定了他能否独立扛起一条业务线。2.2 不同职级的考察重点差异初级工程师1-3年重点看前三四个维度语言基础、UIKit、自动布局、基本的网络调试。这个阶段不苛求架构能力但要能独立完成一个页面、一个模块的开发。中级工程师3-5年要在前面基础上加上并发编程的正确性、性能问题的基本排查、组件化思想、独立处理证书打包上架。这个阶段的人应该能牵头一个完整功能从开发到上线。高级工程师5年以上要重点考察架构设计能力、复杂问题的系统性拆解、性能优化经验、以及对系统底层机制的理解深度。这个阶段的人不只是“会写”还要能“选型”和“定规范”。2.3 评估手段的组合方式单一评估手段必然有盲区。笔试适合摸底知识面面试追问适合考察理解深度实机操作适合考察动手和排障能力项目经历复盘适合考察真实工程经验和思考习惯。我的建议比例是笔试/机试占30%技术面试追问占50%项目复盘和个人陈述占20%。为什么面试追问占比最高因为只有通过连续的追问才能区分一个人是记住了结论还是理解了原理。比如候选人说“我用过组件化”你一定要追问为什么拆怎么拆拆完依赖怎么管理如果组件间要通信怎么办这种追个三四层真实水平就出来了。3. 基础语言与内存管理评估语言功底是iOS工程师的底线。无论Swift UI发展多快存量代码里大量Objective-C依然存在所以我对工程师的基本要求是至少深入掌握一门iOS开发语言同时能读懂另一门。3.1 Objective-C与Swift双重功底怎么考察现在不少人一上来就只写Swift对OC的历史包袱缺乏理解。但现实是很多公司的核心业务代码依然是OC或OC/Swift混编。评估时我一般会问三个层次的问题。第一个层次语法特性。比如OC里的dynamic和synthesize有什么区别Swift里的struct和class在设计上分别适合什么场景。这些是基础。第二个层次两种语言互操作。OC代码怎么调用Swift的类Swift怎么继承OC的类为什么有时候要在Swift类前加objc混编工程里为什么会有“伞文件”和#import兼容写法这一层能筛掉很多只会写单语言的人。第三个层次语言特性背后的设计意图。比如Swift的protocol和OC的protocol在类型系统里的角色差异extension给Swift带来了OC里做不到的协议默认实现能力这种差异如何影响架构。问到这里基本能看出一个人是三年经验还是十年经验。3.2 内存管理与引用循环内存管理是iOS面试必考但考法很关键。我不会直接问“什么是引用计数”而是给一个场景一个ViewController持有一个block属性block内部使用了self这个ViewController被pop掉后会不会释放为什么会的话需要什么条件不会的话怎么解决这个问题能延伸出很多维度weak和strong在block捕获列表里的作用[weak self]和[unowned self]的区别什么时候用unowned是安全的什么时候即使写了[weak self]依然会泄漏。回答过程中如果候选人主动提到Timer的target持有、delegate应不应该用weak、NSTimer在block模式下如何避免循环引用那他在内存管理这块基本是过关的。实机验证环节可以考得更硬核给他一个发生了循环引用的Demo工程限时20分钟要求用Xcode的Memory Graph找到循环引用链路指出是哪两个对象互相持有并给出修复方案。能顺利完成的人在真实项目中处理内存问题基本不用太担心。3.3 并发与RunLoop很多工程师的隐形天花板并发能力是区分中级和高级工程师的一个明显分水岭。我常问的一道题是“你在主线程里同步dispatch_sync到主队列会发生什么为什么”能一口说出“死锁”并解释清楚的人说明对GCD队列和线程关系有基本认识。再深入一层dispatch_once标记在什么场景下使用DispatchWorkItem如何取消OperationQueue和GCD的差异在哪里Swift并发里actor是怎么解决数据竞争的这些问题没有真实并发场景经验的人是答不透的。RunLoop的考查要更偏原理。我常让候选人解释iOS的滑动事件、Timer、performSelector和RunLoop是什么关系为什么把Timer添加到一个滚动中的ScrollView上Timer会卡顿怎么让Timer在滚动时依然稳定触发这个问题的答案涉及RunLoop的mode切换能讲清楚的人对系统的理解通常不会差。4. 系统框架与UI能力评估这一部分是iOS工程师的“主战场”。系统框架理解得深不深直接决定了一个人能不能充分用好iOS平台的能力而不是只会套第三方库。4.1 UIKit核心机制UIStackView、自动布局与响应链先说UIStackView。这几年StackView在复杂布局里的作用越来越重要但很多人只把它当成一个“纵向或横向排几个按钮”的容器。真正的考察点在于StackView如何配合content hugging priority和compression resistance priority处理尺寸变化它的内部约束是怎么自动生成的为什么有时候StackView在UITableViewCell里会出现约束警告自动布局是另一个重头。我常问两个并排的UILabel一个text长一个text短怎么保证不互相挤压且能自适应换行这个问题要答好需要理解setContentHuggingPriority和setContentCompressionResistancePriority还要知道intrinsicContentSize的概念。能讲清楚这些说明这个人在iOS 11到iOS 17的适配中真正踩过坑。响应链机制也不该被忽略。比如“点击一个按钮事件是怎么从屏幕传到button的action的”这个问题涉及hitTest、触摸事件、UIResponder链条。候选人如果连hitTest都没听说过那他对UIKit的理解大概率停留在了API调用层面。4.2 系统能力评估分屏、蓝牙、后台任务iOS的多任务分屏是很多工程师的盲区。iPad上从iOS 9开始支持Slide Over和Split ViewiOS 11之后又引入了Drag and Drop很多工程师做iPhone开发时从不关注。但评估时可以问你的App如果要在iPad上支持分屏需要处理哪些生命周期和尺寸变化viewWillTransitionToSize、traitCollectionDidChange这些方法在分屏场景下什么时候被调用能答上来的人说明做过真正的iPad适配。蓝牙也是iOS开发里一个极具门槛的领域。我常问的一个问题是“CBCentralManager的系统级蓝牙状态和App级蓝牙权限状态能区分出来吗”准确答案是CBCentralManager的state属性返回的是系统的蓝牙开关状态而App是否有权使用蓝牙要看CBManagerAuthorization。这两者是不同维度的状态。很多人一上来就混为一谈导致权限弹窗逻辑判断错误。能把这个答清楚的人在IoT类App的实际开发里通常是有经验的。BLE连接参数规范也是实测高频问题连接间隔、从机延迟、超时时间怎么设置既省电又稳定这些参数在蓝牙4.0到5.0之间变化巨大也是一般面试题不会覆盖的深度细节。4.3 多任务与App间通信App间通信的方式在iOS生态里已经演进了很多轮URL Scheme最老Universal Links是现代推荐方案App Group用于同团队App之间的共享数据。我常让候选人对比这几者的差异和适用场景。比如为什么支付宝和微信的跳转现在更推荐Universal Links因为可以避免canOpenURL白名单限制同时如果安装了App就唤起App没安装则可以降级到网页。UIApplication.shared.setAlternateIconName这个方法代表的是动态更换App图标的能力。iOS 10.3以后支持在运行时切换App图标但系统会在切换时弹出确认框。很多开发者第一次接入时会发现这个弹框“控制不了”实际上这是系统级确认框App无法跳过这是苹果出于安全和防误导考虑的设计。从评估角度看考察候选人是否知道这类系统能力的存在、边界在哪里能看出他对iOS系统的了解深度。5. 工程化与工具链能力评估哪怕写代码再厉害如果连打包、签名、调试工具都用不顺在真实的交付链条里就是一颗定时炸弹。工程化能力是我在评估时相当看重的一个板块。5.1 Xcode环境与开发者模式的隐性门槛Xcode本身就是一个庞大的工具链。评估时可以考察候选人是否知道Xcode账号、证书、描述文件三者间的关系是否遇到过iOS 16之后“开发者模式”弹窗为什么新设备使用个人开发证书调试时需要在设置里开启Developer Mode这看起来是小事但很多跨端开发者在打包uni-app或React Native时会被这个“开发者模式”卡上半天。系统从iOS 16开始对未开启开发者模式的设备Xcode直接跑不起来应用。能独立解决这类环境问题的工程师在团队里的价值比看起来更大。5.2 模拟器与真机调试模拟器评估点在于模拟器有哪些不能模拟的能力比如定位可以模拟但“真实GPS接收行为”“气压计”“蓝牙扫描的具体信号强度变化”这些模拟器做不到。我见过有候选人拿着模拟器做蓝牙调试折腾半天发现模拟器根本不支持完整的CoreBluetooth外设发现流程。真机调试的考察点则在于证书信任、授权弹窗、NSLocationAlwaysUsageDescription这类描述文件的配置、以及各种系统弹窗对调试的影响。还有一个经典问题“模拟器和真机上keyWindow有什么差异为什么使用UIApplication.shared.windows取关键窗口时在iOS 13以后会拿到多个scene窗口”这个坑在多人协作开发中经常出现。5.3 证书、签名与描述文件机制证书机制是iOS生态特有的也是很多工程师的痛点。评估时我一般会问开发证书和发布证书的区别是什么开发描述文件和发布描述文件的区别是什么为什么App ID要配置Capabilities配置错了会导致什么结果进阶问题是.p12证书文件是什么为什么有时候换了电脑需要重新导入证书iOS 11.0及以上这种部署目标指的是什么它和Xcode的Base SDK有什么不同这里再延伸一下还可以考察codesign命令行的使用手动签名一个重签名IPA需要哪几个步骤embedded.mobileprovision文件在IPA里是什么角色能完整回答的人在上线环节通常不会给团队埋雷。5.4 抓包与网络调试能力Charles是最常用的抓包工具但很多人只会点一下“Start Recording”。评估时可以问为什么第一次用Charles抓HTTPS包iOS端会看到证书不受信任怎么解决Charles的SSL Proxying原理是什么安装了Charles根证书后为什么App里的某些请求还是看不到更进一步如果App使用了证书锁定SSL PinningCharles默认抓包会失败要怎么做这个问题的答案涉及绕过证书锁定的方式但在面试时可以只讨论原理和判断方法不鼓励非法操作。能从容回答这些问题的工程师在处理线上问题和接口联调时效率会高出很多。6. 性能优化与系统资源评估性能优化是最能拉开“平庸工程师”和“优秀工程师”差距的领域。它对经验的依赖极高光靠看书看文档很难积累起来。6.1 启动速度与流畅度评估我常拿“App冷启动优化”当评估题。从点击图标到用户看到首屏中间经历了什么一个完整的回答至少要包括main()函数之前的dyld加载、Framework加载、OC runtime初始化、load方法执行再到main()之后的首屏渲染。候选人如果说不出pre-main阶段这个概念那他基本没有做过启动优化。再往下追问如何测量pre-main耗时DYLD_PRINT_STATISTICS环境变量有没有用过启动时执行了太多load会有什么后果main函数的启动时间怎么统计我见过不少候选人说“用Instruments里的Time Profiler”但问他怎么从组织维度看启动耗时分布时就答不上来了。流畅度考察同样是经典一关。掉帧是什么CADisplayLink和CATransaction有什么关系怎么用Instruments里的Core Animation工具查看掉帧位置tableView滑动卡顿的常见原因有哪些cell的层级过深、layer.cornerRadius大量使用、离屏渲染这些常见的坑有没有踩过6.2 内存与电池优化线上问题的高发区内存优化不能只谈“避免循环引用”。我会问App在低内存下的didReceiveMemoryWarning回调之后系统是怎么处理App的malloc分配的内存和autoreleasepool里的临时对象在内存压力下的表现有什么不同如何在设备端检查内存占用使用MLeaksFinder这类工具时它的原理是什么电池优化是iOS开发里一个相对冷门但越来越重要的方向。评估时可以考察如何降低App的耗电一个比较完整的答案应该包含定位服务的采集频率和精度管理kCLLocationAccuracyBest和kCLLocationAccuracyHundredMeters差异很大、后台刷新策略、定时器的频率和唤醒次数、网络请求的批量合并。我还会追问一个实际场景“一个地图类App在App进入后台后如果还要持续获取位置应该启用哪种Info.plist配置同时怎么避免系统频繁弹窗”能回答出后台定位模式以及allowsBackgroundLocationUpdates配置的人是真的做过定位类应用的。6.3 功耗敏感场景从系统设计角度看优化功耗优化里有一个很经典的考察点为什么iOS系统不允许App在后台做无限期的CPU任务beginBackgroundTask可以申请多长时间在iOS 7以后这个时间到了之后会发生什么如果App还在做网络下载应该用URLSession的background会话配置还是beginBackgroundTask这些问题的答案不是靠背而是靠真实踩坑。我在带团队时发现凡是做过即时通讯类App的人对后台保活的机制普遍比其他方向的工程师理解深很多。因为他们必须处理“App退到后台但消息要到达”这个真实需求。7. 架构设计与混合开发评估架构能力是高级工程师的核心竞争力。它不太容易用一道题来测更适合通过项目复盘和场景设计来考察。7.1 架构模式不只考名词解释问“MVVM和MVC有什么区别”是没多大意义的网上能搜到一堆定义。我会换一种问法“一个页面里有列表、有筛选条件、有分页加载你是Controller怎么组织代码如果页面变复杂了你会怎么拆”让候选人给出他实际会写的代码结构再追问ViewModel里的数据逻辑怎么复用网络请求的状态加载中、成功、失败、空数据放在哪里管理UI状态变化是用Delegate还是用闭包还是用响应式绑定这一轮下来他对架构的理解就到什么水平基本清楚了。VIPER、Clean Architecture之类更重的模式不要求所有候选人都会但高级工程师应该能说出它们的优缺点和在什么规模的团队里值得引入。如果候选人一上来就说“VIPER文件太多了不好用”但又说不清什么场景下才合适那多半是没想过权衡。7.2 iOS混合开发与跨端方案的评估uniapp打包iOS测试包、React Native、Flutter和原生混编这些是当下很多产品的现实。评估时我会看两点第一候选人是否理解混合开发里的“桥接”原理第二他有没有出现过跨端项目在iOS上特有的问题。比如uniapp打包成iOS App后如果使用了uni-push推送云打包时配置了uni-push功能但推送证书异常云端就很容易返回“当前应用打包时配置了iOS uni-push功能但uni-push未配置”的错误。这种报错信息非常误导人很多人会以为是代码问题。实际上它往往指向的是.p12推送证书类型选择错误或描述文件没有包含Push Notifications能力。评估时用这类真实的跨端疑难杂症来考比问“你和原生开发的区别是什么”有价值得多。再比如WKWebView里加载本地图片在uniapp的webview里iOS端和Android端表现就不一样。iOS的WKWebView对本地文件读取有严格的目录隔离直接用file://可能无法读取应用沙盒里的资源需要处理WKURLSchemeHandler或改用base64数据流。能对这类平台差异了如指掌的人说明他真的做过混合开发。7.3 组件化与模块化大团队协作的必备技能组件化考察的核心是依赖管理思想。比如用CocoaPods私有仓库做组件化时一个通用组件需要包含哪些内容一个业务组件如何引用另一个业务组件而不产生耦合组件之间通信方案的优劣pod lib create流程熟不熟use_frameworks!和静态库的差异是什么我还会追问实际案例“一个主工程里集成20多个私有Pod仓库每次pod install要跑5分钟怎么做优化”能回答出cocoapods的prebuilt方案、二进制化、Code Snippet或XCFramework的人基本上是有过真实组件化工程经验的。8. 上线发布与合规评估上线发布是iOS开发里最“项目化”的环节也是很多工程师最陌生的环节。一个能力全面的iOS工程师应该对整个上架链路有清晰认知。8.1 上架流程全链路考察从Xcode打包到App Store Connect提交再到最终过审中间每一步都有坑。评估时我会问Archive之后Export成什么类型的包有什么区别Ad Hoc和App Store Connect分发有什么区别TestFlight内测和App Store审核的构建版本为什么不能共用证书配置在苹果开发者后台里的逻辑也是一大考点为什么有时候在App Store Connect里看不到刚上传的构建版本很可能是Info.plist的CFBundleShortVersionString或CFBundleVersion和上一次提交版本冲突了。这种问题没有实际提审经验的人根本不会往这个方向想。8.2 审核被拒与加急审核苹果审核指南非常细常见被拒原因包括使用私有API、IPv6网络兼容性差、涉及用户隐私而没有提供隐私政策、App功能不完整、甚至启动页存在误导性信息。评估时可以让候选人列举他曾经遇到过的被拒案例审核反馈原文是什么他是怎么解决的。这个问题的答案几乎不可能靠背题只能靠真实经验。加急审核是一个相对边缘但实用的知识点。当线上出现严重崩溃或者必须临时发布合规声明时可以申请加急审核。我记得苹果官方的加速审核入口是在App Store Connect的“联系我们”里选“App加速审核”必须在请求里说明合理的业务理由。很多候选人知道加急审核存在但不知道具体流程和申请条件能答出来的基本就是真上过线的。9. 实操考核一场四小时的现场评估设计光靠面试问答远远不够我强烈建议在实际评估中加入实操环节。下面分享一套我实践过多次、效果很好的四小时现场考核方案。9.1 第一小时代码笔试与资源排查给候选人一个提前准备的项目工程里面故意埋入几个常见问题一个循环引用导致的界面卡死一个UIStackView在自动布局中的constraint冲突一个在iOS 15和iOS 16上表现不一致的UIApplication生命周期问题一个因证书配置缺失导致push无法配置的问题要求候选人在一小时内定位并修复同时用文字说明根因。这一轮很能考察真实排障能力。我们在实际考核中能完成的候选人比例大约只有30%。9.2 第二小时项目复盘深挖让候选人带一个自己做过的模块或App我们用“追问倒查法”来抓真实度。比如候选人说“我用MVVM架构写了这个页面”追问“那ViewModel和View的数据绑定是你手写的还是用了框架”“如果列表接口返回的数据异常你的ViewModel怎么处理Error状态”“这个页面如果需要复用你怎么抽公共逻辑”如果候选人答得越来越流畅说明他确实做过如果前后矛盾、支支吾吾大概率是包装出来的。9.3 第三至四小时实机任务有条件的话准备一台真机让候选人完成一个指定的小需求。比如“实现一个支持分屏自适应的页面包含一个列表和一个详情区域列表数据的网络请求用原生URLSession实现”。观察点包括遇到报错怎么查、有没有利用断点、怎么获取设备日志、编码习惯是否规范。这个环节能覆盖前面面试可能遗漏的工程习惯和抗压能力。我在实际评估中发现有些人面试时口若悬河一到机器前就反复commandR碰运气连基本的断点调试都手忙脚乱这种情况就可以直接降级评估了。10. 常见评估误判与避坑清单最后我想专门聊聊评估者自己容易踩的坑。这些坑我基本都踩过写出来算是帮后来人省点学费。10.1 警惕“会背题”和“会做项目”的错位我面试过一个候选人能把kVC、KVO的实现原理、isa-swizzling说得头头是道但问他“在项目中为什么用KVO而不用delegate有没有实际写过KVO的触发时序问题”他沉默了。这种“理论很强、场景为零”的人在真实需求里很难落地。缓解办法是每个知识点考点都绑定一个场景。凡是候选人能背出名词但不能给出真实项目案例的一律打折看待。真正的加分项是“我们在某某项目中遇到过类似问题当时的排查过程是这样的”。10.2 职级错配是否定错了评估基准有些团队招聘高级工程师却用中级工程师的标准去考结果招进来一个基础扎实但缺乏架构视野的开发。有些人招中级却偏偏拿高级要求的“组件化性能极致优化”去卡结果错失了不少潜力型选手。我建议在评估开始前先明确这个岗位的核心挑战是什么。如果团队现在最需要的是把一个新的业务模块快速做出来那就不该拿“架构是否优雅”作为首要指标如果团队在做大型App的基础架构改造那考察重点确实要放到架构、组件化、性能这些方向。评估体系是为人服务的不是反过来。10.3 忽略软素质和协作能力iOS工程师不是孤军奋战他每天都在和产品、UI、后端、测试协作。评估时至少需要观察两三个方面当产品经理给了一个不合理但仍要上线的需求时候选人怎么平衡实现成本和交付质量。当和后端联调发现接口字段缺失时他会不会主动推动后端修正还是自己硬编码绕过。当测试提了一个他认为是“误报”的Bug时他是先反驳还是先复现验证。这些细节很难通过技术题看出来。我的办法是在项目复盘环节穿插问“你最近一次和产品经理冲突是什么事怎么解决的”候选人讲出来的处理方式往往比任何技术题更能反映他的真实协作成熟度。在我的经验里一个真正优秀的iOS工程师评估到最后给人的感觉不是“什么都能答上来”而是“每个能答上来的东西都有真实踩坑的痕迹”。技术栈可以学系统版本会变但那种把问题追到根因、把方案落到实处的习惯才是能力评估中最该被识别和珍视的东西。
返回列表