还愿shopee!附iOS面经
笔试
时间:3月24号,120mins
15道选择题,三道算法题
第一题AC,第二题90%,第三题70%。
一面
时间:3月28号,持续40mins左右
一.自我介绍
面试官问为什么选ios端(= =)
我解释一番以后,然后面试官直接来了一句"那感觉也没什么好问的" :(
瞬间感觉凉了。。。
二.数据结构与算法
1.二叉树
二叉搜索树,平衡二叉树,红黑树,以及它们出现的背景、特点等
这里问了一句:红黑树有什么特点?(五大性质,不会...)
2.排序
说出几个主流的排序算法,说了冒泡,插入,选择,希尔,快排,堆排,归并
说一下希尔排序实现原理?比起插入排序,希尔排序有什么特点?
三.计算机网络
1.TCP与UDP的区别
老面试题了,TCP可靠,延迟高,首部开销大,只能点对点等说了一遍
2.TCP的可靠传输机制
校验和、编号-确认-超时重传机制、滑动窗口、拥塞控制
每个部分都说明具体的实现原理,漏了一个校验和,面试官提醒我的
3.ICMP协议
不记得了。。。就记得用于追踪路由和检查网络用的
四.操作系统
1.线程与进程的区别
老面试题了,从单位、独立性、通信、上下文切换等角度谈
2.切换线程时,线程的上下文有什么?
这题不常见,书上写得很含糊,网上搜也比较难得到一个确切的答案,我就说了程序计数器、寄存器、还有缓存里的数据
3.悲观锁与乐观锁
1.问了两者的区别,然后细问乐观锁的实现:CAS
2.CAS以外还有什么办法实现乐观锁吗?(我也不知道。。。,胡扯了一个机器指令lock前缀)
4.Linux里,fork()方法是如何节省空间的
懒加载机制,没答出来,后面查的
5.进程的调度策略
FCFS、轮转、SPN、SRT、HRRN、反馈
五.数据库
1.索引的作用
加快查询速度
2.什么情况下不该用索引
值单一的属性、修改频率远高于读的频率
3.索引为什么用的是B+树而不是B树、红黑树等
六.算法
只有一道,求数组的最大子数组之和
七.反问与感悟
1.面试哪里做得还不够好
2.什么时候出结果
面完了还以为自己铁定挂了,结果第二天晚上就发二面邀请了。。。面试官一开始那句话真的吓人
二面
时间:4月2号,持续50mins左右
一.自我介绍
面试官又问为什么选ios端(= =)
二.计算机网络
1. 三次握手
1.1 三次握手的流程
三次握手的流程,一开始说的比较简单被打断,要求我说出跟报文段相关的字段(ACK,SYN,ack,seq等)
这里还提了一嘴:第三次握手时,客户端可以携带正式数据,如果不携带,那么seq跟第三次握手的seq一样
1.2 第三次握手的必要性
防止服务器建立重复的连接
这里还顺便说了每一次握手都能够检验客户端或者服务器的接收功能或者发送功能是正常的
2.HTTP
2.1 手写:HTTP的GET请求格式
反手啪得一声就上来一道题目,很快啊
要我写出HTTP的GET报文段的格式。一开始不理解什么意思,后来说是写HTTP请求的首部段的格式,也就是请求方法,URL,HTTP版本那些的
后来问了一句,abc.xyz.com?x1=y1&x2=y2里,x1和x2存放到哪里?(这里我不会,就说不确定,好像是后端如apache的web服务器会根据url解析参数)
2.2 HTTP响应报文里的状态码
从1-5开头的状态码和大体上的分类说了一遍
2.3 TCP和UDP的区别
次次面试都会问。。。
2.4 TCP的可靠机制
同上,这些算是shopee必问了吧,每次都会问这些。。
分别讲了拥塞控制里的四大部分和滑动窗口的具体实现
三.操作系统
1.进程和线程的区别
感觉每次shopee面试都会问这个问题
2.用户态和内核态
定义,区别等
3.死锁的充分条件
互斥、占有且等待、不可抢占、循环等待
四.数据库
1.手写:建立个表
2.索引
索引的作用,索引的缺点
五.数据结构与算法
1.主流的排序算法以及对应的复杂度
说了个七七八八
2.快排的实现原理
枢纽+分治
六.其他
算法题的顺序并不是连续的,记得第一道算法题是穿插在面试中间的
1.第一道算法题
判断一棵树是否为平衡二叉树
2.第二道算法题
给定一个字符串,求最长不重复字符串
真是欧皇啊,面试前练手刚好就是这道题。。。希望这运气不是从别的面试身上拿来的。。。
3.指针与引用
写完算法题以后,面试官见我用c++,问我c++的引用和指针的区别
4.Java的GC
4.1 判断对象是否为可回收对象
引用计数法、可达性分析算法
4.2 GC算法
标记-清除、标记-复制、标记-整理
5.hr问题
平常怎么学习,怎么解决问题,怎么分工合作
七.反问与感悟
1.面试哪里做的不好的
面试官说都做得不错,没有哪里不好的,还笑了。。。(然后自己也偷偷笑了一把,以为稳了)
2.什么时候出结果
hr统一处理,反正肯定是清明放假回来后了
感觉这一次面试很灵活,面试官完全是根据我的回答或者细节来出题的,中间也是边回答问题边写代码
shopee ios二面算是我最好的一次面试了,仅仅有一个小细节不确定,其他的都能答出来
按照面试官的反映,感觉稳了,希望不要毒奶自己,等hr面
等了很久,第二周周五晚上终于打电话来了。。。
HR面
时间:4月9日 19:30 14mins
从清明放假就一直等结果,不停在牛客上看别人的结果,后来8号的时候我的同学收到了后端的hr电话,9号的时候我一直都没有等到电话。本来以为至少要等到下周了,结果刚要吃饭就打电话来了。。。
大概就是问了为什么选择shopee、为什么选择ios端、希望有什么工作环境、个人的优点、缺点等常规hr问题
OC
时间: 4月16日
感谢牛客!感谢shopee对我的认可!太开心了,还愿!
助大家拿到自己的offer!
#面经##Shopee##iOS工程师##春招#