字节电商业务后端一面9.2
自我介绍
有去实习过吗?(没有)
介绍项目的架构,功能,模块,数据库表等等
网站登录相关问题
- 登录完了需要保持登录态,让用户在几天时间不用登录。保持登录态是怎么实现的?
- 使用cookie。
- 用户带着cookie来访问的时候你们会怎么使用
- 从域里面取出信息
- 取出什么信息?
- 用户名,用户密码
- cookie里会携带密码?这样不是很安全。而且每次携带cookie过来,你都会去查一次密码,比对?我觉得不现实
- emmm,验证码
- 登录完了之后浏览其他页面,你怎么知道是哪个用户呢?
- ...(问清问题)
- 那我可以伪造用户名,对吧
- 访问会携带sessionId。此时使用session
- session用来干嘛呢?
- 验证用户。
- session里面是存什么信息?
- 用户相关信息,用户名,性别,生日之类
- 怎么保证多台服务器都有这个用户信息呢?
- 使用全局session。存到global session域中。
- 怎么实现呢?
- 就是存到global session域啊...
- 就是全局session你怎么去实现这个技术?
- ....
- 就是在A服务器上登录了,session信息应该在A上,但有ABCD多台服务器,怎么能让BCD也知道用户信息呢?或者说你的session信息存在哪?
- 我的理解就是存在全局的域里面...
- 对。全局的域怎么去存储?
- 全局上下文...
- 它怎么实现在多台服务器上面都可以..?
- ....
- 这个全局的域每台机器都能拿到,你怎么去存放它呢?
- ....这个我后面再去深入了解下吧。。。
- 行,ok
- 登录完了需要保持登录态,让用户在几天时间不用登录。保持登录态是怎么实现的?
聊会数据库。
有了解过事务的隔离级别吗?
- 4种:读未提交,读已提交,可重复读,串行化
幻读是怎么产生的?
- 两次读取的数据数不一样。
能举个幻读的例子吗?
数据库的索引是用来干嘛的?
- 主要是用来提高数据检索速度,增强表之间的连接
索引用什么数据结构存储?
- B+树
为什么用B+树?
- 磁盘IO开销小。
- 查找比较稳定。效率比较高。
操作系统使用过吗?用过Linux吗?
- 没使用过。。。
数据结构
哈希查询时间复杂度是多少?
- O(1)吧。
对,O(1)。出现哈希冲突一般有什么解决方法
- 拉链法。
还有没有别的方法。除了扩容
- 优化哈希算法?
类似于拉链法解决这种冲突呢?还有吗?
....(不知道了)
解决哈希冲突有如下的方法:
开放定址法(线性探测,二次探测,伪随机探测)
链地址法
再散列法(双重散列,多重散列)
当发生冲突时,使用第二个、第三个、哈希函数计算地址,直到无冲突。缺点:计算时间增加。
建立一个公共溢出区
算法题
- 磁盘上有10G大小的文件,存储int型的数字,数据是无序的。给你1M的内存空间,把磁盘上的数据排成有序的
- 说了使用二叉排序树...
- 面试官提示:使用传统的排序算法。快排,归并这些思路
- 思考了接近20分钟最终没解决问题...
- 磁盘上有10G大小的文件,存储int型的数字,数据是无序的。给你1M的内存空间,把磁盘上的数据排成有序的
工程类题目
- 秒杀系统。两个特点:短时间内有很高的用户请求量,下单量比较大;商品的数量有限,不能使得每个购买者都买到,即不能超卖。问服务端怎么设计,涉及的接口,如何防止刚才说的两个特点,以及局部设计
- 想了5分钟,大概讲了一下
- 行。ok。了解你的思路。数据库表你会怎么设计?设计哪些核心表
- 商品表应该有哪几个字段,用户表应该有哪几个字段(现场编)
- 秒杀系统。两个特点:短时间内有很高的用户请求量,下单量比较大;商品的数量有限,不能使得每个购买者都买到,即不能超卖。问服务端怎么设计,涉及的接口,如何防止刚才说的两个特点,以及局部设计
反问阶段
今天字节发来感谢信了,没过。害。大家加油吧!
#面经##校招##Java工程师#