iOS 面经(头条、腾讯、网易、阿里)

腾讯电面:40分钟

介绍你最近的一个项目

项目相关问题

既然你iOS安卓都写过为什么选择iOS

字典的数据结构,如何加快查找

http和tcp的区别

java和oc的区别

c和oc的区别

UIView的生命周期

为什么需要多线程?

谈谈你对runtime的理解

还有什么想问的吗


头条视频面:70分钟

自我介绍

项目相关

怎么自定义导航跳转

谈谈runtime的理解

KVC的用途

使用method swizzling要注意什么?(进行版本迭代的时候需要进行一些检验,防止系统库的函数发生了变化)

谈谈对引用计数的理解

谈谈runloop的理解

runloop有哪些状态

autoreleasepool的使用场景

TableView优化,怎么减少卡顿

深浅拷贝

copy assign retain weak关键词

JSON转Model

代码布局

多屏幕适配

HTTP2

HTTP请求头和响应头

Cookie

NSCache

自己设计一个缓存器

怎么实现LRU

SDWebImage

二叉树先序遍历(递归和非递归)


阿里一面 90分钟

项目聊了40分钟 

面试官竟然把我的github上的项目下下来对着里面的源码问我为什么这么写

Masory的内部实现 那个with有用吗

sdwebimage在tableview中重用的问题

Autolayout 一个scrollview 一个图片 一个label怎么布局

mlmodel自己做怎么做

AR SLAM的一些算法

你觉得你的毕设设想能做好吗

iBeacon的一些定位算法

代码风格问题

什么时候能来实习

你未来的规划


阿里二面 30分钟 

第一天晚上十一点才面完 第二天早上十一点接到二面电话

介绍项目

项目中的具体

机器学习的模型是怎么用的

ARKit相关

用过哪些三方库

用过runloop吗

为啥要runloop

runloop和线程的关系

MVC和MVVM

三种硬币合成1块钱

还有什么想问的吗

未来安排是什么

通过的话什么时候能来实习

阿里三面 20分钟

自我介绍

介绍项目

你为什么写这个项目

你除了这些项目还有其他的吗

识别你不用ARKit怎么做

你有自己做过机器学习模型吗

为啥用iBeacon不用wifi定位

ip和Int互转

你最近有了解什么新兴的技术吗

还有什么要问的吗

基本全程和项目相关,好像是交叉面的样子,所以也就随便聊了一聊(时间这么短不会有问题吗  连iOS的一些基本知识都没有问的样子)


网易8.20现场面

从早上9点多道晚上7点多才走,上午10点50面的一面,到12点,下午四点面了二面,到五点,然后到六点二十面了hr面(不知道为啥旁边还坐了个总监),下午好像是有些人才一面,所以时间拖了挺久的,下午才一面的那些人好像都直接挂了,一开始看他们还在手写代码一想完了,都准备收拾东西回家了(算法什么的还没有复习- -)后来二面和面试官聊的比较起劲导致面试官没让我手写代码,然后等hr面等了一个多小时,由于面试官手上的档案记录了一二面面的问题,所以相当于问的问题完全没有重复,感觉面完网易自己准备的所有知识基本都被问到了,不过由于内容太多,自己有些内容记不太清了,反而最后一面面的不是太好,面完了大厅里已经没有人了。

最中规中矩的一次面试,基本好好准备都能准备的到。

网易过几天开始发offer,拿到offer再好好把题目拿出来整理一下。

9.3日  收到了offer邮件和短信! 于是把整理好的面试题都拿出来了 基本记的非常全,包括面试官的追问。

网易现场面60分钟

自我介绍

项目相关

自己写动画和用现成的有什么优缺点

IB中为啥拖出来一个weak

这个对象是由谁拥有的(view)

 因为当我们将控件拖到Storyboard上,相当于新创建了一个对象,而这个对象是加到视图控制器的view上,view有一个subViews属性,这个属性是一个数组,里面是这个view的所有子view,而我们加的控件就位于这个数组中,那么说明,实际上我们的控件对象是属于view的,也就是说view对加到它上面的控件是强引用。当我们使用Outlet属性的时候,我们是在viewController里面使用,而这个Outlet属性是有view来进行强引用的,我们在viewController里面仅仅是对其使用,并没有必要拥有它,所以是weak的。

Autolayout

copy和strong

autoreleasepool原理用法

SDWebimage原理 你自己怎么实现

block原理

怎么防止引用循环

怎么检测引用循环 在写代码的时候 facebook有个库

谈谈runtime的理解

如何对类方法和实例方法做交换

对可变数组进行copy会怎么样

NSTimer

weak实现原理

项目中遇到了什么问题

学ios的时候遇到了什么问题


tips:

class直接获取父类 isa直接用会警告

安全方面的问题 与服务器交流加密


网易二面 60分钟

引用循环

gcd怎么实现优先级 怎么实现依赖

https中间人攻击(证书有问题)

http2多路复用解决了http1的什么问题(排头阻塞HOL)

Cookie 怎么保证这个网站是这个cookie

除了get post还有什么方法

Get post区别

响应链你知道吗

我怎么让一个按钮的可点击范围变大?

(hittest返回在里面)

为啥会离屏渲染

栅格化

CALayer和UIView的关系

布局用了哪些方法

队列和线程的关系

100个随机数找最大值

对比两组数据不同部分

哈希表原理

哈希表查找复杂度

哈希表冲突处理

类族?

__block的用处

__bridge你知道吗

加锁的开销在哪

消息转发中的函数每个干啥

上午面试官问你的xxx你会了吗

arc和mrc的区别arc多了什么属性

weak怎么实现的

UITouch和UIEvent

Runloop你了解吗 mode

你怎么学ios的 你看了哪些书


网易hr面(两个面试官) 40分钟

自我介绍

Http的状态

消息摘要

Md5

afn原理

sdwebimage原理

缓存原理

沙盒的组成

app的状态

uiview周期

你最近了解了什么新兴的技术

项目的出发点

项目中的角色

未来规划

你对薪资福利的要求

还有什么想问的吗


阿里视频面 40分钟

自我介绍

ARC

@autoreleasepool

你觉得自己特别擅长的点是什么

快排的时间复杂度

DNS

assign和weak

block

循环引用

这些东西都是老师教的吗

你是如何学习ios的


面完这几天确实也发现了很多自己答错的地方(当时还说的很有自信的那种),所以还是要继续学习,顺便(可以去了解一下AFN2.x和3.x的区别)以前面试让我说AFN我就一直用runloop去说,后来发现runloop在AFN2.x里用来保活线程防止多次创建销毁(我还说成了防止收不到回调),而且这个基本面试每次都问了(我这么扯淡居然也没有怼我,想想还挺尴尬的)

(顺便,0实习经历的我,还是拿到了offer,感觉只要把自己做过的项目给描述清楚,当然项目要有一些技术含量,就可以了)

最近也开始写一些面试基础知识,结合自己面试中遇到的问题,整理了一些基础知识,详情见

iOS 面试常考基础知识

你可能感兴趣的:(iOS 面经(头条、腾讯、网易、阿里))