首页 > 【21届秋招内推】字节跳动校招面经(后端&安卓客户端)
头像
collapsarl
编辑于 2020-09-05 17:32
+ 关注

【21届秋招内推】字节跳动校招面经(后端&安卓客户端)

UPDATE(2020.9):

时隔半年,现已入职安卓客户端,我们组负责今日头条app的研发。入职的流程和新人培训的体验都高于我的预期,食堂简直不要太棒,我连代码都还没开始撸就来捞简历了🤣
组里缺人!组里缺人!组里缺人!
【岗位城市】深圳&广州
【岗位方向】客户端开发工程师(没有客户端经历不要紧,leader手把手带入门!)
【目标人群】2021届本科及以上学历,计算机相关专业同学
【团队介绍】通用信息平台,覆盖今日头条、西瓜视频、 番茄小说等各类产品,为数亿用户持续提供优质的资讯、视频、小说等服务,致力于通过尽可能丰富的内容体裁和尽可能多的分发方式,连接人与信息,促进创作与交流,丰富大家的精神生活,让人们看到更大的世界。今日头条目前拥有推荐引擎、搜索引擎、关注订阅和内容运营等多种分发方式,平台累计超过10亿的用户,在这里既可以获取及时丰富的新闻热点资讯,也可以自我发声,高效地创作生产信息,并和有趣的人交流互动。
填写我的内推码EVKFZ78,我可以帮你查询简历进度和状态,投完麻烦在讨论区回复一下,有问必答,帮忙顶帖也好,码字不易。我在后台看到有人投了一天后没通过也不知道是谁。


/****以下为面经全文****/

前情提要(2019.12):

之前导师项目拖延,10月份才开始投简历,第一波从官网投了字节后端岗,11月4日面挂。之后看到牛客讨论区补招贴发邮件内推投了头条安卓客户端,11月29日一二面,12月3日三面,12月12日收到录用函。

我专精C语言,自认为代码能力还可以,属于那种有算法思路的话,IDE或是手撕基本都可以一遍过

C++半路出家没有系统地学过,只当是有class的c语言来用,没好好准备以前甚至连STL都不熟悉(只用过vector和map)

11.4面试前没有刷过牛客以及leetcode题库,可以说是准备极其不充分了。这次挂之后深刻反省了自己,然后刷了各种算法题(主要是剑指offer全部67题和牛客上的leetcode题库挑着刷了二十多题)

C++重点复习了高级语言特性和STL奇淫巧技(划掉)

网络这块只捡起了课程基本内容,数据库完全放弃,毕竟这两块内容从大三学完到现在,已经快四年没应用过(研究生期间在搞科学计算可视化和图形学),介绍完毕。

