字节跳动提前批第一轮面试

刚刚面完一轮,感觉有点凉,面试官真的好好,特别是在coding部分的时候,一步一步的引导我,关键是我还是没写出代码,我记得明明是做过的,我忘了,QAQ

面试官:简单自我介绍一下

我:balabalabala。。。

面试官:简单描述一下你的项目,碰到的主要难点

我:项目是企业和工作室合作的物联网项目,我做的是平台部分的前后端,主要难点是前端的数据实时显示,用echarts做的

面试官:你们数据是怎么得到的

我:通过设备的传感器得到的,设备将数据通过网络传给服务器,服务器将数据写入到数据库,根据消息ID来进行,区分每一个请求

面试官:http三次握手是怎么一个过程?

我:首先客户端发送一个请求,有SYN字段置为1,生成seq随机数j,服务端返回SYN置为1,返回ACK=1,ack值为j+1,seq为k,客户端返回ACK=1,ack=k+1三报文握手连接建立

面试官:知道一些常用的http的header字段吗?

我:expires,Agent,content-type,method等等

面试官:get和post的区别?

我:最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。GET和POST本质上没有区别,只是在HTML的标准中两者采用这种约定进行请求,要保证安全性还是要用https

面试官:那你介绍一下https的流程

我:通过服务端的公钥加密,服务端用自己的私钥进行解密

  • 当证书验证合法后,在本地生成随机数。

  • 通过公钥加密随机数,并把加密后的随机数传输到服务端。

  • 服务端通过私钥对随机数进行解密。

  • 服务端通过客户端传入的随机数构造对称加密算法,对返回结果内容进行加密后传输。

面试官:了解rocketmq吗?了解kafka吗?

我:了解一点

面试官:一个TOPIC,怎么区分一条消息是属于哪个分区的

我:通过hash把(我是真的不太清楚)

面试官:具体的呢,怎么hash?

我:我不太记得了(QAQ),好难

面试官:好吧,那不问消息队列的了,对redis了解吗?都有哪些数据结构?

我:string,set,zset,hyperloglog,list,hash

面试官:hyperloglog是用来干嘛的?

我:用来计算机基数的,基数就是一个序列里面不重复的数

面试官:为什么要用它,有什么好处,不是说不够精确吗?

我:我记不太清了(当时是有复习到的,但是时间有点久了忘记了)

面试官:有了解Mysql吗?

我:有的

面试官:事务的隔离级别有哪些?

我:4种,未提交读,提交读,可重复读,串行化

面试官:MySQL可以解决幻读问题吗?

我:不可以,除非用串行化,或者MVCC加锁

面试官:底层数据结构是怎样的?

我:B+树

面试官:有哪些索引类型?

我:聚簇索引,非聚簇索引

面试官:聚簇索引和非聚簇索引有什么区别

我:聚簇索引的叶子节点存的是行数据,而非聚簇索引存的是地址

面试官:聚簇索引需要回表查询数据吗?

我:一般情况下是需要的,但是用索引覆盖的话就不需要了

面试官:代码题把:LeetCode 96. 不同的二叉搜索树(ps:其实就是这道题,我昨天刚做,没太在意,忘记了)

我:思路是写出来了,但是转移方程愣是写不出来,面试官给了贼多提示,真的很好,无奈我太菜了,不知道能不能过一面,欲哭无泪~~~~~

 

你可能感兴趣的:(杂项)