简书首页将来跳槽用iOS面试资料搜集

大厂面试(三)

2019-04-03  本文已影响218人  强子ly

一、京东

1、请写出以下代码输出

 int a[5] = {1, 2, 3, 4, 5};
 int *ptr = (int *)(&a + 1);
 printf("%d, %d", *(a + 1), *(ptr + 1));

2、写一个标准宏Max,并给出以下代码的输出

int array[5] = {1, 2, 3, 4, 5};
int *p = &array[0];
int max = Max(*p++, 1);
printf("%d %d", max, *p);

3、在一个对象的方法里, self.name=@"object"; name=@"object"有什么不同?
4、怎样使用performSelector传入3个以上参数,其中一个为结构体?
5、UITableViewCell上有个UILabel,显示NSTimer实现的秒表时间,手指滚动cell过程中,label是否刷新,为什么?
6、有a、b、c、d 4个异步请求,如何判断a、b、c、d都完成执行?如果需要a、b、c、d顺序执行,该如何实现?
7、使用block有什么好处?使用NSTimer写出一个使用block显示(在UILabel上)秒表的代码。
8、一个view已经初始化完毕,view上面添加了n个button(可能使用循环创建),除用view的tag之外,还可以采用什么办法来找到自己想要的button来修改Button的值。
9、tableview在滑动时,有时候会大量加载本地图片,这时候会很卡,如何解决加载耗时过长导致不流畅的问题?
10、给定一个如下的字符串(1,(2,3),(4,(5,6)7))括号内的元素可以是数字,也可以是括号,请实现一个算法清除嵌套的括号,比如把上面的表达式的变成:(1,2,3,4,5,6,7),表达式有误时请报错。


二、优酷

1、如何声明私有变量和私有方法?
2、assign、retain、copy分别起什么作用?重写下面的属性的getter/setter方法
3、如何声明一个delegate属性,为什么?
4、autorelease的对象何时被释放
5、这段代码有问题吗?如何修改?

for (int i = 0; i < 10000; ++i) { 
    NSString *str = @"Abc"; 
    str = [str lowercaseString]; 
    str = [str stringByAppendingString:@"xyz"];
    NSLog(@"%@", str); 
 }

6、UIViewController的viewDidUnload、viewDidLoad和loadView分别什么时候调用?UIView的drawRect和layoutSubviews分别起什么作用?
7、自定义NSOperation,需要实现哪些方法?
8、如何扩展ObjC里面类的方法?
9、用代码实现一个单例
10、用代码实现一个冒泡算法
11、UITableView是如何重用cell的?
12、如果更高效地显示列表
13、Cocoa中MVC是怎么实现的?
14、描述KVC、KVO机制
15、使用或了解哪些设计模式


三、网易(2016)

一面

1、简单介绍下自己。
2、举个其中一个项目例子,说一下自己遇到的一些困难及解决方法。
3、用过哪些第三方?(AFNetworking,Masonry,MBProgressHUD,SDWebImage等等)。
4、说下SDWebImage使用原理?
5、如果让你设计开发一个类似SDWebImage这样的库,你该从哪些方面考虑?可能会遇到哪些困难的问题?如何解决?

二面

1、 简单的自我介绍。
2、一些项目实现方法。
3、 让自己实现下拉控件,如何实现。
4、问你做过的项目技术难点在哪,有哪些功能亮点。
5、问你有没有做过一些比较复杂的控件。


360面试题

转载自:iOS面试:360面试题记录与总结 - Jabber_YQ
1、说说oc语言和别的语言的区别。
2、既然你说runtime会把方法调用转化成objc_msgSend(receiver, selector),那说说消息机制的流程。
3、既然你前面一直有提到方法,那说说SEL与IMP的差别吧。
4、说一下你对内存管理的理解吧。
5、有哪些情况会出现内存泄漏。
6、前面你有提到可以用_weak来解决block中的循环引用,还有别的方法吗。
7、控制器Apush到B后,有哪些方法可以让B的数据传递到A。
8、说说KVO的原理吧。
9、现在在TableViewCell上有一个UILabel,UILabel上写是倒计时,倒计时用NSTimer实现,现在滚动tableView,UILabel上的text会变吗。
10、frame和bouns的区别。什么时候frame和bouns的高宽不相等。
11、说说进程和线程的区别。
12、NSOprationQueue 与 GCD 你平时一般用哪个。NSOprationQueue 与 GCD 的区别。


