字节提前批java后台开发面试一面
2021-8-x日字节面试一面
选的是杭州电商那边的部门
正式批不选这个部门了。面试体验很差。
项目问题
你的项目分了哪几个模块.
底层的数据传传输格式是什么样的。
八股
字符编码的utf8 gbk为什么设计这么多格式。
进程线程区别
死锁怎么产生的,怎么避免死锁。
(互斥、不可剥夺、循环等待、请求与保持。 破坏四个条件)
Java线程安全的保证
Tcp,https在哪一层
为什么把网络分为这么多层
子网掩码
http https的区别,https的详细流程
hash索引b+树索引区别
联合索引生效条件
数据库三范式
写题
1.
sql:学生成绩表 table1, 学生、课程、成绩,(name,sbuject,score),查询出所有课程都大于80分的学生的平均成绩。
2.
算法:求全排列的下一个数:如1234 下一个数是1243,1243下一个数是1324.
原题leetcode - https://leetcode-cn.com/problems/next-permutation/
设计题:
给出微信pc端的登录的技术流程。(讲给技术人员听的流程)
这个题的体验很差,面试官只会对照网上的答案bb个不停。
答案转载自
https://blog.csdn.net/pseudonym_/article/details/84311297
用户访问微信网页版,此时微信服务器会为其生成一个全局唯一的UUID。然后这个UUID就存放在上面路径 login.weixin.qq.com/l/obsbQ-Dzag==的后面,此时该操作并没有和用户有交互,所以该ID仅仅是个唯一字符串而已,系统并不知道该ID会和哪个用户相绑定。
如果过此时你不断地刷新,你会发现每次的ID都会发生过变化。感兴趣的可以自己手动来抓包,这里就不做示范了。注意:此时服务器和更改你网页还会建立一个长连接,为了节约系统资源,如果一段时间不扫描,便会超时。返回状态为408。
用户扫描PC端的二维码,返回状态码为201,并且生成一个询问,是否登录。这个步骤的目的是为了获取起生成的全局唯一UUID,为了下一步和微信绑在一起。
用户如果此时点击确认登陆,则会像系统发送一条请求,并且将UUID和用户账号(或者token)一块发送过去。
系统受到这一步的目的是将UUIIDI和用户账号(或token)绑定在一起,因为二者都是唯一,便可以确定唯一的对应关系。处理完该关系后,系统会向PC端反馈消息,这个UUID对应的用户是A,然后网页便可请求加载A的微信信息和资料。
二维码扫描看起来好像很高大上,其实原理还是比较简单的。首先浏览器获取一个唯一的、临时的UUID,然后等待用户扫描,如果扫描并且确认,后台系统就会将二者绑定,然后发送也浏览器这个UUID绑定的用户信息。从而确定对应关系。
注意:在超时、网络断开、或者其他设备浏览器上登陆后,,此前绑定的UUID将会失效,这样会形成更有效的安全防护。有些二维码不能扫是因为它会访问钓鱼网站,从而造成财产直接或间接流失。
不出意外是凉了,面试官很装...
#字节跳动提前批面试##面经##校招##字节跳动#