您的位置:首页 > 职场人生

2017秋季校园招聘iOS开发岗位面试题集锦

2016-12-06 00:55 399 查看
      笔者参加了2017秋季不少的校招iOS岗位面试,下面我把这些面试题都贴出来和大家共勉:
一.搜狐快站

1.谈谈你做过的项目;2.项目中最有成就感的部分;3.倒计时如何实现?(NSTimer,还有其他的实现方式吗);4.UIButton的继承关系?5.iOS中可以进行输入的控件?(UITextView,UITextField);6.快排的实现原理;7.短信验证码会有倒计时功能吗?第一次验证失败后还可以再进行验证吗?8.Android开发和iOS开发的区别; 

二.搜狐社交产品中心

1.我们项目中用到的缓存方式;用的是数据库还是归档?2.我们项目中使用的网络库是什么?3.TableView的优化和重用;比如不等高的cell如何重用?不同的cell里面包含的UI不同如何重用?滑动太卡如何优化?4.图片缓存如何优化?圆角图片如何优化?5.JSON等数据格式如何模型化?使用哪些第三方库?6.MVC,MVVM?7.开发中用到的设计模式?单例、MVC、delegate。8.数据结构堆与栈的区别;栈与队列的区别;9.用OC如何实现栈与队列;10.如何防止死锁;11.GCD如何实现同步任务,即如何执行完一段代码后再去执行另一段代码;(线程组,barrier,信号量)12.block如何解除循环引用;13.block的原理是什么,如何去找到这个block;(函数指针)14.运行时替换系统的设置颜色的方法,但是在某几处还是要使用系统的方法,如何使用运行时实现;15.OC和Java的区别;16.面向对象的三大特性,iOS开发时如何体现面向对象的;17.你们UI使用什么开发方式;18.H5混编:OC如何调用js的代码;js调用OC的代码;分别是如何进行调用的;19.分享功能你们是如何实现的;20.应用之间如何唤起,如何把scheme加入白名单;
三.蚂蚁金服1.在第一家实习公司时做的项目,完成了哪些模块;2.在当前公司时做的项目,完成了哪些模块;3.序列化与反序列化;JSON怎么转化为模型;4.iOS中的数据库,CoreData;5.开源项目中OnceNote中的技术闪亮点;6.数学建模时做的题目,是怎么建模的,使用了什么工具;7.Java和OC的优缺点,与Android中的Java有什么区别;8.NSString为什么用的copy,copy和strong有什么区别;9.NSCopying,NSCoding,讲讲这两个东西;10.面向对象的三大特性,讲讲多态;11.类A想调用类C的方法,类C继承自类B,需要如何实现;12.一个类实现的功能是越多越好还是越少越好?单一职责原则; ----------------1.在两家公司做的项目介绍;2.内联函数是什么?3.堆和栈的区别;如何优化堆和栈!!!;哪一种会造成内存碎片;block分配在哪里;4.block的循环引用;block的代码实现;为什么会造成循环引用;block是如何强引用self的;5.如何去自己实现一个自动释放池;自动释放池的作用;自动释放池是如何管理对象的;6.static的作用;static const为什么要加static;static const与#define的区别;7.项目中做的比较好的部分;8.block在传递的时候,是否会改变存储位置?比如是否会从栈复制到堆;原来的block是否会被释放; 
四.微店1.Block的实现内部机制,外部的变量是怎么传到Block中去的;2.快速排序的实现,复杂度;有其他哪些排序算法;3.判断单向链表中是否有环;4.iOS的内存管理机制,和GC有什么区别;5.Runtime;6.C++中函数是如何调用的;7.如果不使用UICollectionView,那么如何实现瀑布流,如何设计数据结构,讲讲思路;8.如果有一个比内存大的大文件,那么如何实现排序;9.http和https的区别,https使用了什么加密算法;10.https的效率一定比http低吗,是每一次都低吗?11.storyboard到手机UI显示,整个过程是怎样的?12.xib、nib需要被编译吗?它们分别是什么类型的文件?
五.网易金融1.实习期间做的工作,以下问题都是基于实习项目展开的;2.简单说说你实现哪些功能模块?3.Autolayout的使用,几个View如何布局,如何设置cell的高度,几个并列的View如何居中?4.项目中你使用了哪些设计模式?5.你们项目中是怎样架构的(MVC?MVVM?);6.你们项目中的多线程是如何实现的?7.队列有哪些?队列和线程的关系?8.说说列表功能的实现(涉及cell的自定义等);9.Block中的循环引用;Block的复制;Block的存储位置;Block如何改变外面的变量;__block修饰符的内部机制!!!;10.简单的需求:几个任务执行完以后再去做某项任务,如何实现?(GCD线程组?)11.你是如何进行持续学习的?你是学习方式是怎样的?12.最近你在学习哪些技术,现在你感兴趣的是哪方面?13.聊了聊iOS安全方面的内容;14.Swift中的Protocol。。。;15.你们的项目用的是OC还是Swift;16.Category和Extension;Category的缺点和优点;如何克服或者弥补这个缺点(不能添加实例变量,用Runtime实现?);17.属性修饰符:copy,weak。。。18.NSNotification是同步的还是异步的???(貌似是同步的)19.NSNotification的使用需要注意什么?(不用时要移除通知?)20.Block的嵌套使用;21.iOS安全,如何在客户端实现一些安全措施。比如如何做用户输入密码时的键盘输入安全。
六.腾讯1.算法:一棵多叉树,每个节点上有个值,求一条路径上值的和为sum的路径有哪些;2.在网络请求中,如何来处理网络速度慢、网络中断网络抖动等等网络问题;3.你做的项目的难点在哪里?4.你未来三年的规划是什么? 
七.百度1.用过哪些设计模式,用代码实现单例模式,讲讲代理模式的优点,画出代理模式的类结构图;2.手写二插搜索树的查找,分别用循环和递归实现,哪一种的效率高,递归的空间复杂度是多少;3.App端的数据缓存;4.有哪些查找算法,复杂度分别是多少;5.哈希查找的时间复杂度是多少,如何解决冲突,如何优化哈希;6.有哪些进程调度或内存管理的算法?(比如先来先服务,高优先级服务,最近最久未使用等等);7.使用什么数据结构来实现LRU最近最久未使用,画图来模拟一下;8.Linux命令行,搜索某个文件的命令; ----------------------------1.项目中的图片上传功能如何实现,为什么使用队列上传,为什么不用异步上传;2.安卓开发与iOS开发的区别和优缺点;3.转到后台的应用如何保持活跃,而不被系统kill;应用转到后台的整个过程是怎样的?4.iOS中如何实现单例,用GCD来实现一下;5.GCD的全拼;6.Xcode开发中如何创建一个代码块(代码片);7.iOS10中的新特性,聊了聊WWDC;8.对项目中用到的图片选择器的优化和自定义,包括图片多选功能;9.GCD中如何创建异步线程,GCD中是否能stop一个线程执行; ----------------------------1.讲讲iOS系统;2.你们有没有用到什么新的技术;3.你算法怎么样?4.讲讲体现你学习能力的事情?5.为什么从上一家公司实习离职? 
八.小红书1.你实习的项目中哪些是你做的?2.你觉得我们小红书的App怎么样?3.手写代码:给定一个字符串,同时给定两个字符,求出包含这两个字符的最小子串的长度;比如输入:addcddabc    ,a  ,c 那么包含的子串为:addc,   cdda,   abc  —>最小的子串长度为3;4.说说iOS和Android开发的区别; 
九.网易杭研1.你们的iOS应用是如何来提高安全性的;2.应用的砸壳过程;3.https的秘钥协商过程,证书交换过程;4.讲讲Runtime,以及消息转发过程;5.讲讲iOS的内存管理;6.你们APP中的一些方案选型问题:如网路库选型,页面路由选型;7.页面的动画或者渲染的优化如何做?讲讲CoreAnimation;8.讲讲Foundation和CoreFoundation之间的区别;CoreFoundation是不支持ARC的,如何与Foundation之间进行转化。9.如何实现界面栈的重构,如何移除栈中的界面;10.如何对UITableView进行优化,你们的cell都是等高的么;11.如果让你自己实现下拉刷新的功能,你如何实现;12.MVVM以及代码臃肿问题;13.简单聊聊ReactiveCocoa以及数据刷新问题; -------------------------------
十.图片社交in1.项目中的alert sheet的层级,是添加到哪里?以及key window的层级结构;2.应用中的安全机制;有哪些对称加密、非对称加密算法;3.进行直播,使用字典存储观众,观众有进入和离开,人数比较多,如何实现这样一个功能;以及如何实现排序;4.字典中是如何去进行查找的?并发查找;5.笔记在更新的时候进行修改,如何处理这种情况,如何防止脏数据;6.GCD中有哪些方法?7.讲讲runloop;8.讲讲runtime;9.本地化持久方案;10.在什么时候我们需要使用autoreleasepool;什么时候需要我们手动去写一个autoreleasepool;11.单例的作用,什么场景下才需要使用单例;12.ARC是一种编译时特性还是运行时特性; 
十一.墨迹天气1.模块化开发框架有哪些用过?2.weak的作用;3.有哪些属性修饰符;4.混合开发中如何传递数据,即js和oc如何传递数据、参数;5.做过那些优化?6.说说我们的App中有哪些需要改进的;7.讲讲MVC,MVVM;8.atomic一定是线程安全的吗?9.iOS中多线程的实现方式;10.碰到过内存泄露吗?如何查看或者检测内存泄露;11.你们是如何封装网络请求库的;
十二.同花顺1.KVO的实现原理;2.UITableView的复用,如果UITableView的高度很高,即frame的高度超过屏幕高度,会怎么进行复用;3.weak、assign的区别;4.什么是死锁;5.二叉树的搜索,搜索二叉树中所有值为2的节点,并返回,代码实现;6.讲讲runtime;7.weak为什么比assign安全,其实现原理是怎样的;8.消息推送如何实现,整个过程是怎样的;9.缓存图片如何实现,缓存到哪里;如果图片显示有破损,可能是什么原因造成的;

