面试题day20
泰隆银行
-
计算机网络、数据库、操作系统有学过吗
-
TCP三次握手的过程
seq x
ack x+1 seq y
ack y+1
-
拥塞避免的方法
慢开始、拥塞避免、快恢复、快重传
-
数据库创建索引的语法
CREATE INDEX indexName ON table_name (column_name)
-
什么是平衡二叉树
左子树和右子树插值不超过一
-
怎么判断循环链表
hashset、快慢指针
-
Linux语言基础
- chmod 授权
- ps -ef | grep 查看进程
- kill -9 杀死进程
- tail -f 实时读取日志
- netstat -anp | grep 查看端口号
- ping 测试地址
- mkdir 创建文件夹
- rmdir 删除文件夹
- touch 创建文件
- rm 删除文件
- mv 移除文件
- cp 复制文件
- cat 查看文件
-
java基础:final的作用,修饰函数时呢?
变量不可修改、类不可继承、方法不能重写
-
set,list,map是否都继承了collection
map没有
-
spring框架了解吗,平时怎么学习java的
Spring IOC 容器就像是一个工厂一样,当我们需要创建一个对象的时候,只需要配置好配置文件/注解即可,完全不用考虑对象是如何被创建出来的。
Spring AOP 就是基于动态代理的,如果要代理的对象,实现了某个接口,那么Spring AOP会使用JDK Proxy,去创建代理对象,而对于没有实现接口的对象,就无法使用 JDK Proxy 去进行代理了,这时候Spring AOP会使用 Cglib 生成一个被代理对象的子类来作为代理。
顺丰
9.10一面
-
聊项目
-
redis说说你的了解,数据类型,持久化方案,内存删除策略。
- 数据类型
- string 缓存 session共享 分布式锁
- list 消息队列
- hash 存储对象
- set 集合
- zset 排行榜
- 持久化
- aof 命令
- rdb 快照 默认
- 内存删除策略
- 定时删除
- 创建一个定时器,当key有过期时间时,时间一到,定时器任务就会立即执行 将expires区域和k-v区域都删除
- 优点:节约内存
- 缺点:cpu压力较大,此时无论cpu负载量多高,都会占用cpu来释放,影响redis的吞吐量
- 惰性删除
- 数据过期后,并不会立刻删除 等到该数据下次访问的时候,redis才会删除该数据,并返回该值为nil
- 优点:节省cpu的资源
- 缺点:可能存在大量的,无人访问的数据会一直存在服务器
- 定期删除
- 每秒钟定期对redis中每个库的数据进行轮询 轮询的数据,对过期的数据随机删除一部分 如果随机删除的数据占轮训数据的比例超过一定值,继续轮询删除
- 定时删除
- 数据类型
-
redis双删不一致情况。
- 先删除缓存再更新数据库
- a删除缓存;b读db写入缓存;a更新db;a再删除缓存
- 先更新数据库再删除缓存
- 缓存失效,a读取db;b更新db删除缓存;写入缓存
- 先删除缓存再更新数据库
-
说一说JVM的类加载过程。
加载 验证 准备 解析 初始化
渤海银行
-
介绍实习项目
-
用过哪些数据库
mysql redis
-
说一说mysql数据库底层数据结构的优点和缺点
b+树
-
如何优化慢sql
-
发现慢SQL
show processlist
查询当前慢sql的语句- 开启慢日志
set global slow_query_log=1;
-
优化慢SQL
explain sql语句
的方式查看慢sql的执行计划- type 表示表的连接类型
- key 表示实际使用的索引
- rows 扫描出的行数(估算的行数)
- 分析该SQL语句索引使用情况,全表扫描情况
-
-
静态方法和非静态方法的区别
调用方式、从属、加载实际
-
知道什么是 threadlocal 吗
ThreadLocal本身并不存储值,它只是作为一个key来让线程从ThreadLocalMap获取value。
-
说一说mvc架构的好处
低耦合性、高重用性和可适用性、较低的生命周期成本、快速的部署、可维护性
多益
软件研发工程师面经
-
SpringBoot 对 Spring 的改进
监控、启动器、自动配置
-
项目中如何用到 Spring
-
了解 IoC 吗,说一下对于 IoC 的理解
Spring IOC 容器就像是一个工厂一样,当我们需要创建一个对象的时候,只需要配置好配置文件/注解即可,完全不用考虑对象是如何被创建出来的。
-
MyBatis 如何使用,源码有了解吗
配置Mybtis核心配置文件(一般将其命名为 mybatis-config.xml)
根据核心配置文件创建 SqlSessionFactory 对象
通过 SqlSessionFactory 对象创建 SqlSession 对象
通过 SqlSession 对象操作数据库 CRUD
提交事务
释放资源 -
登陆模块如何做的
-
链表与队列的使用场景
多写少读、多读少写
-
TCP 为何要进行三次握手
-
同一个网段下的主机如何通信 ,不同网段下的主机如何通信
广播协议 路由转发
-
GC 垃圾回收算法
分代 清除 复制 压缩
-
什么是线程安全
多线程操作无数据丢失
-
如何判断死锁,怎么避免死锁
双方都持有锁并需要避免多次锁定、加锁顺序执行
-
设计模式的六大原则
单一原则(Single Responsibility Principle):一个类或者一个方法只负责一项职责,尽量做到类的只有一个行为原因引起变化;
里氏替换原则(LSP liskov substitution principle):子类可以扩展父类的功能,但不能改变原有父类的功能;
依赖倒置原则(dependence inversion principle):面向接口编程;(通过接口作为参数实现应用场景)
接口隔离原则(interface segregation principle):建立单一接口;(扩展为类也是一种接口,一切皆接口)
迪米特原则(law of demeter LOD):最少知道原则,尽量降低类与类之间的耦合;
开闭原则(open closed principle):用抽象构建架构,用实现扩展原则;
-
JVM 调优参数
-Xms4g 初始堆大小4g
-Xmx4g 最大堆大小4g
-XX:+UseParNewGC 设置年轻代为并行收集
-XX:+UseConcMarkSweepGC 老年代使用CMS内存收集
-XX:+HeapDumpOnOutOfMemoryError 出现堆内存溢出时,自动导出堆内存 dump 快照
-
如何判断对象是否死亡
无其他引用 可达性算法
-
自定义线程池的最大线程数如何设定
-
某一个项目隔天上线,但前一晚出现bug,你会怎么做
-
淘宝商城如何实现个性推送,谈谈你的理解
-
HashMap 底层了解吗
-
为什么加载因子是 0.75
过高 碰撞过多 过低 扩容过多
-
有什么语言也能够实现跨平台
-
全局变量的缺点,介绍一个小实例
长期占用内存、难以定位修改、不利于后期的维护
-
为什么要有包装类
泛型、null值、序列化接口