三月份实习校招后,也该为 BAT 秋招囤一些干货了

453 查看

从三月份到四月份这段时间,一共面试了阿里、蘑菇街、猿题库、百度、豆瓣以及搜狗,应聘的岗位都是 iOS 开发实习生,写一个面试的总结吧,一是为秋招做一下经验铺垫,二是梳理一下三月份踩过的坑。当然如果对其他朋友有帮助,那再好不过。

这个面经主要分为三大块

  • 各大厂面试题集锦
  • 个人的一些心得
  • 推荐一些个人觉得不错的博文

面试题

计算机基础

  • TCPUDP 的区别,以及各自的用途-参考链接
  • TCP 为什么三次握手,四次挥手?-参考链接
  • TCP 流量控制与拥塞控制-参考链接
  • 计算机网络分为几层,这样做的好处是什么?你还可以举出其他分层的例子吗?
  • 进程与线程的区别,共用的是堆内存还是栈内存-参考链接
  • 数据库中的数据表设计需要注意什么问题?
  • facade 设计模式-参考链接
  • 工厂模式和抽象工厂模式的区别
  • 推荐书籍:图解 HTTP、图解 TCP/IP、TCP/IP 协议簇、操作系统概念
  • 推荐博客:TCP 与 UDP 详解网络面试基础

算法基础

  • 数组与链表区别
  • 两个长链表求交点(考虑环)
  • 堆排序,以及建堆的过程
  • 反转单链表,反转单链表的部分区间-参考链接
  • 删除原排序数组内重复次数超过三次的数字(不开辅助空间)
  • 百万数据寻找最大的十个数
  • 连续子数组的最大和
  • 快排的理解、时间复杂度,什么情况下时间复杂度最高
  • 如何判断一个链表有环,以及入口点在那里
  • 反转字符串“I LOVE YOU”“YOU LOVE I”
  • 找第一个不重复的字符
  • 哈希的原理,以及处理冲突的方式
  • 推荐书籍:剑指 Offer、LeetCode、编程之美

iOS 基础

  • MVC的理解,以及各个模块间的通信是怎么样子的
  • DelegateBlock 的区别
  • 消息通知的种类,以及KVONotificationdelegate的区别,效率比较
  • 手动触发KVO,以及KVO的底层原理-参考链接
  • Objective-CCopy在那些场景下使用-参考链接
  • Runtime 的消息传递和消息转发-参考链接
  • loadinitialize 的区别 -参考
  • method swizzle原理-参考链接
  • runtime:字典转模型 - 参考
  • isMemberOfClassisKindOfClass 的区别(从源码角度分析)
  • 多线程你了解几种?有什么区别呢?-参考链接
  • operation相比GCD的优势?-参考链接
  • 数据持久化方案有哪些?CoreData了解吗?CoreData版本迁移注意什么?-参考链接
  • ViewController 生命周期,详细介绍一下loadView参考链接
  • Runloop 基本概念,猜想一下内部是怎么实现的-参考链接
  • Runloop 的休眠和唤醒是怎么回事?是怎么完成的(底层原理)-参考链接
  • Runloop的实际运用有哪些?-参考链接
  • Objective-C 中对象等同性怎么做?
  • Autorealsepool 的使用场景,Autorealsepool什么时候释放?-参考
  • 讲一下浅拷贝和深拷贝吧 – 参考
  • Objective-C字典中KeyValue有什么特别的要求
  • block 的概念、本质、分类以及所带来的问题-(建议看多线程和内存管理一书)
  • Strongweak的底层了解吗?
  • MRCARCblcok 的区别
  • 聊一下blockstrong weak dance参考
  • 读过那些开源代码?请介绍其中一个
  • 以下两种方式的区别: – 参考
  • 推荐书籍:多线程和内存管理、Effective Objective-C 2.0

经验型题目

  • 对于ABCD四个任务,完成ABC之后才可以去做D,你会怎么设计?
  • 对于ABCDE五个任务,完成AB之后可以执行D,完成BC后可以去做E,你会怎么设计? - 参考链接
  • 数据缓存怎么做?没做过的话猜想一下嘛!
  • 怎么判断Cell是否在屏幕中?
  • 解决多次点击按钮导致重复网络请求的方法 - 参考链接
  • 一个View,放了单击和双击的手势,如果我点击两次什么效果
  • 你使用过那些设计模式?讲一下细节
  • 你使用 ARC的时候,一般ARC会带来什么问题
  • 你会怎么样进行软件测试- ( iOS 测试指南(羋峮))
  • 网络有没有遇到不稳定的情况?怎么处理
  • Git 分支命令
  • 做过哪些性能优化?谈一下详细的实践 - 参考
  • TableView 优化 -参考
  • 你的开源项目是使用了AutoLayout布局,说一下layoutSubView,重写过sizeToFit吗?- 参考
  • 你的项目是用MVC,是怎么解决臃肿的ViewController问题的?- 参考

综合问题

  • 在项目中遇到那些难点?最后怎么解决的?
  • 你最近接触过什么新技术呢?
  • 使用过哪些工具,都是用来做什么?
  • 平时怎么学习的?读过哪些书?经常关注哪些国内外博客
  • 为什么选择 iOS开发呢?
  • 为什么最初选择 Swift,而现在往Objective-C 转呢?
  • SwiftObjective-C 的区别是什么?
  • 说一下你的职业规划
  • 你还有什么要问的吗?

所踩的坑

关于简历

  • 最好只写自己熟练的知识: 一面往往围绕简历来问,不熟悉的技术千万不要往上写,我当时自己写了一个App,就写了一个独立完成开发、测试,结果就被问到了测试,答得很差
  • 建议使用STAR模型:对于项目过程和个人贡献尽量写的详细,都说简历作假严重,这样更容易突出简历的真实性和表现个人能力
  • 然后就是简洁呀,我和小伙伴都是直接使用的MarkDown,感觉效果还不错-参考
  • 电话最好隔开写,比如(155-6615-9700),更便于HR联系你

关于说话

  • 我也没有太多去看面经,就感觉最初犯了一个禁忌:面试表达观点的时候不要说好像大概或许这些词语。。。。。。。。。

关于准备

  • 纵使基础再好,面试前还是要看看学长们的面试题的,这样你可以更好的组织语言,表达的更好清晰和完善
  • 一定要认真刷算法题目,本人就是吃了算法的亏,所面几个厂都有算法题目,而且有的让你现场写代码-可以参考这个大神的经历
  • 目前阶段准备面试语言方面更多是准备Objective-C,我有同学说只做Swift,我就想他什么时候可以找到实习呢!!所面的几个厂只有豆瓣有一些项目开始采用Swift,但是面试题也都是问Objective-C
  • 刷几道题总是不够的,感觉要提前几个月准备,完善知识体系,主要包括iOS、算法、计算机网络、操作系统、数据结构

iOS 开发知识树精选