字节跳动-后端飞书-日常实习一二面
字节跳动-后端飞书-日常实习
7-1 一面(42min)
飞书面飞书,面试官提前上线,十分友好,第一次面试,嘴都瓢了。一面非常愉快,问的也比较基础。
-
自我介绍
-
到岗、实习时间,下学期有课吗?
-
项目
-
涉及多少张表
-
负责前端还是后端(全栈)
-
前后端分离API接口如何实现鉴权(JWT)
-
项目中Redis使用,如何解决Redis宕机后系统不可用(脚手架集成;集群、封装Redis工具类并捕获异常,查数据库)
-
-
TCP 三次握手,每一次握手是为了做什么,为什么需要第三次握手
-
OSI 七层模型
-
应用层、传输层和网络层常用协议
-
数据链路层传输什么信号(MAC帧,PPP帧?说了两个)
-
HTTP 和 HTTPS 的区别(HTTPS=HTTP+SSL,加密传输,对称/非对称加密)
-
JWT包括那几个部分(head、payload、signature)
-
数据库三大范式
-
事务特性
-
事务隔离级别
-
MQ 消息重复消费解决方案(忘了,应该是设计业务幂等性、防重表)
-
Redis 缓存击穿、缓存穿透和缓存雪崩区别
-
Spring AOP实现原理,为什么要使用AOP(动态代理,jdk,cglib;代码重用巴拉巴拉)
-
抽象类与接口区别
-
屏幕共享,手写快排(3min)
-
写一个 Controller,RESTful API,接受两个int 参数,返回相加结果,讲解涉及注解原理
-
介绍部门情况
-
反问
-
学习方向
-
表现如何(应该问怎么改进的)
-
转正?
-
什么时候有结果
-
7-5 二面(53min)
又是一个很和蔼的面试官!我讲了几分钟才发现麦没开。。。
-
自我介绍(暗示面试官Java不错)
-
项目
-
系统设计,包含模块
-
Redis用来干什么(脚手架集成;缓存页面、登录过期校验、JWT……)
-
脚手架为什么要用Redis实现登录呢?(……SpringSecurity+JWT实现鉴权)
-
为什么用Redis作为缓存,不使用 应用服务器(Tomcat/JVM)作为缓存?(布吉岛,舍友跟我说:应用服务器是本地缓存、Redis服务器是分布式缓存)
-
-
为什么要同时重写equals和hashcode(Java开始了,八股文,顺便讲了一下HashMap)
-
Java NIO学过嘛,讲讲三大组件?(Selector、Channel、Buffer)
-
Buffer缓冲区原理(Buffer对象,数组/内存块,直接写入,写入读出Channel过程)
-
Java常见设计模式(单例、工厂、模板方法、动态代理……)
-
听过策略模式吗?(听是听过……嘿嘿,面试官说用的最多)
-
实现线程安全的单例模式注意点?(存在问题,双重检测,volatile、synchronized、私有构造器)
-
如何中断一个正在运行的线程?(interrupt,忘记说volatile变量了)
-
如果不响应interrupt呢?(volatile变量?中断synchronized方法是一个意思吗?,面试官给我举了个例子:迅雷暂停就是中断,让我思考思考)
-
MyBatis如何实现数据库字段与JavaBean间映射(I/O流读取XML文件,其中包含类全限定名,通过反射实例化对象)
-
如果是你实现,会使用什么技术实现数据库映射到JavaBean?(反射,面试官一直嗯嗯嗯我也不知道对不对)
-
反射是是什么?不要说怎么使用,底层实现原理(运行期动态获取/操作类;面试官解答:类型技术,Class作为实例模板,反射获取Class类模板)
-
ThreadLocal用过吗?用来干什么(线程本地变量,线程隔离;静态内部类ThreadLocalMap、Entry继承弱引用)
-
你说说为什么ThreadLocal会内存泄漏?(ThreadLocal弱引用,Java结束了)
-
HTTP请求响应包含什么内容(请求行/头/体、响应行/头/体)
-
跨域问题(协议/域名/端口号其中有不同,就存在跨域;@CrossOrigin、网关)
-
数据库为什么要第一范式?(不会,后来查了下,不满足就不是关系型数据库?)
-
联表查询join原理,两个表join为例(没了解,Nested-Loop Join)
-
你自己如何实现呢?(两张表=两个对象,各取一个相同字段,等值连接,求并结果集)
-
搞个题吧,归并排序(屏幕共享,嘿嘿,最后边界问题直接跟面试官讲思路了,呜呜)
-
我这边问题完了,你有要问的吗?
-
表现如何,有什么改进?(Java是OK的,数据库有欠缺,基础不够扎实)
-
什么时候出结果(这两天)
-