13

面试小记

 4 years ago
source link: http://www.shavekevin.com/2019/12/05/2019-mian-shi-xiao-ji/?
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

最近面试了几个公司,现在把面试问题总结了一下,权当是对工作这几年的记录总结吧,查漏补缺。

面试-A公司

1.面试题

  • 如果要你设计一个复杂页面你会怎么处理?
  • 谈谈你对模块化和组件化的看法。他们有哪些优势和缺点。如何做到解耦。
  • 你认为NSDictionary是怎么实现的?
  • 为什么会产生卡顿,什么是离屏渲染?为什么会产生离屏渲染?
  • NStimer和cgd的定时器有什么区别,为什么说NSTimer的定时器是不准确的。还有什么方式来实现定时器
  • iOS开发中都有哪些锁,有什么区别。@synchronized 这个锁里有一个参数self。有什么用,如果它被释放了有什么后果,可不可以是其他对象,为什么?
  • 启动优化有哪些?
  • 如何让你实现一个addobserver你会怎么设计。有哪些需要注意的点(生成的新类是强引用还是弱引用)开源库kvoviewcontroller以及rac的addobserve是如何做到不产生循环引用的
  • 如果任务a依赖于任务b和c的执行,你怎么处理
  • 你对flutter和RN有什么看法
  • 性能优化你做了哪些工作
  • socket和tcp udp有什么区别,socket原理是什么,socket在app之间传输用的什么。引申到http如何使用长连接 keep-alive的使用。
  • gcd的底层实现。我们能开辟的最大线程数是多少?默认值是多少?
  • gcd中的notify和barrier有什么区别

2.算法题

  • 如何判断两个树是否相等
  • 我们在统计过程中需要知道一个VC上有多少个子view 你怎么处理?用算法实现。

3.小细节

  • setobject:forkey key除了用字符串能用对象吗?

面试题-B公司

  • 谈谈你对事件响应机制的看法
  • 内存相关
    • 谈谈你对内存管理的看法
    • arc下能否自己控制对象的生命周期
    • coreFoundation中我们用__bridge来处理与oc之间的转换为什么呢?结构体中为什么不能使用oc对象,为什么?
  • 多线程问题
    • 开发过程中你遇到过哪些线程的问题,你是怎么解决的?
  • 锁相关
    • iOS开发中有哪些锁?他们有哪些应用场景?他们有什么区别?
  • 循环引用问题
    • 循环引用是如何产生的?你是怎么解决的?你是怎么检测循环引用的?如果用第三方工具 请简述其原理
  • 性能优化相关
    • 为什么会产生离屏渲染?为什么圆角会产生离屏渲染 怎么检测 所有的UI都会产生离屏渲染吗?为什么?
    • 如何设计出一个复杂的页面?
    • 使用autolayout是否会造成卡顿,为什么?怎么解决?
    • 你是怎么做性能优化的?
    • 项目中单例多吗?单例过多的话你怎么处理?
    • 包瘦身是怎么做的?比如删除无用图片 压缩图片以及删除无用文件
      • 怎么删除无用文件的?怎么判断方法是否使用以及类是否使用
    • mach-o是干嘛用的?
    • bitcode是做什么的?
    • 假设你使用的是友盟,友盟是怎么根据我们的崩溃信息定位到崩溃代码位置的?
  • 模块化 组件化问题
    • 项目为什么使用模块化 组件化 他们有什么不同,有什么优缺点
  • apns相关
    • 你了解过第三方推送吗?第三方例如极光是怎么实现消息推送的?应用杀死的时候和应用处于后台以及前台的时候,传输方式有什么不同?apns和socket有什么不同?
  • runloop和runtime相关
    • runloop的启动以及退出方式有哪些?
    • 谈谈你对runtime和runloop的理解。
  • 定时器相关
    • NSTimer为什么是不准确的?你还知道哪些定时器?他们的各自使用场景有哪些?
  • jpg和png有什么区别?
  • 网络相关
    • http和https有什么不同 他们是怎么建立起链接的?
    • tcp 和udp有什么不同
    • 抓包的原理是什么?如何避免自己的app不被别人抓包
    • 谈谈你对socket有什么看法
    • 假如app由登录模式变为游客模式,如何取消登录模式下的请求或任务,你有什么方案?
  • 底层原理相关
    • 你有没有看过gcd的源码,谈谈你对gcdglobal的看法
    • 如果让你实现一个kvo你怎么实现?有哪些需要注意的点。第三方开源的KVOController和kvo比有什么优缺点。rac中的addobserver原理是什么?
  • 三方库源码相关:
    • 如果要你设计一个网络框架你怎么设计?
    • 如果要你设计一个图片缓存框架你怎么设计?
  • flutter问题
    • 为什么flutter可以hotrelaod 而oc不可以?如果oc要实现hot reload你认为有什么技术难度?
  • java问题
    • 在oc中如何实现java接口的功能

