前言
先介绍一下自己:
三本狗一枚,之前是在半国企上班,经过自己的努力,在毕业后三年多的时间成功进入理想中的厂子步入正轨。在疫情期间因为太渣不敢裸辞,都是在职期间夜晚下班回去面试,也感谢面试官能够理解我并安排夜晚面试。一共面试了有顺丰,美图,平安,瓜子,微博,搜狗,京东,好未来还有两家D轮的公司名字具体忘了(😬)。
面试过程
基本每家公司面试都是四五轮(三四轮技术),疫情之下最后一面都会要求到现场,还好年假够多😀,如果有同学现在去面试一定要注意防护,最近北京又严重了。个人也投了BAT,TMD快手字节小米滴滴,简历都石沉大海,可能三本渣要背景没背景要学历没学历,跟大佬们比不起。不过庆幸的是那些给面试机会的都能把握住。印象最深刻的就是我东了,我竟然一同面试了两个部门,而且最后都通过了。
面经准备
算法数据结构基本没啥可说的,剑指offer推荐首选,LeetCode刷题,个人是把所有简单的都刷了一遍,基本掌握字符串,数组,链表,二叉树这几个点就差不多。计算机网络图解HTTP,图解TCP/IP,计算机操作系统,设计模式,编译原理(没看完)。剩下的就是OC基础了,因为都是下班夜晚面试,前前后后面了一个多月,还算是不负所望。
这是我在入职后的第一个假期端午节总结的,首先祝各位程序猿们在假期能够休息好,突然回到互联网的快节奏略微不适,之前早九晚六的节奏一去不复返(好怀念啊)。所以有很多面试题可能也记不太清了,但万变不离其宗。
面经
算法相关
字符串相关
- 字符串全排列
- 回文串
- 反转字符串
- 去除空格
- 无重复字符的最长子串
数组相关
- 几种基础排序算法对比和手撕
- 奇数在前偶数在后
- 二分法相关
- 动态规划
- 找到数组第二大的
- 两个栈实现一个队列
- 数组中相同数字的第一个索引位置
- 多维数组查找包含
- 数组有一个数字超过了一半,找到这个数字
链表相关
- 倒数第k个结点
- 反转链表
- 判断是否有环
- 合并两个有序的链表
- O(1)删除链表的结点
二叉树相关
- 二叉树深度和判断是否平衡
- 判断数组是否为一个二叉树的后序遍历
- 从根节点到子节点路径为某一值的路径
- 镜像二叉树
- 从上到下打印二叉树
还有些难的算法题给忘了😆,不会的就先暴力解法吧,毕竟直接说不会也不太好。
基础
runtime相关点:
- Associated Objects源码探究
- objc_msgSend
- load和initialize
- weak如何实现置nil
- category和extension引申方法查找顺序
- isa superclass
- 对象 类对象 元类对象
- KVO
runloop相关点:
- 与线程什么关系
- 原理
- 基本实践 可查看Asyndisplaykit
- CoreAnimation 手势(引申响应者链)
- 卡顿监控
- autoreleasepool
GCD相关点:
- 队列的比较
- 开辟线程的关系
- GCD ABC三个任务都是5分钟,在串行队列并行队列的执行顺序和执行时间
- dispatch_barrier_async应用场景
- 手写单例
- 三种timer的比较和理解
1 | 判断是否死锁 |
性能优化相关点:
- 启动优化
- 电量优化
- 移动端网络安全
- 卡顿监控及优化
- 包体积优化
- 崩溃监控符号化配合日志体系
计算机网络相关:
- 三次握手四次挥手
- Get和Post区别
- cookie和session的区别么
- 服务端返回的几种状态码,断点续传服务端返回的状态码
- 如何保证UDP可靠
- HTTP和HTTPS的区别及对HTTPS的理解
- Charles为什么能抓HTTPS
其他:
- KVC和KVO,KVC的查找顺序
- 多线程和常见锁的应用
- 响应者链,比如某个版本突然发现按钮不能点击了,如何解决如何定位
- 平时对crash怎么处理,如何预防
- 如何解决线上的crash
- APP签名原理
- 内存优化
- 常见循环引用,及解决循环引用的方案
- block原理,_ _blcok为什么能修改,block的几种类型
- 几种属性修饰符的比较
- 开发中常用设计模式
- 如何设计sdk
- 深拷贝浅拷贝,数组和字符串
- 编译的几个阶段,retain和release是哪个阶段添加的
- clang自定义插件写过没有,能干什么
- 一些常用开源库的源码
- KVO和Notification
最后
由于每次面试跨度大没有记得太清是哪个公司了,但问题点就是上面那些,iOS有人要,只是缺少一份自己的努力。可能大部分同学跟我一样对数据结构很抵触(除了那些大佬哈,大二数据结构挂科,那个时候死活看不懂),一定要踏实看下去,先看书,最后再刷算法。
简历可以直接用Macdown编写,导出PDF是最完美了,如果有同学在心仪的公司,内推的优先级会比较高。一定要准备好再去面试,不然就会浪费一些面试机会。如果太久没有面试了,难免一开始会紧张,可以先拿小公司练手,找找面试感觉。当然如果认识大佬,也可以请求大佬改改简历,模拟面试,这样能快速定位自己的问题,并且能得到相应的指导。
最后一定要整理自己的杀手锏,简历上的都要了解,每家公司都会花一些时间了解你过去做了什么,有什么突出的,并且能带来什么收益。
愿所有同学都能收货自己心仪的offer。🤗