写点什么

作为 Java 程序员,java 尚学堂和尚硅谷,看完我工资从 12K 变成了 20K

用户头像
极客开源
关注
发布于: 刚刚

一面(个人感觉回答得还不错)

1. 自我介绍 2. 说项目,项目问的非常深(本人提到之前做过的一篇关于 FULL GC 的问题定位和优化的项目以及一个多并发的项目)


2.1 对于自己产于过项目的系统定位是否清楚?2.2 对于系统的各个模块是否清楚?2.3 每个接口的 tps?2.4 对于上下游系统的依赖?2.5 对于使用到的中间件、框架是否清楚?


3. 你觉得你做的项目中最有亮点的事情?4. memcache redis 同类中间的差异、优缺点?使用注意点有哪些?


memcache 可以存储的数据类型只有字符串类型,而 redis 可以存储字符,list,sorted List,hash 数据类型的数据;memcache 不支持数据持久化,redis 支持 RDB,AOF 持久化;memcache 不支持集群,redis 支持 redis-cluster 集群


5. redis 分布式锁说说


我提到了 redis 的 setnx()方法,以及使用 redis 的 KV 结构,lock 作为 key,key 对应的 value 使用 map 结构,map 中使用请求 requestId 作为 map 的 key,过期时间作为 map 的 value,获取锁使用 cas 算法,比较时间是否过期来获取锁和释放锁


6. TCP,UDP7. 多并发项目的并发量,有没有压测过,以及 QPS,请求的消息量太大,使用自己创建的任务队列会不会使内存爆?8. Redis 集群主从数据同步


主从集群实现了数据的读写分离,主服务器负责读写,偏重写,从服务器只负责读。主服务器启动之后向从服务器发送日志文件,从服务器根据日志文件进行数据的更新,之后如果主服务器有写操作,也会向从服务器发送相应的写操作


9. Zookeeper 实现选举的原理


zk 的选举过程中其起始所有结点的状态为 looking,当某个结点的选票超过所有结点数的一半,该结点就会成为 leader,结点状态为 leading,其他结点会成为 followers,结点状态为 following。选举的依据是(sid,zxid)数据,sid 代表结点的 ID,zxid 代表事务 ID,选举过程中每个结点第一轮选举会选举自己作为 leader,将(sid,zxid)发送给其他结点,其他结点收到数据(sid,zxid)与自身的数据做比较,如果 zxid 比自身 zxid 的要大,则直接选举当前结点;如果小于,坚持选举自己;如果 zxid 相等,比较 sid 哪个大,大者作为 leader。


10. 说说分布式(我说的是 Dubbo)11. 数据库事务,分布式数据一致性如何实现?


读者可以了解一下 ZAB 协议,我大概就是围着 ZAB 协议说的


12. SpringIOC,SpringAOP


我简单说了说 IOC,AOP 的原理,以及原理依赖的模式


13. 数据库事务的隔离级别


四大隔离界别:Uncommitted-read Commited-read Repeated-read Serializable 分别针对数据库脏读,不可重复读,虚读问题


14. 谈谈 RPC


RPC 远程调用,说了说原理,使用到的组件,以及 RPC 主要的任务:序列化,传输数据,方法调用(方法对应的 ID)


15. 算法题:笔试题-最短路径问题(这道题是通过的)某物流派送员 p,需要给 a、b、c、d4 个快递点派送包裹,请问派送员需要选择什么的路线,才能完成最短路程的派送。假设如图派送员的起点坐标(0,0),派送路线只能沿着图中的方格边行驶,每个小格都是正方形,且边长为 1,如 p 到 d 的距离就是 4。随机输入 n 个派送点坐标,求输出最短派送路线值(从起点开始完成 n 个点派送并回到起始点的距离)。


我的做法是使用排列算法,将所有的情况排列出来,计算最短路径

二面(个人感觉回答的特别垃圾,六道问题回答了两道)

1. 自我介绍 2. 怼项目,各个角度刁难 3. FULL GC 问题排查工具


我做项目时其实没有使用什么工具,就是用 Linux 命令 TOP,TOP 交互命令 1,H;jsatck,jstat 以及 JVM 的相关参数和 JVM 日志的查看


4. 从事开发遇到最具有难度的问题 5. Spring 事务,嵌套事务


这道题其实我是被问懵了,我回答得相当不好,一直回答事务隔离那一块,面试完我总结了一下有关 Spring 事务相关知识点


6. 面向接口编程的好处是什么


问的问题太抽象,我回答不好,面试官说不够完善


7. 数据库两个 insert 同时操作同一张表,第一个线程操作一半,问第二个线程会发生什么?


我回答的稀巴烂,下来查了一下,大概就是说这里涉及到的锁是间歇锁,读者可以看看相关知识


8. 说说死锁


举个例子,两个线程 1 和 2,两个锁 a 和 b,线程 1 拿到 a 锁后申请要 b 锁,而同时线程 2 已经拿到 b 锁,要申请 a 锁,两个线程之间陷入僵持状态

最后

小编利用空余时间整理了一份《MySQL 性能调优手册》,初衷也很简单,就是希望能够帮助到大家,减轻大家的负担和节省时间。


关于这个,给大家看一份学习大纲(PDF)文件,每一个分支里面会有详细的介绍。



这里都是以图片形式展示介绍,如要下载原文件以及更多的性能调优笔记(MySQL+Tomcat+JVM)!


本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

用户头像

极客开源

关注

还未添加个人签名 2021.03.18 加入

还未添加个人简介

评论

发布
暂无评论
作为Java程序员,java尚学堂和尚硅谷,看完我工资从12K变成了20K