11.4后端(1h30min内连续两面,记不全了,答的不好,手撕代码也是半宕机状态

  1. 说一说进程和线程

  2. 程序运行中的堆和栈?谁在上?(地址从低到高分别为:代码段、数据段、BSS全局变量、堆、栈,答的时候堆栈上下位置还说反了orz)

  3. C语言程序编译过程(预处理、汇编、生成目标文件、链接、生成可执行文件)

  4. C++语言特点(封装继承多态)

  5. TCP、UDP区别,拥塞控制
  6. 用过linux么?进程后台执行(&和nohup等)?gcc编译流程?增量编译实现原理?makefile原理?(答曰用过一点儿,在linux上写过程序。面试官两眼开始放光,接下来我全程口胡:不知道,不清楚,不了解)
  7. 网络七层模型?HTTP协议在第几层?常见的HTTP状态码(前两个问题答出来了,剩下接着口胡)

  8. 数据库索引是什么数据结构?(继续口胡)
  9. 你简历里参与的项目是什么结构的(C/S)?客户端和服务端怎样通信的?(我在开始已经表示我是个打工仔,负责项目里图形可视化相关的业务,网络这块真的不是我负责的,我也不感兴趣啊喂,于是口胡一会儿后气氛陷入尴尬沉默)
  10. 今天面试到这里了,你有什么要问的?(我不死心地问:作为面试官,你希望对方在后端这个岗位应该有怎样的技能?面试官答:我们后端业务很多是基于高并发的数据和网络访问,所以希望TA最好有数据库经验,网络通信也很重要,当然分布式也是OK的……(我一个都不会给跪了))

代码:

  1. 两数之和。从一组数中找出一对和为N的数字对(标准解法:哈希+遍历。此时的我尚不知unordered_map为何物,我说可以用哈希但我不会……然后现场撸了个快排+二分)

  2. 用栈模拟队列(提示要优化,不要每次倒腾,因为我没提前刷题,所以现场没想出这个优化)

11.29安卓客户端

一面(40min):面试官只会JAVA,而我只会C++,开始了愉♂快的交流,问题先后顺序可能有误(要不然上来两个问题都不会面试官会怀疑审简历的眼瞎了)

  1. HTTP和HTTPS,get和post方法(答曰SSL加密,不了解更多,网络相关的应用没接触,遂结束计网相关问题)
  2. 数据库(表示不了解数据库,上完课就没用过记不清了,继续问学生选课场景要怎么建表,憋了一会儿答曰不会,遂结束数据库相关问题)

  3. 进程&线程。创建子线程,若父线程终止,则子线程如何?(继续运行直到线程自己结束)

  4. 进程间通信IPC(追问使用共享内存时如何进行同步)

  5. JAVA有GC机制,C++里怎么进行内存管理(手动new/delete,智能指针)

  6. 代码题:归并两个有序链表(牛客、Leetcode原题)

二面(40min):简历项目逐条撕

  1. 简历项目OpenGL渲染流程(按好几年前的课程记忆大概背了几点)

  2. 简历中的机器人项目,如何实现避障和路径规划

  3. TCP、UDP区别

  4. new和malloc

  5. 代码:一开始出了个实现生产者消费者模型,表示不熟悉(模型只记得个大概,写代码是不可能完成任务)。换了个冒泡排序,我又表示太简单。最后换成偶数长度的链表每两个交换位置(1234 -> 2143)(有原题是链表每k个一组逆序,这题相当于k=2的情况)

  6. 你没有安卓开发经验(潜台词:你研究生方向好偏啊JAVA都不会(╯‵□′)╯︵┻━┻)为什么选择客户端岗位?(答曰:本人不才,初中开始接触编程参加NOIP,没事儿就喜欢写代码。在计算机这个行业普遍很难做到专业和岗位对口,个人能力素质出色的话对很多岗位都是互通的blahblah……)
  7. 你通过哪些途径学习新技术(答:主要由项目驱动,学习新技术主要通过阅读官方文档(这点很重要,不管你读没读过,读没读懂)和别人分享的技术博客,再加上自己的实践)

三面(1h):问的很细,幸好把方向引向了自己熟悉的领域:操作系统、数据结构&算法

(小插曲:第一天刚面10+分钟面试官有紧急事情终止了,听说是产品在美帝被告了要走法律流程orz,说改天继续,当时我有点慌,幸好事后HR通知第二天接着面)

  1. 你在前面几轮面试自我感觉如何(答了自己之前表现的优缺点,数据库和网络因为科研学习没有应用就不太熟悉,强调自己数据结构算法和操作系统掌握较好,事后回想这句才是关键,避轻就重带领面试方向)

  2. C有哪些库函数

  3. static关键字(c中变量值保留,c++类成员可以不生成对象实例直接访问(追问实现机制,答不上))

  4. 引用传递和值传递
  5. 说一说多态(静态多态,动态多态,虚函数,虚函数表)
  6. C++类默认函数有几个(构造、析构、拷贝、操作符=,C++11还有2个)

  7. TCP握手挥手

  8. 排序算法知道哪些(非比较排序(基数、桶)、比较排序(选择冒泡插入、快排归并堆排))

  9. 快排复杂度(期望O(NlogN))?最坏情况(O(N2))?什么输入最坏?(答曰有序最坏,分别追问顺序和逆序,一开始脑瘫说顺序O(N)逆序O(N2)面试官奸笑:你再想想)

  10. 链表怎么排序?说一下链表快排(口头撕了蛮久的)

  11. 进程&线程?有哪些东西是线程共有的,独立的
  12. 对锁的认识(C++只有独立锁和共享锁),谈谈乐观锁和悲观锁
  13. 死锁?如何避免?

代码题:

定义一个线程类

class Thread 
{ 
    int waiting;//等待资源的id 
    int count;//已占有资源数量 
    int* holdings;//已占有资源数组(数组内存有count个整数,代表占有资源的id) 
} 
bool isThreadLocked(int n, Thread* thread)
{ 
    //TODO 
}

输入一个长度为N的Thread[]数组,判断是否存在死锁,返回true/false(哈希表+资源依赖链找环)





总结:

我觉得我的专业面其实是很窄的,现在比较热门的方向诸如机器学习、JAVA、数据库redis之类的我一概不熟悉,这对于很多岗位(比如算法岗)来说是一块不小的短板(说的还有你后端)。但是同时我也很清楚自己的长处在数据结构和算法,以及过硬的代码编写和调试能力,面客户端岗位的3道手撕代码题目都是一遍完成,几十行代码基本没出任何问题,这点可能也是面试官认同我的地方吧。此外在面试的时候,我的面试官也提到,校招对于被面试人的项目要求是很低很低的,如果有出色的项目经验会是加分项,如果没有,扎实的基本功才是硬道理,具体业务能力可以以后再学,所以不必纠结于自己有多少不会的,更多的是引导面试走向自己会的方向。

所以这里提一个小技巧,面试官如果问到不熟悉的问题和方向,尽管大方承认自己对这块不了解就行了,面试官也是在测试你的知识广度,不会为难你的,就怕刚说知道一点儿,接着一追问什么都答不上来(血的教训)。以及可以在自我介绍的时候提前给面试官透个底,说明自己擅长的领域,这对于促进面试官对你的了解是有很大帮助的,面试官知道从哪里提问,你答得也开心,最后发完offer皆大欢喜🤣。

这份面经也算经验和教训吧,认真准备真的很有用很有用很有用(说3遍)。从第一次后端挂到客户端通过中间这段时间里,通过反思和充足的准备,提升是显而易见的。面试不是一个投机取巧的过程,而是一个在短短几十分钟展现自己数年能力积累的过程。最后祝大家早日上岸,秋招没有满意offer的别着急,春招还有一战加油。


全部评论

(6) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

近期热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