秋季面向大厂的面经,内有刷算法题的 CheckList 模板

最后的情况(不分时间先后排序)

  1. 美团,一面 → 二面 → 三面 → HR面 → Offer
  2. 滴滴,一面 → 二面 → HR面 → Offer
  3. 微博,一面 → 二面 → 挂
  4. 百度,一面 → 二面 → 三面 → 测评 → 主动中止(测评需要做第二次)
  5. 字节,一面 → 二面 → 三面 → HR面 → Offer
  6. 网易,一面 → 二面 → 主动中止(约三面)
  7. 阿里,一面 → 二面 → 主动中止(Base想更换为杭州)
  8. 快手,一面 → 二面 → 主动中止(约三面)
  9. 腾讯,一面 → 主动中止(约二面,Base为深圳)

PS:主动中止是因为后来Offer已决定并且到达邮箱,希望各位在Offer正式下发前需要保持面试的节奏与流程。

前期准备

技术方面

周期大约是1个月。
客户端的技术面试考的比较杂且宽泛,只会牢记八股文是不行的,结合自己的理解很重要。同时,面试官偶尔会考一些诸如“Linux进程之间通信的方法”,“浏览器键入域名到呈现的所有步骤”等问题,如果是一个各方面都了解接触过的开发工程师会比较有优势,毕竟真正的面试的时候就是各显神通。

大概是如下几项:

  1. 八股文
  2. 基本计算机知识(如操作系统,计算机网络,计算机组成原理等)
  3. 额外的开发知识(如Git,Charles抓包原理,依赖注入,组件化等)
  4. 场景问答题(如设计一个不进行强引用的容器,设计一个线程安全的数组等)

如果仅讨论八股文,基本上围绕客户端开发的知识点来进行,大约在笔记本上记了不会的约150项内容(约半本厚笔记本的量)。个人比较偏好Github,主要采取针对每个知识点来的“搜+记”的方式,围绕以下几个Repo进行:

强烈推荐第一个Repo,基本记完2020年份后面就是很多重复的了。

算法方面

周期大约是2-3个月。
主要靠刷Leetcode过日子这样子,这里的频率推荐每天3-5题为佳,需要靠足量的题目积累来熟悉解答算法题的基本套路,无他唯手熟尔。

还有,这里有个非常推荐的小Tip:
每道题开始读题前直接跑一个秒表开始计时,到完成代码提交题目开始停止计时(不必AC)。
基本上Mid难度的题目需要控制在7分钟左右为佳,一开始可能非常难做到这点,但是这项小训练可以环节在面试过程中无效的思考时间流逝。在面试的那种高压环境下(前面甚至可能被技术问题打的七零八落),需要强烈推动自己积极思考。

算法大约是如下几项:

其中,Hot100做了大概三遍,每次间隔约10天,我也非常推荐大家做好自己的问题管理,每次重新刷的时候通过打钩确认的方式来确认是否自己是真的会解这道题。
图片说明

上面是Notion做的表格,也可以用其他软件。
我把链接放在这里,各位可以Clone一个模板自行取用。
https://factual-launch-e1b.notion.site/da4136e0db6b492cac89c715230bde26?v=f8235903f2014bb5b9383efdb4f0f7e6

项目方面

把自己的项目需求总结一下,每个高价值的项目需求,需要总结该如何表述。

如何定义“高价值”,围绕项目需求的一下几点进行评估:

  • 具有前期背景
  • 较长的时间周期跨度
  • 包含难以解决的问题点
  • 含有后期维护策略
  • 跨团队协作交流

如果有一个项目需求占了以上多点,那么恭喜你,你有一个在面试中可以被说道的万金油项目需求。这里需要保留真实可信,不建议过度夸大自己的项目需求,面试官是很容易进行广度和深度上的询问的。

这里顺便贡献下其他老师的人生哲理:

后期面试

时间安排

因为我采取的策略是尽量把时间跨度缩短,所以总时间跨度大约是20天左右,最多的一个周面了10场面试(不含周末)。一般来说,如果要面试以上这么多企业的话建议一个月左右为佳,不要把战线拉的太长,不过也看各位看官姥爷自己的情况啦。

