面试公司:北京华承汇金融服务外包有限公司
面试岗位:Java工程师面试难度:较难面试结果:未通过
面试问题:1.自我介绍(比较短,一直不知道怎么自我介绍) 2.Redis为什么快(基于内存,IO多路复用,单线程,使用C语言并有很多优化) 3.Redis数据结构对于内存占用的优化(sdshdr5, sdshdr8, sdshdr16, sdshdr32, sdshdr64, 字符串越短,使用越少的内存存储额外信息;list 和 hash 元素少的时候使用 ziplist 编码) 4.Mysql 索引类型(聚簇索引和非聚簇索引,hash索引) 5.数据库读写分离的优缺点(写会加锁,降低数据库并发量,读写分离提高并发量;缺点是读服务器会存在延迟) 6.rabbitmq 介绍(说了topic,direct,fanout,header模式),重复消费问题(没答上来,说项目中没考虑到) 7.springboot 最大的特点(自动配置),启动注解和配置文件(记不清了) 8.JVM 内存模型和各自作用(程序计数器,JVM虚拟机栈,本地方法栈,堆,方法区),哪些是线程私有的(程序计数器,JVM虚拟机栈,本地方法栈) 9.String 能被继承吗(不能,被final修饰),和StringBuilder,StringBuffer区别(这两个可变,StringBuffer线程安全) 10.重写和重载区别(重载:方法名字相同,参数不同;重写发生在运行期,是子类对父类的允许访问的方法的实现过程进行重新编写),重写的修饰符和抛出异常大小(重写方法的修饰符更大,异常更小) 11.查看进程的指令(ps),查看cpu使用情况(top),改变文件权限(chmod) 12.TCP 可靠性(面向连接,数据包校验,重新排序,超时重发,流量控制)



