给团队招聘iOS中级开发工程师拟的面试题

笔试时间 30分钟
一、Objective-C基础部分

  1. Objective-C是一门面向对象语言,那么面向对象的3要素是什么?
  2. ARC为什么可以自动管理内存?在哪些情况下ARC无效?
  3. 如何解决UITableView滑动卡顿的问题?
  4. 自己实现的最有成就感的一个自定义控件是什么,简单介绍下亮点在哪里?核心实现逻辑是什么?
  5. 在A页面中,点击按钮跳转到B页面,B页面在用户操作后生成了一些数据,数据要回传A页面。回传数据有几种方案?
  6. 平时用坐标布局还是AutoLayout自动布局,有何优劣?
  7. 数据库表结构升级有哪几种方案?
  8. iOS系统中你用过哪几种持久化存储方式,讲讲它们的适用场景。
  9. 风格纠错。如下所示代码,有哪几处风格你觉得有问题,请圈出。
风格纠错

二、Swift基础部分

  1. String和String?有什么区别?
  2. 有以下swift代码
    let str1: String? = "123"
    let str2: String! = "456"
    let str3 = str1 ?? str2
    请问str3是什么类型的?
  3. 现在有一个实体类如下所示,请问如何实现NSCopying协议。
class UserEntity : NSObject {
    private var userName: NSString!
    private var headImageURLStr: NSString!
    init(userName: NSString, headImageURLStr: NSString) {
        super.init()
        self.userName = userName
        self.headImageURLStr = headImageURLStr
    }
    override init() {
        super.init()
    }
    func copyWithZone(zone: NSZone) -> AnyObject {

    }
}
  1. guard关键字有何用?if let有何用?if let … where 有何用?
  2. 列举switch的case支持的数据类型。
  3. 说说Swift中struct、enum、class分别是什么拷贝类型。
  4. Swift代码行末需要以分号结尾吗?
  5. 定义一个Swift闭包。
  6. 定义一个Swift循环。

三、进阶部分

  1. 使用block时什么情况会发生循环引用,如何解决?在调用诸如UIView的动画block时,是否需要注意循环引用?
  2. 如果在一个viewDidLoad()中,定义了一个定时器
    NSTimer.scheduledTimerWithTimeInterval(2.0, target: self, selector: #selector(handle2SecondTimer:), userInfo: nil, repeats: true)
    那么定时器对于ViewController实例的正常销毁是否会有影响?如果有影响,有何影响、如何解决?
  3. 我们现在做的是社交类应用,拥有聊天功能,用户跟每一个好友之间,如果聊过天都会生成一个会话对象,且需要持久化存储。那么问题来了,如果有若干个子线程和一个主线程都需要访问会话对象数组,应如何实现多线程同步?有几种方法?简单说说效率如何?
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 行驶在去拉市海的弯道上,感受风从身上刮过,耳朵里真的有呼啸的声音。摩托压弯的姿势,真的太酷了!转弯,压低车身,似乎...
    EchoQ阅读 306评论 2 2
  • 我总是很害怕能力不够,没能把工作做好,心中充满了担心和恐惧;我总是很害怕没有能力承担起一份感情的责任,面对女生越来...
    千夜凡尘阅读 305评论 0 0
  • 李潇南阅读 378评论 0 0
  • 熊志军~【日精进打卡第435天】 7月23号卡 付达新商贸~众德营销 沈阳盛和塾道盛组/稻芽七组 【知~学习】 诵...
    熊志军阅读 175评论 0 0