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 的设计原则?
- 单一数据源
- state 只读
- 纯函数修改 state
- 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...