我的 2020 iOS BAT面试心得:腾讯、Bigo、字节、快手、伴鱼、百度、微博等

博主分享了自己在2020年面试多家知名互联网公司的经历,包括腾讯、百度、字节跳动、快手等。面试涵盖了算法、iOS基础、计算机网络、操作系统、内存管理等多个方面,还涉及到动态化技术如ReactNative、Flutter。文章以面试题的形式展示了面试过程,并强调了面试准备的重要性,包括阅读源码、理解运行时机制和深入学习CS基础知识。
摘要由CSDN通过智能技术生成

ps:后面按照自己面试的时间顺序来写,记录的面试题是我印象比较深刻的,并不一定很全,暂时先提供面试题,后面考虑给出相应的题解。

面试

我面试了大大小小的各种公司,BAT、bigo、字节、快手、伴鱼等,因为一些原因,也拒面了一些公司,拿了几家的offer。

伴鱼

伴鱼是我准备后参加的第一轮面试,有很多自己准备得不是很全,也没有完全进入面试状态,面试结果不是很好,一面就挂了。

一面

  • 算法题:判断平衡二叉树(easy)
  • 代码阅读题:(问输出)
TestObject *object1 = [[TestObject alloc] init];
__block TestObject *object2 = [[TestObject alloc] init];
object1.name = @"Mike";
object2.name = @"Sean";
__block int vi = 1;

void (^handler)(NSString *) = ^(NSString *name) {
    object1.name = name;
    object2.name = name;
    vi = 2;
}
handler(@"Lucy");

NSLog(object1.name);
NSLog(object2.name);
NSLog(@"%i", vi);

引申:

  • 如果__block int vi = 1; 这句改成int vi = 1会怎样,为什么
  • 代码中的block是什么block,为什么
    • weak的实现原理
    • weak弱引用表是可变的么还是不可变的
    • weak是在什么时候置nil的,如果同时有很多对象对性能影响大怎么办
    • UIView 和 CALayer的关系和区别
    • UIView 和 CALayer在动画上的区别
    • frame和bounds在什么情况下是不相等的
    • bounds x,y 一定是0,0么,为什么
    • bounds 改成 (50, 50, width, height)会发生什么,view本身,子View?

58

58我面了很多次,一开始面的基础研发部门,后来给我转到了企业工具研发,中间时间拖得有点长,直接拒面了。

一面

  • 说下你在开发过程中遇到过的内存泄漏
  • NSTimer 怎么处理内存泄漏
  • Delegate什么情况下会出现内存泄漏,怎么解决
  • Delegate和Notification的区别
  • 多线程相关
    • iOS中有哪些多线程技术
    • 如果有两个同步任务嵌套会怎样
    • 常见的锁,为什么要加锁
    • C依赖AB任务执行完才能执行,你怎么设计
    • 读写锁底层怎么实现
  • JavaScriptCore相关
    • 什么是JavaScriptCore,JS和Native是怎么进行通信的
    • 你知道hybrid么,说说你平常怎么使用的(因为没怎么接触过直接说的不会)
  • 后面就是聊天了,中间穿插问了下动态库和静态库的却别

二面(终面)

58这个部门的面试就两轮,二面是群面(几个人轮流面你),第一次接触这种面试形式,压力还是有点的。

  • 对我的项目表感兴趣,前面聊了不少项目的内容,问了下项目的背景,做了啥以及有哪些收益
  • 了解业内性能优化是怎么做的么
  • 你项目中是怎么做性能优化的
  • ReactNative相关
    • RN的原理
    • RN和flutter的区别
    • 你知道RN拆包么,RN为什么要拆包
    • JS是单线程的是怎么和native多线程进行交互的(这个问题有点奇葩)
    • JS和native通信的数据结构是什么
    • 你们公司对于线上JSError做了哪些事情是怎么处理的
  • 你有什么想问的么

一个创业公司

这个创业公司全程都是在聊天,后面问了些和iOS没多大关系的问题,然后就发了口头offer。

  • 聊天:在公司中学到了啥,为啥要来北京等
  • 有一个10个G的文件里面每一行都有数字,对这些数字进行排序(两种方法)
  • 怎么将彩色的图片专程黑白的
  • Web渲染和Native渲染有什么异同点

拼多多

拼多多应该是自己面的一个相对较大的公司,面试过程中和面试官有了点小分歧,后面问我源码在哪个文件哪一行,后面问得问题也基本上是我之前没怎么接触过的。

一面

  • 算法: 手写LFU(用字典写了二十多分钟,面试官让优化只知道可以用双链表优化,但是集体没能写出来)
  • 一个操作如果耗时5s后返回nil,否则返回一个字符串,你怎么设计(要求手写代码)
  • GCD中常见的操作(要求写代码)
  • Struct中有一些成员变量占多少字节
  • 一个OC对象在iOS中所占内存的字节数(这边和面试官争了下,我说是iOS中至少16个字节,因为内存对齐,面试官问你确定我说我确定,然后就有了后面的问题)
  • 你看过alloc的源码么,你刚刚说的代码是在哪个文件哪一行
  • dealloc的整个过程
  • NSURLSession相关的内容(具体忘了)
  • web和native怎么共享cookie
  • xx(前司)有动态库打包么,你看过xx ipa(前司app)的结构么
  • 内联函数和普通函数的区别
  • 怎么hook一个C函数
  • 有什么想问的么

百度

百度问得和iOS相关的较少,CS基础相对较多。

一面

  • 聊项目:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值