2020 春招面经

status
category
date
summary
slug
icon
tags
password
2020 春招投的是 iOS 客户端,总共面试了三家:阿里巴巴 闲鱼、字节跳动 抖音、腾讯 微信。

阿里巴巴 闲鱼

一面(60 min)

  • Flutter、RN 和 weex的区别
    • WEEX:使用 Vue 编写应用程序,当 JSBundle 从服务器端下载完成之后,WEEX 在 Android、iOS 和 Web 端会运行一个 JavaScript 引擎来执行 JSBundle,同时向各终端的 Native 渲染层发送渲染指令,并调度客户端的渲染引擎实现视图渲染、事件绑定和处理用户交互等操作。
    • React Native:使用 JavaScript 来编写应用程序,通过 C++ 层实现动态链接库(.so 文件),以作为中间适配层进行桥接,并实现 JavaScript 端与原生平台的双向通信,然后调用原生组件执行页面渲染操作,在提高了开发效率的同时又保留了原生的用户体验。
    • Flutter:与 React Native 和 WEEX 使用原生组件渲染界面不同,Flutter 并不需要使用原生组件来渲染界面,而是使用自带的 Skia 渲染引擎(Engine 层)来进行绘制,并且 Dart 代码会通过 AOT 被编译为对应平台的原生代码,实现与平台的直接通信,不需要通过 JavaScript 引擎进行桥接。
  • 谈谈 Fish Redux,redux 的设计原则?
  • iOS 瘦身
    • 代码优化、资源优化
  • Android 和 iOS 内存管理的区别
    • Android 是垃圾回收,会发生 GC 停顿;iOS 是引用计数。举例来说:当两个对象发生循环引用,iOS 中两者引用数都不为 0,因此即使不再使用,两者都不会被回收,因此造成内存泄漏;而 Android 中只要从 GC Roots 是不可达的,两者都会被清理。例如存在某个 Activity 实例,即使它和它持有的 Handler 即使产生了循环引用,只要这个 Activity 实例被回收,两者就会同时被清理。而如果 Activity 实例没有被回收,Handler 也不会再继续使用,这就产生了内存泄漏,所以对于 Handler 可以采用弱引用来解决这个问题。

二面(机试 40 min)

  • 输入多个闭区间,这多个闭区间覆盖的范围可能不连续,为了让覆盖的区间连续,请输出所有补齐区间。
  • 把整数N(>2)拆分成若干个正整数之和,求其中一种拆法,使得各正整数相乘的积最大,两种解法。

字节跳动 抖音

一面(90 min)

  • 实习时对工具线的理解,做的最有意义的事是什么
  • Android 和 iOS 内存管理的区别
  • 循环引用怎么解决,weak 是怎么实现的
  • block 的实现,怎么捕获变量,拷贝值和引用指针有什么区别,怎么处理栈和堆的关系
  • 如何实现一个优先级队列
  • 如何实现一个动态数组,负载因子和扩容因子的作用
  • 如何实现一个读写锁,分别实现读者优先和读写公平
  • 段页式内存查找的具体过程
  • 页替换算法,LRU 怎么实现
  • Linux 的 I/O 多路复用
  • TCP 如何保证可靠性,流量控制,拥塞控制
  • 算法:给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径
  • 对工作内容的期望

二面(HR 面 30 min)

  • 你的名字怎么读?
  • 在北京实习的经历,为什么想来深圳?
  • 实习时间?武汉不能开学,考不考虑先来深圳实习?
  • 你在北京的上下班时间是怎么样的,觉得那是加班吗?
  • 介绍一下联创团队,考核流程是怎样的,你会经常像熬测那样开发吗?
  • 介绍一下你做的最有意思的项目
  • 问问题

腾讯 WXG

一面(2.5 h)

  • 图片资源优化,图片压缩,图片格式,svg?
  • 代码资源优化,静态检查,通过字符串匹配删除无用的类,有什么问题?
  • 线程性能监控,如何利用子线程监控主线程?
  • 磁盘和内存的存储索引,数据库索引
  • 共享内存
  • TCP 如何保证可靠性
笔试:
  • 实现 LRU Cache
  • 两个线程交替打印
  • 最长重复子串

二面(1.5 h)

  • 自我介绍
  • 实习经历和项目经历,问的很仔细
  • hackday 时自己的角色和工作
  • 安装包体积优化,图片资源优化的策略
  • 有什么你觉得很精彩的地方我没问到,想说说吗?
  • 算法:找到数组最大的 k 个数
  • 我们现在视频是用的 TCP 还是 UDP?它们的区别是什么?
  • 如何防止中间人攻击?
  • Java 程序和 C 程序有什么不同?Android 虚拟机和桌面虚拟机有什么不同?
  • 子线程怎么更新 UI?
  • 数组和链表的区别?
  • 问问题,介绍部门和对新技术的态度

三面(40 min)

  • 讲实习经历和项目
  • 怎么实现应用资源的动态加载?
  • 怎么理解 MVC?Controller 过于臃肿的解决方案?
  • Flutter 的架构实现?用的什么渲染引擎?
  • 第一份实习为什么离职?
  • 怎么删除无用的图片?怎么压缩图片?
  • 滑动效果的优化是怎么做的?
  • Swift 和 OC 的区别?
  • UIView 和 CALayer 的区别,说几种特殊的 CALayer
  • 实习时间,问问题

四面(40 min)

  • 自我介绍,项目和实习经历
  • 为什么选择 Flutter?
  • 你的项目涉及到很多人员,是怎么组织起来的?
  • 平时有什么爱好?
  • 高数、概率论的成绩是多少?
  • 专业课最让你印象深刻的地方?
  • 数据结构和算法让你印象深刻的地方?
  • 二分查找的原理?了解平衡二叉树吗?
  • 死锁是怎么形成的?
  • 编译原理的词法分析是怎么实现的?
  • 数据库的事务是什么?
  • 将来的职业规划?
  • OpenGL 学到哪里了?图形渲染管线和光照
  • 问问题

五面(HR 面 30 min)

  • 老家在哪?疫情怎么样了?
  • 大学让你最开心的几件事?
  • 经历过哪些挫折?怎么解决的?
  • 在字节跳动实习有什么收获?概括一下公司氛围?
  • 准备工作还是读研?
  • 实习的时间?学校对实习有什么限制?
  • 有没有亲戚在腾讯?
  • 问问题
Loading...

© 刘口子 2018-2025