最新阿里腾讯头条美团等iOS面试总结

前言 git

=========面试

最近春招一直在紧张的面试中,如今已经拿了头条offer,因此也没那么紧张了。决定把面试题拿出来给你们分享一下,欢迎你们来一块儿探讨。如今先简单的分享一下面试题。算法

美团一面

记不太清了23333数据库

主要问项目的一些技术点编程

如何让一个label靠左,一个label靠右,而后右边的label可以彻底显示json

算法奇数排在前面,偶数排在后面后端

智力题,一个骑手送餐,ABCD商店,送给abcd四我的设计模式

kvo的实现原理数组

消息调用的过程安全

get和post的区别

http有哪些部分

tcp和udp的区别

七层模型

美团二面

讲一讲响应链

如何经过一个view查找它所在的viewController

如何扩大view的响应范围

微信分享大图如何实现,从进程的角度

进程间的通讯方式,并举例

两个进程分别指向同一个地址空间并初始化一个值,分别输出是什么

算法,判断一个字符串是否全部的大写字母都在小写字母前面

修改podfile文件后,怎么用git diff显示出修改后版本和当前版本的不一样,让我来设计

程序执行的过程

若是想要删除本身的一段代码,如何删除(在程序执行的过程当中删除)

用过脚本编程吗

了解先后端吗

各科成绩,成绩排名

做为一个开发者,有一个学习的氛围跟一个交流圈子特别重要,这是一个个人iOS交流群:761407670 进群密码000,无论你是小白仍是大牛欢迎入驻 ,分享BAT,阿里面试题、面试经验,讨论技术, 你们一块儿交流学习成长!

如下资料在群文件可自行下载!

阿里一面

先介绍了项目,而后问了一些项目中的问题,而后开始问基础

属性的关键字

浅拷贝和深拷贝的区别

Block的循环引用、如何解决、原理

三种Block

Block和delegate的比较

kvo的实现原理

Autorelease pool的实现原理

消息转发机制

线程死锁的四个条件

进程和线程的区别

持久化

还问了数据库的知识我当时说我全忘了就没问了

中途还讨论了massonery的约束应该写在哪里,我说应该写在layoutSubViews,他说会调用屡次,而后争论了一下子

阿里二面

介绍项目

性能优化

YYModel和AF源码

如何本身设计json转model

架构

迷之算法题

image.jpeg

阿里三面

一个安卓的面试官。。。。。

主要问了项目的一些东西 和给一些场景问我如何实现

自我介绍 介绍一些项目难点

主线程是相对于什么而言的

一张图片的内存占用大小是由什么决定的

索引的做用

索引的优缺点

在数组中找最小的k个数

淘宝下拉加载更多如何优化

淘宝页面发送HTTP请求的过程

介绍一下MVVM

知道哪些设计模式

头条一面

MVC的一些缺点

讲一讲其它架构

你知道哪些编码方式

算法字符串翻转

HTTPS

多线程的方式和它们的区别

队列和线程的关系

一道线程安全的题

有哪些锁

属性的关键字

assign能够用于OC对象吗

copy和strong的区别

weak如何实现自动赋nil

为何不可变对象要用copy

assing可使用在对象中吗

头条二面

Pod update和pod install的区别

layoutIfNeeded和setNeedsLayout的区别

抓包工具抓取HTTPS的原理

isEquel和hash的关系

SD的源码

bitmap的结构

可变数组的实现原理

如何hook一个对象的方法,而不影响其它对象

如何避免if else

自旋锁和互斥锁的区别

头条三面

介绍项目,主要介绍本身强项一点的地方

数组cop后里面的元素会复制一份新的吗

数组的浅拷贝与深拷贝

TCP为何是三次握手和四次挥手

基本就是走走形式了,主要就是问了一些我的方面的东西。。。。。

腾讯一面

介绍项目的网络层

为何要使用HTTP???为何不直接用TCP

如何保证HTTP传输到达

HTTP头部有哪些内容

讲一讲拥塞控制

MVVM如何实现绑定

block和通知的区别,分别适用什么场景

算法。连续问了好几个,都是数组,层层递进的,可是我忘了,只记得最后是找出数组中重复的数字

进程和线程的区别

程序在运行时操做系统除了分配内存空间还有什么

进程间通讯的方式

如何检测应用是否卡顿

好像没多少问题了,记不太清,而后他说完了,我感受好快,觉得要挂了,就强行讲了些runloop和性能优化的东西,而后他说好了,你和下一轮面试官再说吧

腾讯二面

OC中对象的结构

多态

Ping是什么协议

知道MTU吗

TCP头部多长,IP呢

线程同步的方式

iOS中有哪些锁

MVC和MVVM的区别

了解哪些设计模式

存一个通信录,包括增删改查,用什么数据结构

看过哪些源码,讲讲思路

两个链表找第一个相同结点

字符串旋转

找链表的倒数第k个结点

把一个链表比某个值大的放在左边,比它小的放在右边

二叉树的中序遍历,非递归

百度一面

我也不知道为啥个人简历会被一个作底层开发的部门拿去,而后面试很尴尬,全是计算机基础

大概回忆一下

进程和线程的区别

一个进程有哪些区

拥塞控制

进程间通讯的方式

七层模型

TCP和UDP的区别

传输层和网络层分别是作什么的

UDP能够实现一对多??

算法 求数组的最长子数组

Http2.0如1.x的区别

写在最后

以上的面试题确定是不完整的,只能根据个人印象记录我能想起来的了,并且即时是一个看似简单的题,你若是没有真正弄明白它的原理的话,在面试过程当中你也颇有可能被问懵,因此必定要打好基础,要知其然并知其因此然。

喜欢的话能够点个赞:+1:或关注。

====================

做为一个开发者,有一个学习的氛围跟一个交流圈子特别重要,这是一个个人iOS交流群:761407670 进群密码000,无论你是小白仍是大牛欢迎入驻 ,分享BAT,阿里面试题、面试经验,讨论技术, 你们一块儿交流学习成长!