记一次失败的面经(2021.3.23 字节跳动 全栈实习生-轻服务 一面挂)
背景
大三,计算机科学与技术专业。本次面试是我在决定直接在国内就业后第一次找实习的面试。
简历投在了实习僧,本来投的是后端开发,但是邮件发来却显示是全栈,联系了HR说是可能业务部看了我的简历认为我更适合做全栈开发于是发了全栈的面试邀请。
在收到邮件之前对面试流程基本没什么了解,我是从收到邮件的那一刻才开始查资料准备的面试。查了很多别人的面经和一些技巧,发现我有非常多的东西还存在缺陷,因此在这记录一下,为以后的求职做准备。
面试过程
一、自我介绍
一般面试上来都会让做自我介绍,我这里有点紧张,不是很自信,说了很多没用的东西,有点结巴,感觉不是很舒服。
二、项目介绍
简历上有一些我关于全栈开发的项目经历,于是让我先介绍了一下我的项目,问了项目的开发流程等,主要是问了关于项目中有没有遇到什么困难,怎么解决的。这块说实话我也不是很懂怎么表达,就随便讲了讲。
三、前端部分
- 前端这块首先问了我对于前端的了解,问我都会一些什么前端技术,我就是把我会的一些说了:HTML,JavaScript,CSS,JQuery,Vue之类的,然后提到了我的CSS学的很烂,基本都是用的开源库。
- 然后问了我对那种语言比较熟悉,可能是希望我用js来做下面的题,但是我还是选择了Java,讲了一下我对语言和开发之间关系的理解
- 然后是出了两道简单的数据结构的题目,一个是计算树的深度,一个是反转二叉树。这块确实将近两年前学的,已经忘得差不多了,就磨磨唧唧写了半天,还错了几个地方。
- 之后是问了我对cookie的了解,简述一下cookie的原理,cookie的作用,cookie的域,session保存的实现
- 在问完cookie之后,问了我如何在ajax请求中带上cookie做跨域请求,这块完全没接触过,蒙了几句
四、后端部分
- 后端这主要是问了我怎么处理高并发。我知道这个是后端的经典题,但是确实没什么准备,我自己的网站基本也遇不到高并发,所以就比较懵。
- 我先说了使用CDN,然后问了我CDN的概念,作用以及实现方法,个人感觉回答没什么问题但是不够全面也不够准确,好几次都不小心说成了BGP边界网关协议
- 然后是使用队列,这个我完全就是只知道有队列但是完全不知道怎么用,所以基本问的都不懂。
- 最坑的是我说了个负载均衡,还是一样,只知道怎么用不知道原理,讲了半天也没讲出来啥有用的,基本就凉凉
- 我估计面试官看我什么也说不出来,就基本不在问后端的东西了
五、数据库
- 数据库这块也是问了我一个我从来没用过的东西,索引。就只是单纯知道索引这回事,但是以前从来没实际使用过,所以就导致完全不知道怎么回答,先是问了我索引是什么,然后是怎么实现的索引,什么数据类型适合做索引还是有索引的时间复杂度。这块索引的概念基本说出来也但是颠三倒四,一会说树结构索引一会说哈希表索引,然后什么类型的数据这块我确实是不知道,给了很多提示但是我从来没接触过,没办法,都已经提示到了整型顺序排列的数据适不适合和布尔型适不适合,但是还是没答出来。然后时间复杂度这块我回答了好几遍O(1),就一直是按照哈希表来说的,结果问的是树。
- 其实到这基本就没啥指望了,后端后端不行索引索引不会,但是还是问了我个基础的问题,数据库事务。很不幸,我就记得个事务原子性,说了半天也不知道说的是啥。
六、提问
然后是问我有什么疑问没有。到这其实我已经完全不知道说啥了,就问了问字节跳动的企业文化和需要什么样的工程师,问了问我以后应该怎么学习往哪个方向发展,说了很多但是基本就是说我的基础能力需要提升,要学得扎实一点云云。
总结
就是一句话,还是学的太少。也没什么好说的,只能提升自身能力。做了一份大纲,之后按照大纲来补充。先做了数据结构、算法和网络工程的大纲,关于前后端数据库和安卓的部分之后再发上来。
-
数据结构
- 一、线性表
- 1、元素移动
- 2、元素查找
- 二、栈和队列
- 1、栈的实现
- ①顺序栈
- ②链栈
- 2、队列的实现
- ①顺序队列
- ②循环队列
- ③链队列
- ④双端队列
- 3、两个栈实现一个队列
- 4、两个队列实现一个栈
- 5、出栈顺序判断
- 6、一个数组实现两个栈
- 三、字符串、多维数组、矩阵
- 1、串的存储结构
- 2、主串与子串
- 3、模式匹配(见算法)
- 4、数组的存储结构
- 5、数组的寻址
- 6、特殊(稠密)矩阵的压缩
- ①对称矩阵
- ②三角矩阵
- ③对角矩阵
- 7、稀疏矩阵的压缩
- ①三元组顺序表
- ②十字链表
- 8、稀疏矩阵的转置
- ①直接存、顺序取
- ②顺序取、直接存
9、广义表
- 四、树与二叉树
- 1、节点的度,根节点,叶子节点,孩子节点,双亲结点,兄弟节点,祖先,子孙
- 2、树的深度
- 3、树的表示
- ①双亲表示法
- ②孩子表示法
- ③孩子兄弟表示法
- 3、二叉树
- ①子树、斜树、满二叉树
- ②二叉树的遍历
- a、前序遍历
- b、中序遍历
- c、后序遍历
- d、层序遍历
- ③存储结构
- a、二叉顺序表
- b、二叉链表
- ④反转二叉树
- 4、树、森林、二叉树
- 5、最优二叉树
- ①哈夫曼算法
- ②哈夫曼编码
- 6、线索链表
- 7、堆与优先队列
- 五、图
- 1、有向图、无向图、网图、权
- 2、邻接、度
- 3、稀疏图、稠密图
- 4、路径、路径长度、回路
- 5、连通图、连通分量
- 6、图的遍历(见算法BFS\DFS)
- 7、图的存储结构
- ①邻接矩阵
- ②邻接表
- 8、最小生成树(见算法)
-
算法
- 一、查找
- 1、寻路算法(最短路)
- ①弗洛伊德算法
- ②迪杰斯特拉算法
- ③贝尔曼-福特算法
- 2、并查集
- 3、二分查找(折半查找)
- 4、优先搜索
- ①深度优先搜索
- ②广度优先搜索
- 5、二叉搜索树
- ①二叉搜索树
- a、二叉查找树
- b、红黑树
- ②线段树
- ①二叉搜索树
- 6、双向广度搜索
- 7、A*
- 二、树相关算法
- 1、最小生成树
- ①普利姆算法
- ②克鲁斯克尔算法
- 2、二叉查找树(见一)
- 3、平衡二叉树
- 4、B树
- 5、B+树
- 三、图算法
- 1、二分图匹配
- 2、最小路径覆盖
- 3、网络流、最小费用流
- 四、排序(时间复杂度Avg/时间复杂度Worst/时间复杂度Best/空间复杂度/稳定性)
- 1、比较排序
- ①交换排序
- a、冒泡排序(O(n^2)/O(n^2)/O(n)/O(1)/稳定)
- b、快速排序(O(nlog_2n)/O(n^2)/O(nlog_2n)/O(nlog_2n)/不稳定)
- ②插入排序
- a、简单插入排序(O(n^2)/O(n^2)/O(n)/O(1)/稳定)
- b、希尔排序(O(n^1.3)/O(n^2)/O(n)/O(1)/不稳定)
- ③选择排序
- a、简单选择排序(O(n^2)/O(n^2)/O(n^2)/O(1)/不稳定)
- b、堆排序(O(nlog_2n)/O(nlog_2n)/O(nlog_2n)/O(1)/不稳定)
- ④归并排序(O(nlog_2n)/O(nlog_2n)/O(nlog_2n)/O(n)/稳定)
- a、二路归并排序
- b、多路归并排序
- ①交换排序
- 2、非比较排序
- ①计数排序(O(n+k)/O(n+k)/O(n+k)/O(n+k)/稳定)
- ②桶排序(O(n+k)/O(n^2)/O(n)/O(n+k)/稳定)
- ③基数排序(O(nk)/O(nk)/O(n*k)/O(n+k)/稳定)
- 五、动态规划DP
- 1、背包问题
- 2、最长公共子序列LCS
- 3、最长递增子串
- 4、三角剖分
- 5、记忆化dp
- 六、数学算法
- 1、辗转相除法
- 2、(高精度)大数乘除法
- 3、多边形
- 七、博弈论
- 1、博弈树
- 2、二进制法
- 八、字符串模式匹配
- 1、BF算法
- 2、KMP算法
-
网络工程
- 一、计算机网络体系结构分层
- 1、OSI七层协议
- a、物理层
- b、数据链路层
- c、网络层
- d、运输层
- e、会话层
- f、表示层
- g、应用层
- 2、TCP/IP四层协议
- a、网络接口层
- b、网际层IP
- c、运输层TCP/UDP
- d、应用层
- 3、五层协议
- a、物理层
- b、数据链路层
- c、网络层
- d、运输层
- e、应用层
- 二、物理层
- 三、数据链路层
- 四、网络层
- 五、运输层
- 六、应用层
- 七、TCP/IP协议(网络层与运输层)
- 1、定义:TCP/IP协议群。包括
- ①网际协议:IP/ICMP/ARP
- ②传输协议:TPC/IP
- ③应用协议:HTTP/SMTP/FTP/TELNET/SNMP
- ④路由控制协议:RIP/OSPF/BGP
- 2、包、帧、数据包、段、消息
- 3、数据流处理
- 4、传输协议层
- ①端口号
- ②UDP
- ③TCP
- a、三次握手
- b、四次挥手
- c、应答可靠性
- 5、网际层IP协议
- ①IP地址
- ②路由
- ③分包与组包
- ④IPv6
- ⑤域名系统DNS
- ⑥ARP
- ⑦ICMP
- ⑧DHCP
- ⑨NAT
- ⑩IP隧道
- 6、应用协议HTTP
- ①工作流程
- a、建立TCP链接
- b、客户端发送请求命令
- c、客户端发送请求头信息
- d、服务端应答
- e、服务端返回响应头信息
- f、服务端向客户端发送数据
- g、服务器关闭TCP连接
- ②基础
- a、请求与相应
- b、无状态
- c、cookie
- d、URI定位资源
- e、请求方法(HTTP/1.1)
- 1、GET
- 2、POST
- 3、PUT
- 4、HEAD、DELETE、OPTIONS、TRACE、CONNECT
- f、持久连接
- g、管线化
- ③报文
- a、HTTP报文
- b、报文结构
- 1、报文首部、空行、报文主题
- 2、请求报文
- 3、响应报文
- c、请求行
- d、状态行
- e、通用首字段
- 1、Cache-Control
- 2、Connection
- 3、Data
- 4、Pragma
- 5、Trailer
- 6、Transfer-Encoding
- 7、Upgrade
- 8、Via
- 9、Warning
- f、请求首部字段
- 1、Accept
- 2、Accept-Charset
- 3、Accept-Encoding
- 4、Accept-Language
- 5、Authorization
- 6、Expect
- 7、Form
- 8、Host
- 9、If-Match
- 10、If-Modified-Since
- 11、If-None-Match
- 12、If-Range
- 13、If-Unmodified-Since
- 14、Max-Forwards
- 15、Proxy-Authorization
- 16、Range
- 17、Referer
- 18、TE
- 19、User-Agent
- g、响应首部字段
- 1、Accept-Ranges
- 2、Age
- 3、ETag
- 4、Location
- 5、Proxy-Authenticate
- 6、Retry-After
- 7、Server
- 8、Vary
- 9、WWW-Authenticate
- h、实体首部字段
- 1、Allow
- 2、Content-Encoding
- 3、Content-Language
- 4、Content-Length
- 5、Content-Location
- 6、Content-MD5
- 7、Content-Range
- 8、Content-Type
- 9、Expires
- 10、Last-Modified
- i、Cookie首部字段
- 1、Set-Cookie
- 2、Cookie
- j、其他字段
- ④响应代码
- a、1xx:信息状态码
- b、2xx:成功状态码
- 1、200 OK 请求成功
- 2、204 No Content 请求成功但返回的响应报文没有实体主体
- 3、206 Partical Content 客户端进行了范围请求
- c、3xx:重定向状态码
- 1、301 Moved Permanently 永久性重定向
- 2、302 Found 临时性重定向
- 3、303 See Other 请求资源存在另一URI
- 4、304 Not Modified 客户端发送附带请求时服务端允许访问但不满足条件
- 5、307 Temporary Redirect 临时重定向
- d、4xx:客户端错误状态码
- 1、400 Bad Request 报文语法错误
- 2、401 Unauthorized 发送的请求需要有通过HTTP认证的认证信息
- 3、403 Forbidden 请求的资源被服务器拒绝访问
- 4、404 Not Found 无法在服务器上找到请求的资源
- e、5xx:服务器错误状态码
- 1、500 Internal Server Error 服务端在执行请求时发生错误
- 2、503 Service Unavailable 服务器正处于超载或停机维护
- ⑤HTTP报文实体
- a、报文结构
- b、内容编码
- c、传输编码
- d、分块编码
- e、多部分媒体类型
- f、范围请求
- ⑥协作Web服务器
- a、代理服务器
- b、缓存服务器
- c、网关服务器
- d、隧道
- e、Agent代理
本篇内容为原创内容,采用CC BY-NC-SA 4.0协议许可
2021-03-24 11:05
UtopiaXC
于大连
- ①工作流程
Comments | NOTHING