前言
面试时间约的是下午两点半,结果是整体面试开始的时间,等到快五点的时候开始面试,
面试体验还不错,面试人员有十位,整体过程还是比较友好的,主要问的有3-4位。
字节跳动一面
1.算法题,求数组中位数。
A:使用快排,partition() 返回当前排序索引,如果等于数组长度的一半就能
提前返回。
不过时间复杂度说错了。。其实应该是N,后来面试官帮忙纠错还认真解释,点
赞嗷
2.算法实现用到了重载,重载和重写有什么区别?
A:重写用于多态实现,多态分抽象多态和接口多态,涉及到字节码
invokevirtual this # 和方法表,抽象多态方法解析时调用相同偏移
量的方法代码
接口多态线扫一次寻找对应方法代码。重载用于相同类方法调用跳转。
3.项目用户接口限流怎么实现的?
A:自定义注解 + 配套的注解拦截器,Spring Boot 提供
HandlerInterceptor
快速构建,底层使用反射。
4.谈谈对 Spring AOP IOC 的理解
啊这一开始还以为想知道我对AOP 的理解,扯了一堆切点、增强逻辑啥的。。
后来面试官改问AOP 的实现原理,回答的是 JDK 动态代理和 CGLIB 代理。
5.这两个有啥区别?
A:jdk 动态代理用接口实现,对象需要实现接口;后者用扩展子类实现,private
和final