心态调整

心态调整是每个职场人的必修课,我一直想的是不要让任何一个面试官打乱整个面试的规划流程
这部分玄学又玄学,建议从自身角度出发进行考虑,我也不是什么人生相谈的对象,所以各位看官自己琢磨吧。

问题集合

容易被考到的一般性问题

也放一些容易被问到的一般类型问题,对症下药即可:

  • 你最近在业余时间研究那些技术点?可不可以分享一下你的心得?(最近这两天你有学到什么知识/技能么?)
  • 你对自己未来的职业发展有什么想法?(有没有对自己做过职业规划?)
  • 和同事产生矛盾(包括意见分歧),你一般怎么解决?
  • 能不能说一下你的业余精力都花在什么方面,或者介绍一下你的爱好?
  • 学习技术知识通常通过哪些途径?(最近看过的书/文章有哪些?)
  • 遇到疑难问题一般怎么解决?
  • 你最近遇到过的一个技术挑战是什么?怎么解决的?(能不能说一个你印象颇深的技术难点,后来怎么解决的?)
  • 最近有做过比较酷或者比较有挑战的项目么?(有没有在 GitHub 上发布过开源代码,参与过开源项目?)
  • 自身最大优点是什么,怎么证明?
  • 自身最大缺点是什么,怎么证明?
  • 为什么你要看机会?(你离职的原因是什么?)

本次被考到的问题(不分先后)

