写点什么

二面余额宝(交叉面),mybatis 功能架构

用户头像
极客good
关注
发布于: 刚刚
  • 应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描

  • SQL 索引的顺序,字段的顺序

  • 查看 SQL 是不是使用了索引?(有什么工具)

  • TCP 和 UDP 的区别?TCP 数据传输过程中怎么做到可靠的?

  • 说下你知道的排序算法吧

  • 查找一个数组的中位数?


[](


)二面


=====================================================================


  • 你有什么问题想问我的吗?(常规问询)

  • 自我介绍、工作经历、技术栈

  • 项目中你学到了什么技术?

  • 微服务划分的粒度?

  • 微服务的高可用怎么保证的?

  • 负载均衡与反向代理,隔离,限流,降级,超时与重试,回滚,压力测试与应急预案

  • 常用的负载均衡,该怎么用,你能说下吗?


[](


)(技术问)


========================================================================


  • http 重定向

  • DNS 负载均衡

  • 反向代理负载均衡

  • IP 负载均衡(LVS-NAT)

  • 直接路由(LVS-DR)

  • IP 隧道(LVS-TUN)

  • 网关能够为后端服务带来哪些好处?

  • Spring Bean 的生命周期

  • xml 中配置的 init、destroy 方法怎么可以做到调用具体的方法?反射的机制

  • Object 类中的方法

  • 对象比较是否相同

  • hashmap put 方法存放的时候怎么判断是否是重复的

  • Object toString 方法常用的地方,为什么要重写该方法

  • Set 和 List 区别?

  • ArrayList 和 LinkedList 区别

  • 如果存取相同的数据,ArrayList 和 LinkedList 谁占用空间更大?

  • Set 存的顺序是有序的吗?

  • 常见 Set 的实现有哪些?

  • TreeSet 对存入对数据有什么要求呢?

  • HashSet 的底层实现呢?

  • TreeSet 底层源码有看过吗?

  • HashSet 是不是线程安全的?为什么不是线程安全的?

  • Java 中有哪些线程安全的 Map?

  • HashTable 你了解过吗?

  • 如何保证线程安全问题?

  • synchronized、lock

  • volatile 的原子性问题?为什么 i++ 这种不支持原子性?从计算机原理的设计来讲下不能保证原子性的原因 happens before 原理

  • cas 操作

  • lock 和 synchronized 的区别?

  • 公平锁和非公平锁

  • Java 读写锁

  • 读写锁设计主要解决什么问题?

  • 你项目除了写 Java 代码,还有前端代码,那你知道前端有哪些框架吗?

  • MySQL 分页查询语句

  • MySQL 事务特性和隔离级别


[](


)二、事务的并发问题


============================================================================


  • 不可重复读会出现在什么场景?

  • sql having 的使用场景

  • 前端浏览器地址的一个 http 请求到后端整个流程是怎么样?

  • http 默认端口,https 默认端口

  • DNS 你知道是干嘛的吗?

  • 你们开发用的 ide 是啥?你能说下 idea 的常用几个快捷键吧?

  • 代码版本管理你们用的是啥?

  • git rebase 和 merge 有什么区别?

  • 你们公司加班多吗?(题外话)


举例回答:


项目用 Spring 比较多,有没有了解 Spring 的原理?AOP 和 IOC 的原理


答:(1). IoC(Inversion of Control)是指容器控制程序对象之间的关系,而不是传统实现中,由程序代码


【一线大厂Java面试题解析+核心总结学习笔记+最新架构讲解视频+实战项目源码讲义】
浏览器打开:qq.cn.hn/FTf 免费领取
复制代码


直接操控。控制权由应用代码中转到了外部容器,控制权的转移是所谓反转。 对于 Spring 而言,就是由 Spring 来控制对象的生命周期和对象之间的关系;IoC 还有另外一个名字——“依赖注入(Dependency Injection)”。从名字上理解,所谓依赖注入,即组件之间的依赖关系由容器在运行期决定,即由容器动态地将某种依赖关系注入到组件之中。


(2). 在 Spring 的工作方式中,所有的类都会在 spring 容器中登记,告诉 spring 这是个什么东西,你需要什么东西,然后 spring 会在系统运行到适当的时候,把你要的东西主动给你,同时也把你交给其他需要你的东西。所有的类的创建、销毁都由 spring 来控制,也就是说控制对象生存周期的不再是引用它的对象,而是 spring。对于某个具体的对象而言,以前是它控制其他对象,现在是所有对象都被 spring 控制,所以这叫控制反转。


(3). 在系统运行中,动态的向某个对象提供它所需要的其他对象。


(4). 依赖注入的思想是通过反射机制实现的,在实例化一个类时,它通过反射调用类中 set 方法将事先保存在 HashMap 中的类属性注入到类中。 总而言之,在传统的对象创建方式中,通常由调用者来创建被调用者的实例,而在 Spring 中创建被调用者的工作由 Spring 来完成,然后注入调用者,即所谓的依赖注入 or 控制反转。 注入方式有两种:依赖注入和设置注入; IoC 的优点:降低了组件之间的耦合,降低了业务对象之间替换的复杂性,使之能够灵活的管理对象。


AOP(Aspect Oriented Programming)


(1). AOP 面向方面编程基于 IoC,是对 OOP 的有益补充;


(2). AOP 利用一种称为“横切”的技术,剖解开封装的对象内部,并将那些影响了 多个类的公共行为封装到一个可重用模块,并将其名为“Aspect”,即方面。所谓“方面”,简单地说,就是将那些与业务无关,却为业务模块所共同调用的 逻辑或责任封装起来,比如日志记录,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可操作性和可维护性。


(3). AOP 代表的是一个横向的关 系,将“对象”比作一个空心的圆柱体,其中封装的是对象的属性和行为;则面向方面编程的方法,就是将这个圆柱体以切面形式剖开,选择性的提供业务逻辑。而 剖开的切面,也就是所谓的“方面”了。然后它又以巧夺天功的妙手将这些剖开的切面复原,不留痕迹,但完成了效果。

用户头像

极客good

关注

还未添加个人签名 2021.03.18 加入

还未添加个人简介

评论

发布
暂无评论
二面余额宝(交叉面),mybatis功能架构