iOS面试题大集合我的iOS开发小屋iOS面试

腾讯sng一面面试题-iOS开发

2016-08-29  本文已影响2325人  sonialiu

校招tst内推面试,110分钟:有些问题比较简单,就不贴答案了,有些问题太难,怕自己的理解有误,误了大家,所以也不贴答案了,但是可以交流答案。

  1. 介绍一下实习的项目,任务分工,做了哪些工作?介绍实习内容
  2. 网络相关的:项目里面使用到什么网络库,用过ASIHTTP库吗
  3. 断点续传怎么实现?需要设置什么?
  4. HTTP请求过程;
  5. 在杭州HTTP请求服务器响应快,可能离服务器距离近,而在深圳访问就很慢很慢,会是什么原因?如果用户投诉,怎么分析这个问题?
  6. HTTP请求的哪些方法用过?什么时候选择get、post、put?
  7. TCP建立连接的过程,断开连接的过程,为什么是四次握手?
  8. 项目里面的数据存储都用了哪些?知道iOS里面有哪些数据存储方法?什么时候该用哪些方法存储?
  9. 内存泄露的几种情况分析;(简历上写的解决了一些内存泄露的问题)
  10. 问题:有A B C D E五个类,都要监听登录和注册的通知,发通知给它们五个控制器麻烦,就写了一个单例类,负责发通知,需要接受通知的就实现delegate,因为单例类里面的数组引用了这几个VC,导致不释放,怎么解决?类似NSTimer,不知道什么时机移除VC(可以从这方面考虑:NSNotificationCenter,直接在dealloc里面remove掉就行)因为VC被引用,所以不会执行到dealloc方法,先看下NSNotificationCenter是怎么实现的吧
  11. 发布出去的版本,怎么收集crash日志?不使用bugly等第三方平台或者这些第三方平台是怎么收集crash日志的?
  12. 在block里面使用_property会造成循环引用吗?怎么解决?除了使用self->_property,可以使用valueforkey来访问吗 在block里面可以修改它的值吗setvalueforkey?可以修改它的值,可以用valueforkey来解决,显式的的使用self,block外先持有self的弱引用。
  13. 说一下runtime?为什么OC里面是发消息,而C/C++是函数调用?
  14. 说下OC发消息的过程
  15. 什么是OC对象?union是OC对象吗 block是OC对象吗
    每个 Objective-C 对象都是指向某块内存数据的指针,所以在声明变量时,类型后面要跟一个“*”字符:Class的定义:一个结构体
    Union不是OC对象
    block是特殊的OC对象,定义是个结构体类型,其他OC对象分配在堆上,block是分配在栈上。
  16. id是什么类型?是一个指针类型的,可以指向任意OC对象类型的通用对象类型。定义也是结构体。
  17. 解决过的最精彩的crash问题?
  18. 自定义一个类,有两个方法,一个是以new开头的,另一个不是以new开发的,方法里面都是alloc init方法,这两个方法有什么不同?引用计数变化?ARC下,编译器会插入什么语句?
  19. ARC和MRC的本质区别是什么?
  20. NSThread,GCD,NSOperation相关的。开启一条线程的方法?线程可以取消吗?
  21. 子线程中调用connection方法,为什么不回调?因为没有加入runloop,执行完任务就销毁了,所以没有回调。
  22. autorelease变量什么时候释放?手动添加的是大括号结束的时候释放,系统自动释放是在当前runloop循环结束的时候。
  23. 那子线程中的autorelease变量什么时候释放?
  24. 子线程里面,需要加autoreleasepool吗
  25. GCD和NSOperation的区别?
  26. 项目里面遇到过死锁吗?怎么解决?数据库访问本来就是线程安全的,不会造成死锁啊。什么是死锁?
  27. Viewcontroller的生命周期?
  28. 在init方法里面,设置背景颜色,会生效吗 会生效。为什么会?
  29. WWDC2016公布了哪些新特性?对苹果系列的最新特性有关注吗
  30. 为什么做iOS开发,不做安卓开发?
  31. C++相关的。什么是虚函数?虚函数是怎么实现的?什么是多态?
  32. 为什么类的析构函数设置成虚函数?为什么构造函数不设置成虚函数?
  33. 如果父类有一个成员变量A,子类有A,B两个变量,父类指针指向了子类,父类执行delete方法,子类的变量会被释放吗?怎么才能被释放?执行子类的delete方法,两个变量会被释放吗?
  34. 数据结构与算法相关。知道哪些数据结构?线性表(具体点 数组)连接、栈、队列、二叉树、堆。
  35. iOS中哪里用到栈了?开发过程中哪里用到链表了?栈的特点,链表的特点
  36. 什么是完全二叉树?堆是什么数据结构?
    若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。
  37. 向量和链表的区别?什么时候选择vector?什么时候选择使用链表?
  38. 100个数,找出其中重复的数?
  39. 10个数,找出其中最大数和最小数,没有值相等的。
  40. 归并排序的过程
  41. 堆排序的过程、快排的过程
  42. 你最出色的是哪方面?iOS开发,iOS开发的哪一方面?
上一篇下一篇

猜你喜欢

热点阅读