面试总结

216 阅读3分钟
  • 最近开始面试,做一个面试总结。

  • 多年没有面试,iOS开发面试已经卷起来了,犹记得当年能写一个动态的网络请求就可以入职,对比现在要求提高多了。

  • 一、必问面试题

    1. )runtime 消息发送,动态方法解析,消息转发。category,kvo,kvc,runtime执行时机,方法交换及使用的地方,加载dyld,runtime,main,weak,sidetable,结构
  • 2)runloop 卡顿检测,监听 observe,手势 source1 ,通过mach端口转发source0,加上timer runloopmode 里面包含的四个数据源 每次更改状态会通知相应状态的监听者,beginsource 即将处理source,处理source,即将处理timer,处理timer,即将休眠,休眠(由用户态转内核态),结束休眠afterwait,唤醒是有内部事件或者source1

  • 3)事件的传递及响应链。传递是方法是先pointInside,再hittest,响应链是touchbegin 和手势代理(没记住,后期完善)参考链接:blog.csdn.net/watson2017/…

  • 4)HTTPS和HTTP,udp,签名机制及流程

  • 5)socket,websocket

  • 6)阅读第三方库的源码,afn,sdwebimage,masonry

  • 7)block 三种block

  • 8)多线程及线程安全,加锁 gcd,队列,nsoperation,信号量,lock

  • 9)copy,muticopy,浅拷贝和深拷贝,字符串,字符串用copy是避免上下文关联,有需求也可以strong(待考证)可变字符串用muti拷贝

  • 10)常用的数据结构,数组,字典,hashmap,链表 结合算法 两数之和,九宫格密码个数,目前在看链表

  • 11)常用的数据管理,plist,userdefault(本质是plist),fmdb数据库,版本管理(第三方名字后面补)和删除后内存vaccum 执行命令,3.1版本之后可以auto

  • 12)设计一个队列,图片下载库,三级缓存

  • 13)swift 语法

  • 14)flutter dart语言开发,wigte,插件

  • 15)启动优化,内存泄露,包大小优化

  • 16)线上bug解决

  • 17)加载流程,mach-o,内存分布

  • 18)内存分布,结合nssring 去学习

  • 19)项目当中遇到的难题

  • 20)路由,组件化解耦,分基础组件,功能组件,数据组件,中间组件,多层思想,不可拘泥

  • 21)设计模式,六大原则:单一职责,开闭原则,里氏替换原则,接口隔离原则,依赖倒置原则,迪米特法则,最小知道原则。——面试不会问这么直白,需要注意

  • 22)MVC,MVVM,MVP UI层

  • 23)UI层,业务层,数据层,网络层 分成思想

  • 24)常看博客,常看书籍,常看博客是掘金和简书,书籍是数据结构与算法,大话设计模式,大话数据结构

  • 25)职业规划 这个真不知道咋规划

  • 26)一些技巧性的知识,刘海屏刘海高度,暴露私有方法,APP间通信

  • 27)wkwebview,js插件

  • 二、面试应当及时总结,避免错误再次发生

  • 三、适当的进行模拟面试,提高成功率

  • 此为草稿,需要精心打磨