十三.华为1.算法:str = “4213523…..54”很长的数字字符串,如何判断是否能被6整除;2.安卓有哪些特性可以提高安全性;3.C/C++中有哪些会导致安全问题;4.你的获奖是什么时候获得的,研究生有没有获得什么奖学金;5.简单介绍了加壳,混淆,安全,逆向,hook等;6.学习成绩怎么样?班级前几?7.你擅长哪种语言; --------------------------------1.介绍了自己的Android项目;2.为什么要上线自己的Android应用;3.问选择华为项目组的事情;4.上家公司实习情况;5.Android应用有哪些收费模式,如何实现收费; 

十四.搜狐集团1.iOS做过哪些渲染优化;2.二叉树非递归中序遍历代码实现;3.合并两个已经有序的链表代码实现; ---------------------1.Android应用是否可以读取本机号码;iOS应用是否可以读取本机号码;2.使用位运算符实现两个整型加法代码实现,不考虑溢出; 

十五.今日头条1.算法:二叉树的左右子树交换代码实现;2.页面路由如何实现,如何去维护一张路由表;页面是如何去进行跳转的(runtime);路由表中的键和值分别是什么?如何根据服务器下发的数据加载页面;3.js和OC如何调用;(js是怎样调用oc的);4.GCD和NSOperation的区别;哪一个的复用性更好;NSOperation的队列可以cancel吗,里面的任务可以cancel吗;5.block和self的循环引用;到底是如何循环引用的;6.SDWebImage的缓存策略,是如何从缓存中hit一张图片的;使用了几级缓存;缓存如何满了如何处理,是否要设置过期时间;7.讲讲RunLoop;8.讲讲iOS动画,比如CoreAnimation;9.屏幕上点击一个View,事件是如何去响应的;10.深拷贝与浅拷贝;11.有哪几种类型的block;什么情况下block会从栈区复制到堆区;12.在一个函数中的局部变量,需要return,那么这个局部变量什么时候会被释放;它是分配在哪里?13.CALayer和UIView的区别;动画可以作用于CALayer和UIView吗?14.讲讲runtime,以及hook,以及如何进行方法交换;15.讲讲逆向工程; ------------------------------------1.算法:double power(double  x, int n)函数实现,最好是O(long)复杂度;2.使用关联对象把属性添加到category中,具体步骤是怎样的;3.如何去手动触发KVO,如何让KVO去监听一个方法;4.weak和assign的区别;5.weak在它指向的对象被释放后,会被置为nil,该机制是如何实现的;6.NSString为什么要修饰成copy;block为什么要修饰为copy;7.哪些属性需要修饰为weak;8.NSMutableArray在block中修改时,是否要修饰为__block;   int类型呢; -------------------------------------1.讲讲JSPatch;使用了iOS的什么原理;2.讲讲MVC,MVVM,MVP;MVP是哪三个单词的缩写;3.操作系统进程间通讯的方式;4.讲讲共享锁和互斥锁;5.进程和线程的区别;6.UIViewController的生命周期;7.UITableView滑动卡顿如何解决优化;8.iOS多线程有哪几种方式;9.让你印象深刻的学到的技术;安全?10.Linux和Unix相关知识;11.http和https的区别;12.get和post的区别;13.非对称加密方式有哪些,数字签名如何实现; 

十六.中国移动杭研1.群面题目:移动支付安全;2.实习中的开发流程;3.当前手头offer情况; -----------------------1.bad_access这个bug是如何出现的?2.NSString为什么用weak修饰,如果使用strong修饰会怎样?3.讲讲单例设计模式,在什么情况下使用单例模式?4.iOS响应链;5.isa指针的作用;6.列表中图片缓存与内存优化,有没有出现过OOM的情况;7.手头的offer情况;8.技术上和生活上有哪些缺陷和不足;9.默认的属性修饰符有哪些;10.了解socket吗; 
      最后真诚希望大家都能拿到心仪的offer。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: