点击上方“蓝字”关注我们
1 Q:什么是反射?
反射机制是在运行时,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意个对象,都能够调用它的任意一个方法。在java中,只要给定类的名字,就可以通过反射机制来获得类的所有信息。这种动态获取的信息以及动态调用对象的方法的功能称为Java语言的反射机制。
2 Q:反射机制获取Class对象的方式?
1、Class.forName(“类的路径”);
2、类名.class;
3、对象名.getClass();
4、基本类型的包装类可以调用包装类的Type属性来获得该包装类的Class对象。
3 Q:Mybatis中#{}和${}的区别是什么?
#{}是预编译处理,${}是字符串替换。Mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值;Mybatis在处理${}时,就是把${}替换成变量的值。使用#{}可以有效得防止SQL注入,提高系统安全性。
4 Q:Spring 框架有哪些自动装配模式?
1、no :这是 Spring 框架的默认设置,在该设置下自动装配是关闭的,开发者需要自行在 bean 定义中用标签明确的设置依赖关系 。
2、byName :该选项可以根据 bean 名称设置依赖关系 。当向一个 bean 中自动装配一个属性时,容器将根据 bean 的名称自动在在配置文件中查询一个匹配的 bean。如果找到的话,就装配这个属性,如果没找到的话就报错 。
3、byType :该选项可以根据 bean 类型设置依赖关系 。当向一个 bean 中自动装配一个属性时,容器将根据 bean 的类型自动在在配置文件中查询一个匹配的 bean。如果找到的话,就装配这个属性,如果没找到的话就报错 。
4、constructor :构造器的自动装配和 byType 模式类似,但是仅仅适用于与有构造器相同参数的 bean,如果在容器中没有找到与构造器参数类型一致的 bean ,那么将会抛出异常 。
5、autodetect :该模式自动探测使用构造器自动装配或者 byType 自动装配 。首先,首先会尝试找合适的带参数的构造器,如果找到的话就是用构造器自动装配,如果在 bean 内部没有找到相应的构造器或者是无参构造器,容器就会自动选择 byTpe 的自动装配方式 。
5 Q:什么是正向代理和反向代理?
正向代理就是一个人发送一个请求直接就到达了目标的服务器。反向代理就是请求统一被Nginx接收,nginx反向代理服务器接收到之后,按照一定的规则分发给了后端的业务处理服务器进行处理了。
6 Q:Nginx的优缺点?
1、优点:占内存小,可实现高并发连接,处理响应快,可实现http服务器、虚拟主机、方向代理、负载均衡,Nginx配置简单,可以不暴露正式的服务器IP地址。
2、缺点:动态处理差:nginx处理静态文件好,耗费内存少,但是处理动态页面则很鸡肋,现在一般前端用nginx作为反向代理抗住压力。
7 Q:关于public、private、protected、default关键字?
public和private应该比较熟悉,但是对于protect和不写(default)比较陌生。类的成员不写访问修饰时默认为 default。默认对于同一个包中的其他类相当于公开(public),对于不是同一个包中的其他类相当于私有(private)。受保护(protected)对子类相当于公开,对不是同一包中的没有父子关系的类相当于私有。
8 Q:对于接口限流有什么解决方案?
1、限制 总并发数。(⽐如 数据库连接池、线程池)
2、限制 瞬时并发数(如 nginx 的 limit_conn 模块,⽤来限制 瞬时并发连接数)
3、限制 时间窗⼝内的平均速率(如 Guava 的 RateLimiter、nginx 的 limit_req 模块,限制每秒的平均速率)
4、限制 远程接⼝ 调⽤速率。
5、限制 MQ 的消费速率。
6、可以根据 ⽹络连接数、⽹络流量、CPU 或 内存负载 等来限流。