阅读 1105

某TMD公司iOS高级工程师面试回忆

前言:TMD某T的iOS高级开发岗第三面,下面记录这次面试的回忆以作日后复习。

一、自我介绍

简单介绍一下你自己吧

  • 解析:简单介绍下自己的名字,教育背景,现在的工作,做过的项目

二、自我介绍衍生的口头问题

讲讲下你在你项目中做过的优化或者技术难点

  • 题外话:这种问题最好各人自己找问题讲讲,不多,提前准备一个你项目中非常擅长并熟悉的点,即可。

三、编程题:实现以下功能

  1. 编写一个自定义类:Person,父类为NSObject
  1. 该类有两个属性,外部只读的属性name,还有一个属性age
  1. 为该类编写一个初始化方法 initWithName:(NSString *)nameStr,并依据该方法参数初始化name属性。
  1. 如果两个Person类的name相等,则认为两个Person相等

四、由编程题衍生的口头题目

  1. 怎样实现外部只读的属性,让它不被外部篡改
  1. nonatomic是非原子操作符,为什么要这样,atomic为什么不行?有人说能atomic耗内存,你觉得呢?保读写安全吗,能保证线程安全吗?有的人说atomic并不能保证线程安全,你觉得他们的出发点是什么,你认同这个说法吗?
  1. 你在初始化的方法中为什么将参数赋给_name,为什么这样写就能访问到属性声明的示例变量?
  1. 初始化方法中的_name是在什么时候生成的?分配内存的时候吗?还是初始化的时候?
  1. 作为return的self是在上面时候生成的?
  1. 为什么用copy,哪些情况下用copy?

五、另外聊到的实际开发问题

  1. 你平时有做过优化内存的哪些工作?怎样避免内存消耗的大户?

  2. 你怎样实现线程安全的?这些线程安全的办法和atomic有什么不一样?atomic的实现机制是怎样

六、后面的话

以上是题目的回忆版,读到这里读者可以自己找答案。

关注下面的标签,发现更多相似文章
评论