zl程序教程

您现在的位置是:首页 >  移动开发

当前栏目

2017年校园招聘ios面试题详解手机开发

ios面试题手机开发 详解 2017 招聘 校园
2023-06-13 09:20:14 时间

一.搜狐快站

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.一个类实现的功能是越多越好还是越少越好?单一职责原则; 

-


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需要被编译吗?它们分别是什么类型的文件?

五.网易金融


9.Block中的循环引用;Block的复制;Block的存储位置;Block如何改变外面的变量;__block修饰符的内部机制!!!;
16.Category和Extension;Category的缺点和优点;如何克服或者弥补这个缺点(不能添加实例变量,用Runtime实现?);

七.百度 1.用过哪些设计模式,用代码实现单例模式,讲讲代理模式的优点,画出代理模式的类结构图; 2.手写二插搜索树的查找,分别用循环和递归实现,哪一种的效率高,递归的空间复杂度是多少; 3.App端的数据缓存; 4.有哪些查找算法,复杂度分别是多少; 5.哈希查找的时间复杂度是多少,如何解决冲突,如何优化哈希; 6.有哪些进程调度或内存管理的算法?(比如先来先服务,高优先级服务,最近最久未使用等等); 7.使用什么数据结构来实现LRU最近最久未使用,画图来模拟一下; 8.Linux命令行,搜索某个文件的命令; 

-


八.小红书 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以及数据刷新问题; 

-


3.进行直播,使用字典存储观众,观众有进入和离开,人数比较多,如何实现这样一个功能;以及如何实现排序;
10.在什么时候我们需要使用autoreleasepool;什么时候需要我们手动去写一个autoreleasepool;

十一.墨迹天气 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.iOS做过哪些渲染优化; 2.二叉树非递归中序遍历代码实现; 3.合并两个已经有序的链表代码实现; 


十五.今日头条 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.讲讲逆向工程;