面试题-C公司

  • 属性关键字相关
    • 你都使用过哪些属性关键字?
    • atomic实现原理是什么?他是怎么保证安全的?
    • 如果用readonly修饰系统会自动为当前属性生成setter和getter方法吗?
    • 用strong修饰符修饰的有哪些?如果改为copy会有什么隐患?
  • @dynamic @synthesize 有什么区别?他们的应用场景在哪里?(系统会自动为我们生成setter和getter方法吗?)
  • 内存管理相关
    • 谈谈mrc和arc下的copy
    • mrc和arc混编的时候 如果mrc要调用arc中的block 要怎么处理? 对象什么时候会被释放?如果对象在应该释放的时候没有释放,有哪些可能?
    • 谈谈iOS是怎么实现引用计数机制的?
    • dealloc方法的执行步骤有哪些?
  • category 和extention 有什么区别?
  • 对代理添加属性的时候,系统会为我们自动生成setter和getter方法吗?
  • +load和+initialize有什么不同 他们都应用在哪个场景?假如分类和当前类都有load方法那么方法的执行顺序是怎么样的?如果当前类和分类中都有initialize方法执行顺序又是什么样呢?如果有多个分类呢?
  • 假如当前类和分类中有相同方法名的方法,他们的执行顺序是什么样的呢?为什么?如果想要执行方法的时候优先执行当前类的方法你怎么处理?
  • 通过关联对象生成的属性,它是当前类维护还是应用统一来维护?关联对象什么时候被释放?
  • 集合相关深拷贝和浅拷贝以及集合对象的实现原理。假如10000条数据需要存储并且需要查询,你会选用数组还是字典还是集合。为什么?集合和字典的实现方式有什么区别?
  • 生命周期相关 UIViewController的生命周期都会执行哪些方法?从A视图push到B视图的时候 A会执行哪些方法 B会执行哪些方法?
  • VC上有一个按钮点击按钮原本是要跳转到下一个页面的,但是现在事件不响应了,有哪些原因造成的。
  • UIView和CALayer有什么区别?他们之间分工不同,符合哪一个设计原则?
  • 循环引用相关
    • 谈谈你对循环引用的理解?哪些场景会产生循环引用
  • 数据存储相关
    • 你都用过哪些数据存储方式?他们各自的应用场景有哪些?他们有什么不同?NSUserDefaults 归档接档 plist 数据库
  • 数据库相关
    • 一些简单的数据库查询语句 条件查询等 以及表创建应该怎么写
    • 如果数据库需要更新100w条数据你有什么方法进行更新
    • FMDB 是怎么实现事务的?谈谈你对事务的理解。
  • 网络相关
    • http请求的cache你是怎么用的?实例:假如我有一个请求,如果服务端数据不变的时候我不再进行UI处理了,这个怎么解决?
    • 关于https的握手和挥手谈谈你的理解。

面试题-D公司

  • 你是怎么做性能优化的(这个有点宽泛,可以从内存上,启动速度上,检测内存泄漏以及卡顿上来说)你用什么工具来检测的,检测的原理是什么?有没有做一些自动化的检测处理。
  • 你是怎么处理包瘦身的?
  • 如何处理才能让app省电。你是怎么检测到耗电的?有以下场景:有个地方要频繁的去请求,你怎么处理?
  • 卡顿的原因是什么?你怎么去处理和定位卡顿的问题。
  • 如果让你设计一个埋点统计的方案你会怎么处理?
  • swift和oc相比有什么优缺点。你认为swift比oc打包体积大的原因是什么?
  • 假如现在数据库中有100w条数据。这些数据需要更新现在有200w条数据你怎么能查出相同的和不同的数据。实现更新和插入操作。
  • iOS13有什么新功能?你是怎么处理刘海屏的适配以及深色模式的。
  • wwdc你平常看吗?讲一下最新的一些技术。你学习的途径有哪些?
  • 遇到技术问题你是通过哪些途径解决的?
  • 你是怎么做代码管理的?

这是笔试题上的算法的题可供参考,关于OC的一些笔试题参考意义不大。比如:怎么读写文件,写出相关代码。怎么实现图片缩放,写出相关代码。 * 写一个函数计算一个整数的阶乘,如果n非常大,如何处理? * 求一个字符串最长连续子串,举例,abcdeab,输出结果abcde。

关于面试题答案:这些基本都在我githubdemo里面,这里不再单独给出答案。

向大家推荐小专栏《秦小风的博客》 https://xiaozhuanlan.com/shavekevin?rel=2397810208


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK