作者:geek_bobo
链接:https://ac.nowcoder.com/discuss/624990?type=2&order=0&pos=27&page=1&ncTraceId=&channel=-1&source_id=discuss_tag_nctrack
来源:牛客网
- 自我介绍
- 介绍一下项目
- 分库分表
- 介绍一下你理解的JVM
- GC回收算法
- OOM的排查
- 对分布式的了解
- SQL索引优化。
- 索引失效
- 线程池的参数
- redis的数据类型
- SpringBoot
- 线程的状态和线程状态之间的转换。
- log日志有几个级别
- 异常体系
- 反问
面试过程23min,面试的总体感觉不错,面试官很和蔼。许愿offer
介绍一下项目
几乎每一个都会问关于项目的问题,就算抄的,直接网上下载的,一定要了解他做了什么,怎么做,选用的技术栈,遇到问题的解决方法。唬住了叫50k,没唬住叫5k。
分库分表
- 分库:从单个数据库拆分成多个数据库的过程,将数据散落在多个数据库中。
- 分表:从单张表拆分成多张表的过程,将数据散落在多张表内。
一般只做水平分表,id使用雪花算法分布式id。
介绍一下你理解的JVM
计算机组成的硬件和操作系统之后就是虚拟机,各类应用多基于虚拟机。
java语言的跨平台性,靠jvm实现。
.java->.class->类加载器->运行数据区(运行数据区有堆栈等,外联执行引擎和本地方法接口)
绝大部分gc都是在堆中,因为堆中有:类加载读取了文件后, 类,方法,常量,变量,引用的真是对象
GC回收算法
可达性分析、引用计数法,复制算法,标记清除,标记压缩算法。
OOM的排查
ps -ef | grep 应用名
jstat -gc pid 5000(时间间隔)
ps参数
e (all processes)显示所有用户的进程此参数的效果和指定"a"参数相同
a 显示所有用户的所有进程(包括其它用户);
r 显示运行中的进程;
l 长格式输出;
f 用树形格式来显示进程;
SQL索引优化。
不会
索引失效
mysql觉得全表扫描更快时。剩下太晦涩记不住。
线程池的参数
七个
核心线程数,最大线程数,线程创建后无任务存活时间,存活时间单位,任务队列,线程工厂,拒绝策略
四大拒绝策略
ThreadPoolExecutor.AbortPolicy:丢弃任务并抛出RejectedExecutionException异常。
ThreadPoolExecutor.DiscardPolicy:丢弃任务,但是不抛出异常。
ThreadPoolExecutor.DiscardOldestPolicy:丢弃队列最前面的任务,然后重新提交被拒绝的任务
ThreadPoolExecutor.CallerRunsPolicy:由调用线程(提交任务的线程)处理该任务
redis的数据类型
string 常规key-value缓存应用; 常规计数:微博数,粉丝数等。 粉丝
hash hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象,后续操作的时候,你可以直接仅仅修改这个对象中的某个字段的值。如用户信息
key=JavaUser293847
value={
“id”: 1,
“name”: “SnailClimb”,
“age”: 22,
“location”: “Wuhan, Hubei”
}
list list 就是链表,Redis list 的应用场景非常多,也是Redis最重要的数据结构之一,比如微博的关注列表,粉丝列表,消息列表等功能都可以用Redis的 list 结构来实现。
set set 对外提供的功能与list类似是一个列表的功能,特殊之处在于 set 是可以自动排重并不重复。共同关注、共同粉丝、共同喜好等功能
zset 和set相比,sorted set增加了一个权重参数score,使得集合中的元素能够按score进行有序排列。,弹幕信息
SpringBoot
我认为是springmvc是升级版,springboot遵循约定大于配置,去除了视图解析,专注的后台控制,简化了配置。
我感觉boot是前后端分离的理念产物,springBoot专注于单体微服务接口开发,和前端解耦。
线程的状态和线程状态之间的转换。
新建/就绪/运行/堵塞/死亡。
log日志有几个级别
debugg/info/warning/error/CRITICAL
DEBUG:详细的信息,通常只出现在诊断问题上
INFO:确认一切按预期运行
WARNING:一个迹象表明,一些意想不到的事情发生了,或表明一些问题- 在不久的将来(例如。磁盘空间低”)。这个软件还能按预期工作。
ERROR:更严重的问题,软件没能执行一些功能
CRITICAL:一个严重的错误,这表明程序本身可能无法继续运行
异常体系
反问
分人
对hr问环境待遇
1、公司的公司氛围、团队建设是怎样子的?
2、这个岗位出差、加班多吗?
3、新人有培训吗?
4、公司的晋升机制是什么样子的呢?
5、公司有餐补、房补、交通补助之类的吗?
6、当面试官问你的薪资要求时,你可以先问一下公司的薪酬体系
7、您认为考核这个岗位员工的最重要指标有哪些?
8、您觉得这个团队的氛围怎么样?
对技术,问技术
1、自己所应聘的部门有多少人?进去后是由谁负责带?
基本上根据这个部门员工的人数,你就可以大致了解他们的实力和规模,甚至是预测出他们这个部门目前处于一个什么样的水平和状态。
2、贵公司就前端而言所用到的技术栈?
看自己掌握的技术是否与公司所用的技术是否匹配,并且可以看出自己与工作中所需要技能的差距。
3、贵公司的培训项目是什么样的呢?
4、这次面试多久可以出结果?是否还有下一轮?
5、学习建议类
(如果面试的时候对自己的技术面很没底的话,这个时候你可以问一问别人关于学习前端的一些经验,一般面试官都很乐于告诉你的)
6、您希望我们实习生身上具有什么样的特质呢?
(这个是看令人心动的offer上get到的问题,个人觉得很好)
7、您面试到现在,看了这么多候选人,您觉得我相对于这个岗位,还有哪些差距需要改善?