腾讯csig一面凉经
春招投得稍微晚些,之前被非Java岗捞了,不匹配就直接凉了,这次是春招的第一个Java的面试,还是有很多欠缺。
面试时间:3.23
一些基础:
1. 讲下垃圾回收。什么时候会stop the worlds
2. 讲下Java的IO。
就是BIO、NIO、AIO这些。
BIO:同步阻塞IO。NIO:同步非阻塞IO。 AIO:异步IO。
3. nginx反向代理知道吗,说下什么是反向代理,什么是正向代理?
正向代理是隐藏了真实的请求客户端,服务端不知道客户端是谁。
反向代理是隐藏了真实的服务端,常用来做负载均衡和保护真正服务器的安全。
4. 讲下负载均衡。
5. 那如果代理服务器挂了怎么办,岂不是增大了风险?
这个问题没答好,说的是一般代理服务器只是做转发,不是处理业务,所以挂的几率很小。但是面试官好像不满意,蹲个正确答案!
6. 如何知道派发给了哪个节点?(负载均衡策略)
轮询、加权轮询:请求轮流分配;根据服务器不同的处理能力,给服务器分配不同的权值。
随机:随机分配,会碰撞。
根据最小响应时间:负载均衡设备对内部各服务器发出一个探测请求(如ping),根据内部中各服务器对探测请求的最快响应时间,决定哪个。
一致性哈希:对请求取哈希值,分发到相应虚拟节点。用的哈希环。
7. mybatis是怎样工作的,和springboot如何结合?
mybatis是半自动ORM映射。内部封装了JDBC,所以开发时只需要关注SQL语句本身,不需要花经历创建数据库链接、加载驱动等等。
可以用 xml或注解来配置、映射原生信息,将pojo映射成数据库中的记录,
通过xml或注解来将执行的statement配置起来,通过java对象和statement中的sql的动态参数进行映射,生成最终执行的sql语句。最后由mybatis框架执行sql,映射成java对象返回。
8. 说下AOP的原理。
提到了代理模式、动态代理。
9. 为什么是动态代理,不是静态代理?动态代理和静态代理的区别?
动态代理: 在运行创建代理。 通过反射、invoke,将原来的method拦截,执行更新后的method。
静态代理:程序员创建或特定工具自动生成源代码,编译时将接口、被代理类和代理类等确定下来,程序运行之前,代理类的.class文件就已经生成。
其中 分为JDK动态代理(被代理的类必须实现一个接口)和CGLIB动态代理。
Spring AOP是动态代理,AspectJ是静态代理。
10. Maven的原理,如何配置?
提到了pom依赖。具体流程:读取pom.xml,下载依赖jar包到本地库,执行构建过程/阶段/目标,执行插件。
11. 那pom依赖是如何建立的?有没有遇到过依赖冲突,如何解决的?
依赖冲突:版本不兼容。两种解决方式:1. 统一版本,为jar包统一一个版本。2. 排除加载。在别的用到这个jar包的地方加上说明,告诉它不用自己加载依赖,用别人的。
12. Java泛型是什么时候确认是哪种类型的?
泛型是通过类型擦除来实现的。只在编译阶段有效。在对象进入和离开方法的边界处添加类型检查和类型转换的方法。即泛型信息不会进行到运行阶段。
13. C++的泛型呢,知道吗?
不知道。
14. 开发过程中如何排查问题?
说了日志。
网上看的:日志、打断点等。
15. 数据库表的设计原则?
答得是范式。
整体面试40min左右,没有写题,面试官态度很好。其实问题难度都不大,多多少少也都说上来了点,但是确实了解得不够深入。