5、美团一面

1、如何让一个label靠左,一个label靠右,然后右边的label能够完全显示
2、算法奇数排在前面,偶数排在后面
3、智力题,一个骑手送餐,ABCD商店,送给abcd四个人
4、kvo的实现原理
5、消息调用的过程
6、get和post的区别
7、http有哪些部分
8、tcp和udp的区别
9、七层模型


6、美团二面

1、讲一讲响应链如何通过一个view查找它所在的viewController,如何扩大view的响应范围
2、微信分享大图如何实现
3、从进程的角度 进程间的通信方式,并举例 两个进程分别指向同一个地址空间并初始化一个值,分别输出是什么 算法,判断一个字符串是否所有的大写字母都在小写字母前面 修改podfile文件后,
怎么用git diff显示出修改后版本和当前版本的不同,让我来设计 程序执行的过程 如果想要删除自己的一段代码,如何删除(在程序执行的过程中删除) 用过脚本编程吗 了解前后端吗 各科成绩,成绩排名


iOS高阶面试题(2017)

1、NSCache类当中是如何解决时间复杂度问题的.请说明其原理.
2、应用启动时是用怎样加载所有依赖的Mach-O文件的?
3、什么是冷启动,什么是热启动?
4、有没有做过项目的优化,请列举你所知道main()函数之前耗时的因素都有哪些,点击应用响应时间多少ms之内不会让用户察觉到
5、属性 可以与set方法和get方法 三者同时存在吗,如果不行,请说明原因?
6、Runtime机制是什么?有没有写过方法欺骗?简述一下
7、GCD和NSoperation的区别之处,请分别说一下特点?
8、Reachability是用来判断网络状态的,请简述一下其原理?
9、layoutSubviews这个方法一般在什么情况下调用的?
10、在一个表内有很多cell,每个cell上有很多个视图,如何解决卡顿问题(提示Runloop)。
11、Objective-C语言中闭包是如何实现的,闭包中有什么需要注意,闭包运行环境是在堆还是在栈。


2018年8月笔试(一)

1、当使用 weak修饰的对象被释放后,系统是否直接释放掉此对象?其实现原理是什么? (15分)
2、声明可变数组可以用weak修饰吗?和用strong修饰有什么区别? (10 分)
3、反转二叉树
4、ViewControllerA push到ViewControllerB,再从B pop回A的生命周期.(15分)
5、UIView和CALayer有什么关系? (10 分)
6、下面代码的输出是什么?(10分)

@implementation Son : Father
- (id)init {
    if (self = [super init]) {
          NSLog(@"%@", NSStringFromClass([self class]));
          NSLog(@"%@", NSStringFromClass([super class]));
    }
    return self;
@end

7、在项目中,若出现以下的代码可能会有什么问题?(10分)

for (int I = 0; i < 1000; i++) {
    NSString *num = [NSString stringWithFormat:@"%d", i]; //num是临时变量
}

8、内存泄漏可能会出现的几种原因,聊聊你的看法?如果是非OC对象如何处理?若常用框架出现内存泄漏如何处理?(20分)


2018年8月笔试(二)

1、frame和bounds 有什么不同?
2、Objective-C 的类可以多重继承么?可以实现多个接口么? Category 是什么?重写一个类的方式用继承好还是分类好?为什么?
3、用@property声明的NSString / NSArray / NSDictionary经常使用copy 关键字,为什么?如果改用strong关键字,可能造成什么问题?
4、Category (类别)、Extension (扩展)和继承的区别?
5、什么时候用delete, 什么时候用Notification?
6、如何访问并修改一个类的私有属性?
7、一个objc对象的isa的指针指向什么?有什么作用?
8、isKindOfClass、isMemberOfClass、 selector 作用分别是什么?
9、lldb (gdb)常用的控制台调试命令?
10、_objc msgForward 函数是做什么的,直接调用它将会发生什么?
11、什么是TCP / UDP?
12、用伪代码写一个线程安全的单例模式。
13、HTTP协议中POST方法和GET方法有那些区别?
14、如何高性能的给 UIImageView 加个圆角?


部分题目转载自:
2017年iOS高阶面试题 - 筑梦师Winston
京东/优酷IOS面试题 - LZM轮回
网易iOS研发面试题分享
iOS面试笔试题(2018年8月)- 爱恨的潮汐

上一篇下一篇

猜你喜欢

热点阅读