精选iOS面试真题大全(3-5年)

311 阅读19分钟
原文链接: www.jianshu.com

如果你想去大公司,如果你是3年左右的iOS开发者,如果你对面试的未知没有十足的信心,如果你期望的薪资在15K+,那么请认真刷完这300道面试题,都是真实公司经历的...答案会在近期更新!你要先自思考,看个人那些方面还不足!


1、自我介绍
2、如何实现一个倒计时功能,类似于蘑菇街中的秒杀。
3、怎么理解es6箭头函数中的this,它和一般函数的this指向有什么区别呢?
4、一个矩形,里面一个樱桃,过樱桃做一条直线, 并且没有数据和测量工具,如果做到评分矩形呢?
5、说一下同源策略
6、vue中的路由时如何管理的? 你知道他的实现方式吗?
7、提到了我的博客,问我的博客相关问题。
8、retina屏幕的了解
9、说一说移动端的布局。 flexible。
10、知道原理吗,怎么自己去实现一个flexible。 rem布局的实现原理。移动端的点透是什么,有没有了解
11、说一说异步编程的方式有哪些。
12、项目中的设计是怎么回事,说说设计方面。
13、你博客里的轮播图,如果还要优化,你会怎么去优化。
14、你最喜欢的es6中的特性是什么,为什么。
15、为什么选择前端(不是科班,这个问题经常被问。。。)
16、css布局的属性有哪些。
17、有没有遇到过这样的问题: 一个有border的div,里面有一个图片,发现图片和下面的border有一定的空隙(baseline)。
18、函数调用的方式有哪些。他们的区别是什么。
19、说一说原型链(这个要非常清楚)。
20、用过什么框架。jquery用过吗?
21、你实习公司的前端leader是谁。
22、给你一个项目,你使用jquery还是vue、react。为什么。(这个问题也是会被经常问到的)
23、说一说异步编程。
24、说一说回调地狱是什么,有什么问题。异常捕获怎么做。
25、说一说promise。 一个promise有多个then,如果第一个then出错,后面的还会执行吗,如何捕获异常。 如果第一个then出错了,我还想要后面的继续执行,应该怎么做。
26、你在学习js的时候,遇到过哪些js方面的坑、 你觉得js哪些知识会难一些。
27、 MVC 具有什么样的优势,各个模块之间怎么通信,比如点击 Button 后 怎么通知 Model?
28、两个无限长度链表(也就是可能有环) 判断有没有交点
29、UITableView 的相关优化
30、 KVO、Notification、delegate 各自的优缺点,效率还有使用场景
31、如何手动通知 KVO
32、Objective-C 中的 copy 方法
33、 runtime 中,SEL 和 IMP 的区别
34、autoreleasepool 的使用场景和原理
35、RunLoop 的实现原理和数据结构,什么时候会用到
36、block 为什么会有循环引用
37、使用 GCD 如何实现这个需求:A、B、C 三个任务并发,完成后执行任务 D。
38、NSOperation 和 GCD 的区别
39、CoreData 的使用,如何处理多线程问题
40、如何设计图片缓存?
41、有没有自己设计过网络控件?
42、怎么判断某个 cell 是否显示在屏幕上
43、进程和线程的区别
44、TCP 与 UDP 区别
45、TCP 流量控制
46、数组和链表的区别
47、UIView 生命周期
48、如果页面 A 跳转到 页面 B,A 的 viewDidDisappear 方法和 B 的 viewDidAppear 方法哪个先调用?
49、block 循环引用问题
50、ARC 的本质
51、RunLoop 的基本概念,它是怎么休眠的?
52、Autoreleasepool 什么时候释放,在什么场景下使用?
53、如何找到字符串中第一个不重复的字符
54、哈希表如何处理冲突
55、你的成绩怎么样? 为什么不学习原专业?
56、登录状态怎么保持?
57、为什么用本地存储,而不用session,session更加简单啊!
58、http和https的区别是什么? (http、https、http2这些都是经常被问到的)
59、post和get的区别是什么?
60、你会的技术有哪些?
61、你在学校社团是做什么的,你是做什么的?
62、为什么不愿意留在暑期实习的公司?
63、为什么要用Alamofire而不用原生的NSURLSession,Alamofire的优势是什么?
64、如果让你来封装一个网络库,类似于Alamofire或者SDWebImage,你会如何实现?
65、在网络库中,如何针对TableView快速滚动过程中的图片额外渲染进行优化(网络库不能持有TableView)?
66、iOS的系统架构是怎么样的?常用SDK有哪些?
67、了解HTTP协议吗?GET和POST的区别是什么?
68、对安全方面有何了解?如何应对web页面被劫持?了解HTTPS加密解密的过程吗
69、vue和react有什么区别?
70、angular用过吗?
71、说一下同源策略? 说一个JSONP? (同源策略和跨域的多种方式还是要很熟练的)
72、304和200的区别是什么。 (状态码也是必须要掌握的,包括各种区别)
73、你所知道的前端优化有哪些内容? (常考的问题,多多总结就好了)
74、linux知道吗? 你所知道的linux命令有哪些?
75、vue中v-if和v-show的区别是什么? (这个实在是记不住了,但是说明了vue不好就是因为api太多)
76、你看过哪些书? (比如计算机的几门专业课、JavaScript高级程序设计、css揭秘、你不知道的JavaScript、深入react技术栈、图解http等等)
77、你会的技术包括哪些
78、为什么不学习原专业,而是要转行。
79、为什么选择了北京而不是西安。
80、项目问题。
81、一个DOM树,其中有两个节点,找出这两个节点公共的父节点? (视频面试)
82、说一下二叉树?
83、如果反转二叉树?
84、简洁、对于不同的类型,如何做出对比?
85、说一下vue和react中的路由实现方式?
86、说一下强缓存和协商缓存? (浏览器的缓存机制也需要很清楚)
87、跨域?
88、说一下设计模式?
89、其中的一个项目,你究竟做了哪些优化?
90、websocket聊天室如果发送失败了,你怎么解决这个问题?如何做到发送图片? 有了文字、图片等不同的数据类型之后,你如何实现数据的存储,如何设计,前端如何获取?
91、websocket聊天室有输入框,那么怎么获取的,对于使用div来模仿textarea,我说使用正则去掉div,那么用户输入的也是div呢? 如果发送失败了呢? 究竟应该是先发送,还是应该先存储到redux中,考虑用户体验(仿照微信)。
92、为什么数据库使用的是mongodb而不是mysql。
93、什么是xss,如何防止xss?
94、边边购项目说一下?登录的整个过程是什么? 购物车是怎么存储设计的? 如果LocalStorage中数据的值超过了范围,你该如何去处理这个问题? 如果商品下架了,那么你如何显示这个商品? 登录的过程中,一个用户退出登录,另一个用户登录,那么这个购物车是否还是存在的。 说一下边边购项目的多个不同的模块。
95、说一下你说的项目中遇到的问题,然后你是如何解决这个问题的? (这个可以好好准备一下~)
96、websocket的使用,底层是如何处理的。(类似于xhr的。)、
97、websocket在连接的过程中, 会有新包。。balabala 一堆听不懂的词,非常尴尬,,, 我就直接说的不会。
98、手写代码 判断是否是浏览器环境。
99、http和https https的整个过程画一下
100、httPS需要多少时间 比http慢多少 怎么优化
101、https有什么缺点
102、手写快速排序 复杂度 最慢是多少 为什么取第一个值作为中间值 如果这个值是最大的或者最小的怎么办
103、http2有哪些特性 头部压缩怎么回事
104、100层 1个花瓶仍 找到n层不碎 n + 1层碎了的情况 2个花瓶呢
105、node了解多少 全局对象是什么
106、事件机制说一下 事件绑定说一下 手写如何把div中的a放在平级其中的事件会怎么样 冒泡会到document还是window
107、推荐一下身边厉害的人,你觉得你比他厉害吗。为什么
108、xss怎么防范 尖括号应该怎么过滤,一直问确定吗,最后也没说清楚
109、用过哪些框架
110、移动端如何真机调试
111、tap是怎么回事、和click的区别。。。
112、cookie和session有什么区别
113、说一下浏览器缓存问题
114、动态规划是怎么回事
115、进程和线程的区别是什么
116、说一下restful api吧,
117、说一说post和get的区别,
118、说一下状态码吧
119、你觉得什么样的代码是好的代码 (这个其实还挺考验实力的)
120、说一下position的几个属性吧。
121、typescript你用过吗?
122、最后又聊了一下部门的情况。
121、说一下你做过的几个项目吧。
123、框架对比一下
124、cookie和session有什么区别,cookie的大小是多少。
125、css3了解多少,说到了渐进增强和优雅降级
126、vue接触过多长时间、react接触过多长时间、
127、你对互联网公司怎么看,你想要什么样的公司、未来是怎么样的。
128、乐信你了解多少,你对来深圳工作怎么看。
129、你还转载过美团的文章?嗯 (很多面试官还是会看博客的,谢谢博客总是好的)
130、cookie和localStorage区别,如何把cookie写在一个对象中,其属性就是键值对
131、实现水平竖直居中的几中方法(高度和宽度不确定)
132、flex是什么
133、深拷贝和浅拷贝的区别,手写深拷贝 (博客里总结过,遂让手撕)
134、Oject的几中方式,如何区分 (这个也是常考的)
135、兼容性说一说,你做的PC端兼容性是到哪的
136、如何看待最近react事件 (百度、wordpress弃用事件。可以多关注前端的一些动态)
137、JQuery和三大框架的区别,react和vue的区别
138、说一说CSS3中的动画,animation中可以取哪些值 (css3动画也很重要)
139、flex布局是什么,默认的方向是什么,如何改变方向
140、你的博客都是自己写的吗? 你所有所学都会写成博客吗?
141、说一说原型和原型链,object是最上面的吗?
142、vue中的数据双向绑定是如何实现的、
143、display有哪些,回答了7 8个,还是不满意
144、你的node项目中有几个线程,有几个进程,如果node进程崩溃了,如何知道
145、node中的process是什么
146、node中如何创建子进程/19讲一讲你遇到的比较困难的事情,问了两个,最后是怎么解决的
147、CSS中的单位有哪些分别说一说 (提到了ex)
148、你未来的发展规划是怎么样的
149、跨域,举一个例子,安全性问题到底在哪里
150、100万个数据中,找出前10大数据,最快的方法是什么,堆排序怎么写
151、登录状态怎么使用cookie保持,最好的方法是什么
152、页面中一个video,可能格式不支持,那么前端如何判断并给出提示?
153、通过比较img的onerror是一种方法, 通过服务器端也可以保存一些属性来标识哪些浏览器支持,哪些不支持
154、为什么要用vue和react,而不用JQuery,给你一个项目,什么情况下使用单页面应用,什么情况下使用多页面应用。
155、你所知道的前端大会有哪些,比如腾讯web前端大会,CSS conf大会,js conf大会。
156、你学习的前端号有哪些,比如前端早读课,那么维护者是谁。
157、前端的表单中如何设置表单的方式,如multipart, www等,对于multipart具体是如何区分其中的不同的格式的
158、http2的所有特性。
159、http2中的头部压缩和多路复用。
160、迅雷一面比较基础,二面会根据项目扩展,体验还是不错的,和面试官聊得很开心。
161、post、put和get的区别什么
162、localStorage和sessionstorage的区别是什么
163、页面加载速度很慢,如何加速页面的渲染
164、输入了一个URL之后发生了什么
165、图片很大,如何进行优化
166、手写二分查找
167、画出TCP三次握手的过程
168、websocket是如何实现服务器端推送的
169、你对迅雷了解多少?
170、websocket和http的区别是什么?websocket的优点是什么?
171、为什么使用websocket? websocket是怎么连接的,一定需要通过http协议吗? 短轮询、commet、长轮训都介绍一下。各有什么优缺点。
172、聊天室如何兼容IE8
173、http1.1中的keep-alive是怎么理解的?
174、setTimeout和setInterval
175、原型、原型链、继承等。
176、http1.0、http1.1、http2 (这三者还是要会区分的,也会经常被问到)
177、css3动画相关
178、html、css、js分别实现一个动画效果。
179、说一下你做过的几个项目吧。
180、框架对比一下
181、你在项目中用过 runtime 吗?举个例子。
182、runtime 中,SEL 和 IMP 的区别
183、 MVC 具有什么样的优势,各个模块之间怎么通信,比如点击 Button 后 怎么通知 Model?
184、你在项目中用过 GCD 吗?举个例子。
185、Category 的实现原理,以及 Category 为什么只能加方法不能加属性。
186、有没有自己设计过网络控件
187、block 的原理,block 的属性修饰词为什么用 copy,使用 block 时有哪些要注意的?
188、iOS 的热更新方案有哪些?介绍一下实现原理。
189、KVO、Notification、delegate 各自的优缺点,效率还有使用场景
190、cookie和session有什么区别,cookie的大小是多少。
191、css3了解多少,说到了渐进增强和优雅降级
192、vue接触过多长时间、react接触过多长时间、
193、你对互联网公司怎么看,你想要什么样的公司、未来是怎么样的。
194、乐信你了解多少,你对来深圳工作怎么看。
195、class A 继承 class B,class B 继承 NSObject。画出完整的类图。
196、细致地讲一下事件传递流程
197、main()之前的过程有哪些?
198、Category 中有 load 方法吗?load 方法是什么时候调用的?load 方法能继承吗?
199、讲一下你对 iOS 内存管理的理解
200、使用 GCD 如何实现这个需求:A、B、C 三个任务并发,完成后执行任务 D。
201、你在项目中是怎么优化内存的?
202、讲讲 RunLoop,项目中有用到吗?
203、列表卡顿的原因可能有哪些?你平时是怎么优化的?
204、项目有没有做过组件化?或者你是否调研过?
205、讲一下 OC 的消息机制
206、ARC 都帮我们做了什么?
207、如何手动通知 KVO
208、c++ new 和 malloc 有什么区别?
209、c++ 可不可以多继承?
210、c++ 引用和指针的区别?
211、如何判断两个链表是否有交点?
212、堆区和栈区有什么区别?为什么要这么设计?
213、给栈增加一个Max函数接口,返回当前栈的最大值,应该如何设计?
214、给定排好序的整数数组array[]以及整数n,如何找出和为n的两个数?
215、如果没排好序呢?
216、一个字符串,如何找出只出现一次并且最先出现的字符?
217、反转字符串
218、判断整数是否为2^n
219、一个m*n的棋盘,有些格子不能走,如何找到左上角到右下角的最短路径?
220、iOS 按下 Home 键之后会发生什么?
221、c++中内存分配是怎样的?
222、c++中常用的容器有哪些?
223、queue和vector有什么区别?
224、vector底层是怎么实现的?
225、TCP三次握手?为什么两次不行?
226、项目中有没有服务器push机制?
227、两个无限长度链表(也就是可能有环) 判断有没有交点
228、实现 isEqual 和 hash 方法时要注意什么?
229、block 为什么会有循环引用
230、如何设计图片缓存?
231、CoreData 的使用,如何处理多线程问题
232、property 的常用修饰词有哪些?weak 和 assign 的区别?weak 的实现原理是什么?
233、线程安全的处理手段有哪些?把你想到的都说一下。
234、说一下 OperationQueue 和 GCD 的区别,以及各自的优势
235、Swift 中 struct 和 class 的区别
236、Swift 是如何实现多态的?
237、Swift 和 OC,各自的优缺点有哪些?
238、如果让你实现 NSNotificationCenter,讲一下思路
240、如果让你实现 GCD 的线程池,讲一下思路
241、为什么是三次握手?为什么是四次挥手?三次挥手不行吗?
242、讲一下 HTTPS 密钥传输流程
243、UITableView 的相关优化
244、讲讲 MVC、MVVM、MVP,以及你在项目里具体是怎么写的?
245、iOS 系统框架里使用了哪些设计模式?至少说6个。
246、你自己用过哪些设计模式?
247、NSOperation 和 GCD 的区别
248、Objective-C 中的 copy 方法
249、 autoreleasepool 的使用场景和原理
250、哪一个项目技术点最能体现自己的技术实力?具体讲一下。
266、你在项目中遇到的最大的问题是什么?你是怎么解决的?
267、用 Alamofire 比直接使用 URLSession,优势是什么?
268、你是如何学习 iOS 的?
269、和产品经理、测试产生冲突时,你是怎么解决的?
270、手写一下快排
271、遍历一个树,要求不能用递归
272、RunLoop 的实现原理和数据结构,什么时候会用到
273、找出两个字符串的最大公共子字符串
274、假设ViewController中需要用一个Blcok来改变ViewController中的一个属性,需要怎么实现?
275、这样实现之后,这个Block在内存中被存在何处?引用关系又是怎么样的?
276、函数中的闭包,如果要求闭包执行完后立刻改变函数中某个变量的值,应该如何实现?
277、如何实现一个类似于微信聊天界面的布局?
278、如何用Auto Layout实现一个如下要求的布局: %&@$@(#!...... (说了一大堆 =。= 反正就是使用优先级就解决了)
279、说一说 MVC 和 MVVM 的区别,以及各自的优缺点。
280、如何将 MVC 改造成 MVVM ?在MVVM中,网络请求、缓存处理的部分应该放在哪个模块?
281、为什么说Swift是面向协议的语言?使用 Protocol 有什么好处
282、比较一下 Swift 和 Objective-C 在语言层面上的安全性?
283、如果ViewController中使用闭包时,用weak避免循环引用,会有什么问题?
284、当点击一个View时,发生了什么?如何扩大点击区域?
285、如何对TableView进行优化?
286、能讲一讲你对光栅化的理解吗?
287、对Swift和OC有什么看法?
288、能对Swif中的可选类型谈下你的理解吗?
289、说一下快排的伪代码和时间复杂度?
290、怎么判断两个链表是否相交?
291、怎么反转二叉树?
292、了解元组吗?
293、了解多线程吗?
294、什么是并行?
295、现在有ABC三个任务,如何实现AB完成后再执行C?
296、对 Runtime 有什么了解?
297、HTTP 和 HTTPS 有什么区别?
298、知道 HTTPS 通信过程吗?
299、Struct 和 Class 有什么区别?
300、为什么要设计Cache?Cache分级有什么好处?
301、如何保证多核数据的一致性?

良心编辑作者:Silence_广

这些都弄懂了,相信offer已到你的邮箱了!


另外我附上一份pdf的面试题大全,以及收集的各大厂面试题 ! 要的加iOS高级技术群:624212887,群文件直接获取

如下图所示:

iOS面试题大全
iOS面试题大全
iOS面试题合集