临近年关,又到了面试求职高峰期,最近有很多网友都在求大厂面试题。正好我之前电脑里面有这方面的整理,于是就发上来分享给大家。
这些题目是网友去百度、阿里、腾讯、头条、同城、小米、华为、新浪、搜狐等一线互联网公司面试被问到的题目。熟悉本文中列出的知识点会大大增加通过前两轮技术面试的几率。
网上的都是按照公司划分的,想找具体某一方面的知识点有点不好找,我这里就根据知识点分门别类的整理了一下,想看哪一块可以快速找到,希望可以帮助大家,祝大家求职顺利。
持续更新,敬请关注
本文同步发布在github上,有兴趣的可以去下载去研究,同时也欢迎网友提交面试题库,欢迎点赞和留言。
https://github.com/uzi-yyds-code
主要分为以下几部分:
(1)基础iOS面试题
(2)底层iOS面试题
(3)算法面试题
(4)高端技术面试题
(5)非技术性问题&HR问题汇总
一、iOS基础面试题部分
1. 为什么说Objective-C是一门动态的语言?
2. 讲一下MVC和MVVM,MVP?
3. 为什么代理要用weak?代理的delegate和dataSource有什么区别?block和代理的区别?
4. 属性的实质是什么?包括哪几个部分?
5. 属性默认的关键字都有哪些?@dynamic关键字和@synthesize关键字是用来做什么的?
6. NSString为什么要用copy关键字,如果用strong会有什么问题?(注意:这里没有说用strong就一定不行。使用copy和strong是看情况而定的)
7. 如何令自己所写的对象具有拷贝功能?
8. 可变集合类 和 不可变集合类的 copy 和 mutablecopy有什么区别?如果是集合是内容复制的话,集合里面的元素也是内容复制么?
9. 为什么IBOutlet修饰的UIView也适用weak关键字?
10. nonatomic和atomic的区别?atomic是绝对的线程安全么?为什么?如果不是,那应该如何实现?
11. UICollectionView自定义layout如何实现?
12. 用StoryBoard开发界面有什么弊端?如何避免?
13. 进程和线程的区别?同步异步的区别?并行和并发的区别?
14. 线程间通信?
15. GCD的一些常用的函数?(group,barrier,信号量,线程同步)
16. 如何使用队列来避免资源抢夺?
17. 数据持久化的几个方案(fmdb用没用过)
18. 说一下AppDelegate的几个方法?从后台到前台调用了哪些方法?第一次启动调用了哪些方法?从前台到后台调用了哪些方法?
19. NSCache优于NSDictionary的几点?
20. 知不知道Designated Initializer?使用它的时候有什么需要注意的问题?
21. 实现description方法能取到什么效果?
22. objc使用什么机制管理对象内存?
学习的参考资料如下:
iOS入门到进阶资料整理:https://docs.qq.com/doc/DVU5LY1Bsb3dSZ3Nn
二、底层iOS面试题
面试题包括iOS基础,还有一些源码级别的、原理这些等。所以想去大公司面试,一定要多看看源码和实现方式,常用框架可以试试自己能不能手写实现一下,锻炼一下自己
1.进程与线程
2.什么是多线程?
3.多线程的优点和缺点
4.多线程的 并行 和 并发 有什么区别?
5.iOS中实现多线程的几种方案,各自有什么特点?
6.多个网络请求完成后执行下一步
7.多个网络请求顺序执行后执行下一步
8.异步操作两组数据时, 执行完第一组之后, 才能执行第二组
9.多线程中的死锁?
10.GCD执行原理?
11.Category 的实现原理?
12.isa指针的理解,对象的isa指针指向哪里?isa指针有哪两种类型?
13.Objective-C 如何实现多重继承?
14.runtime 如何实现 weak 属性?
15.讲一下 OC 的消息机制
16.runtime具体应用
17.runtime如何通过selector找到对应的IMP地址?
18.简述下Objective-C中调用方法的过程
19.load和initialize的区别
20.怎么理解Objective-C是动态运行时语言。
三、常见的一些原理性问题
这里讲的是大公司需要用到的一些高端iOS技术,这里专门整理了一个文档,希望大家都可以看看。这些题目有点技术含量,需要好点时间去研究一下的。
类结构
1. isa指针?(对象的isa,类对象的isa,元类的isa都要说)
3. 介绍一下分类,能用分类做什么?内部是如何实现的?它为什么会覆盖掉原来的方法?
4. 运行时能增加成员变量么?能增加属性么?如果能,如何增加?如果不能,为什么?
5. objc中向一个nil对象发送消息将会发生什么?(返回值是对象,是标量,结构体)
性能优化
1.造成tableView卡顿的原因有哪些?
2.如何提升 tableview 的流畅度?
3.APP启动时间应从哪些方面优化?
4.如何降低APP包的大小
5.如何检测离屏渲染与优化
6.日常如何检查内存泄露?
底层
1. UITableview的优化方法(缓存高度,异步绘制,减少层级,hide,避免离屏渲染)
2. 有没有用过运行时,用它都能做什么?(交换方法,创建类,给新创建的类增加方法,改变isa指针)
3. 看过哪些第三方框架的源码?都是如何实现的?(如果没有,问一下多图下载的设计)
4. SDWebImage的缓存策略
5. AFN为什么添加一条常驻线程?
6. KVO的使用?实现原理?(为什么要创建子类来实现)
7. KVC的使用?实现原理?(KVC拿到key以后,是如何赋值的?知不知道集合操作符,能不能访问私有属性,能不能直接访问_ivar)
项目架构
1.MVC、MVP、MVVM模式
2.关于RAC你有怎样运用到解决不同API依赖关系
3.@weakify和我们宏定义的WeakSelf有什么区别?
*4.微服务架构设想
四、算法面试题
现在面试iOS中高级开发,算法题已是必然会出现的一个环节了,这里把面试遇到的算法题和一些比较经典的算法题做一个文档汇总,希望对大家有用。
题目
iOS面试腾讯阿里网易上来就四道算法题,大家可以先别看答案自己尝试做做!
1 实现一个方法,计算100的阶乘。
2 编程实现字符串拷贝,要考虑下内存重叠问题。
3 对输入的字符串,去除其中的字符‘b’以及连续出现的‘a’和‘c
4 如何求两个View的最近公共父类
四大题答案解答:https://www.jianshu.com/p/57ee0efb6892
(二、面试算法必备)
1、七种常见的数组排序算法整理(C语言版本)
2、 算法面试相关(leetcode)--数组和链表
3、 算法面试相关(leetcode)--字符串
4、 算法面试相关(leetcode)--栈和队列
5、算法面试相关(leetcode)--优先队列
6、算法面试相关(leetcode)--哈希表
7、算法面试相关(leetcode)--树、二叉树、二叉搜索树
8、算法面试相关(leetcode)--递归与分治
9、算法面试相关(leetcode)--贪心算法
10、算法面试相关(leetcode)--动态规划(Dynamic Programming)
11、算法面试相关(leetcode)--动态规划之背包问题
五、非技术性问题&HR问题汇总
这里整理的是一些与技术没有直接关系的面试题,但是能够考察你的综合水平,所以不要以为不是技术问题,就不看,往往有时候就是这样一些细节的题目被忽视,而错过了一次次面试机会。
(一)非技术问题
介绍你做过的哪些项目
都使用过哪些框架、平台?
都使用过哪些自定义控件?
研究比较深入的领域有哪些?
对业内信息的关注渠道有哪些?
最近都读哪些书?
有没有什么开源项目?
自己最擅长的技术点,最感兴趣的技术领域和技术点
(二)HR提出的面试问题
您在前一家公司的离职原因是什么?
讲一件你印象最深的一件事情
介绍一个你影响最深的项目
介绍你最热爱最擅长的专业领域
公司实习最大的收获是什么?
与上级意见不一致时,你将怎么办?
自己的优点和缺点是什么?并举例说明?
你的学习方法是什么样的?实习过程中如何学习?实习项目中遇到的最大困难是什么以及如何解决的?
说一件最能证明你能力的事情
针对你你申请的这个职位,你认为你还欠缺什么
如果通过这次面试我们单位录用了你,但工作一段时间却发现你根本不适合这个职位,你怎么办?
项目中遇到最大的困难是什么?如何解决的?
你的职业规划以及个人目标、未来发展路线及求职定位
如果你在这次面试中没有被录用,你怎么打算?
评价下自己,评价下自己的技术水平,个人代码量如何?
通过哪些渠道了解的招聘信息,其他同学都投了哪些公司?
业余都有哪些爱好?
你做过的哪件事最令自己感到骄傲?
假如你晚上要去送一个出国的同学去机场,可单位临时有事非你办不可,你怎么办?
就你申请的这个职位,你认为你还欠缺什么?
当前的offer状况;如果BATH都给了offer该如何选?
你对一份工作更看重哪些方面?平台,技术,氛围,城市,还是money?
理想薪资范围;杭州岗和北京岗选哪个?
理想中的工作环境是什么?
谈谈你对跳槽的看法
说说你对行业、技术发展趋势的看法
持续更新,敬请关注
网友评论