对象发消息( +消息转发流程 )
Swift是怎样调用的呢?( objc继承的c++调用 )
多线程的多种( +swift 5.5 )
如何保证线程安全
以下线程打印的结果是什么(async + sync答得不好)
讲一讲离屏渲染
离屏渲染如何DEBUG
MQTT链接
离职的原因
未来的职业规划
你在团队中的位置
你还有什么要问我的吗?
跳槽原因
GCD优先级
CPU调度算法
HLS流如何优化直播速度
h264帧之间压缩
虚拟内存
内存页面
操作系统进程通信方式
12个小球,有一个轻重不一样,称三次
RN底层JS相关
与同事之间的关系,平时会一起出去玩吗
最好的一段经历
最坏的一段经历
你跳槽想去的公司是怎样的
你能在公司干5年,是怎样一家公司,需要具备什么
RN和Native和web的区别与优劣
多线程主要用什么
多个线程结果依赖关系(dispatch_group)
为什么不用NSOperation
冷启动优化
MQTT连接,到线程保活怎么处理,断开重试逻辑
如果是RunLoop线程保活怎么做
RunLoop还可以用来做什么
P2P连接是怎样的
读的频率高,写的频率低,怎么做线程安全处理
网络UDP的应用与协议
快速排序的时间复杂度,是否稳定
LRU怎么实现
LFU怎么实现
深色模式,你是怎么做的
猜想APPLE如何实现的,CGColor怎么办,换肤怎么办
UIImage怎么办,H5上的Image怎么办,UILabel内部的bgColor和fontColor怎么办
RN插件如何调用用户名和其他方法
React的设计思想
MVVM
单向数据流
线程的优先级反转
自旋锁和互斥锁的区别
什么是死锁,举出一个例子
数组去重且保持元素顺序
设计一个线程安全的数组
设计一个不强引用的数组
静态库能被hook吗
编译的过程,越详细越好
输入浏览器到渲染出来的过程,中间用到了什么协议
手写LRU
APP启动做了哪些步骤
load 调用实际 做了什么,什么时候调用
load函数内的方法,耗时,如何取消掉?(Hook?)
msgSend的函数查找方法的流程
runloop Mode里面有Timer和 source0 + source1(区别)
Crash类型
设计模式,架构
瀑布流
category 和 原类 同时调用一个方法,怎么调用
响应者链,系统分发到到application,UIView不被点击什么时候(在上层)
组件的依赖关系
同层组件怎么调用 NSNotification MTMediator CallBack Protocol
copy和mutableCopy区别
怎样设计一个Log打点,如何控制带宽
组件化的核心是什么
进程与线程的区别
栈与堆的区别,内存排列五大区
KVO原理
组件之间通信
组件化二进制
多线程几种方式,GCD怎么控制并发数量
Dispatch_group怎么使用
Runtime有哪些用
Runtime怎么应用
Hook以后只想自己执行,别人不执行
使用block需要注意哪些
block修饰的变量底层原理
属性修饰符有哪些
对象用assign修饰会怎么样
Atomic和非atomic的区别
讲深色模式
打点系统,没发出去的打点怎么办,持久化?
组件化
网络优化
讲项目
工作中遇到的难点,音视频 + 组件化
针对难点有什么改进措施
印象最深刻的一个需求
属性的关键字,都是怎么用的,属性的本质是什么,为什么atomic无法实现线程安全
block使用上的注意点,block分为几类,区别
HTTPS的原理
HTTP2.0的特性
GCD
UIView和CALayer的区别
UIView响应者链
子线程调用UIView+CALayer
异步绘制大致流程
子线程与主线程区别
怎么做到子线程保活
source0和source1区别
怎么分发到SpringBoard 系统到UIApplication
NSTimer循环引用,property(weak)是否可以打破,NSRunLoop
weak strong dance 和 weak 单独写的区别
load main initialize的执行顺序
load函数是怎样执行的
静态库和动态库的区别
怎么通过一次判断来证明UIKit是动态库(单例内存地址)
怎样监控闪退Crash
深色模式你做了什么,类的维护
MQTT怎么做的
Autoreleasepool有什么用处
Scorlleview嵌套手势响应
一个单例中的array,dict的线程安全怎么做的
信号量和互斥锁的区别
数据库怎么进行模糊匹配
Js和native怎么交互
怎么用js向native发消息
Swift写extension,自定map
讲RN插件
讲RN渲染树,DOM在哪里维护
讲比较困难的需求
第三方库,sdwebimage机制+细节
参与过团队协作吗,如果团队协作中出现了Delay问题怎么解决
如何解决发版前的紧急需求问题
讲一讲你做的复杂的需求(MP4)
你们考虑了数据指标,如何优化转码耗时
如何优化下载问题,断点续传 + 并发处理
两个线程调用同一个变量,add 100w次,出现什么问题
如果是原子的,有可能会引起什么问题
内存寄存器上表述?(高速缓存,寄存器axcx
寄存器上从内存读较慢,缓存?淘汰算法?
对你的整体职业技术能力进行评价
内存释放两次,会造成什么问题?操作系统层面
如果释放两次,一定会造成异常吗?
操作系统用户态和内核态的区别
离屏渲染的问题,产生原因
在viewdidload内部的NSObject实例对象什么时候被释放,不是autoreleasepool?RunLoop?
UIView内部UIButton,超出范围是否响应,为什么
响应者链
Layoutsubviews何时被调用
Category覆盖方法,怎么调用原来的方法
哈希表的结构和原理
git merge 和 git rebase区别,平时怎么用,优缺点
为什么看机会的原因
Runtime的理解
内存分布,如何判断一个内存地址在哪个区
JSON转模型,如何判断类的某个字段是只读的
OC类的结构定义
深色模式

本次被考到的算法题(不分先后)

16进制转10进制
10进制转16进制
打印菱形
打印200-300的素数
大数相乘,889087923 x 1808031803 之类
字符串转换,aaabbbcc 转 a3b2c2
棋盘方格放3种球,相邻颜色需要不同
力扣 39. 组合总和(英文题面)

以上就是本次我的本次社招面试分享~

PS. 各位姥爷看我码了这么多字的份上打个广告哈~

字节抖音海外TikTok业务扩张期,不限制HC
Base上海,北京,深圳,客户端后端前端都有职位
全程简历进度跟进,其他部门也可内推,请私信我牛客网或者 wx qs_will 聊一聊哈

#2022届秋招进度交流##学习路径##内推##面经##iOS#
全部评论
学习了 感谢大佬
点赞 回复
分享
发布于 2021-11-04 15:09

相关推荐

点赞 评论 收藏
转发
5 53 评论
分享
牛客网
牛客企业服务