最近面试了不少家公司,从一家非外包跳到了外包(委屈脸Ծ‸Ծ),下面总结一下最近的一些心得体会
1.如果在做技术只是为了过日子,而没多大兴趣,那你必须需要考虑一下行业发展方向了。选定一个行业,深入某个行业发展,熟悉业务+技术,你会得到更多。懂业务的技术人,往往比技术大牛,牛逼(所以我选了这家银行外包)
2.面试中问了挺过关于运维的东西的,比如redis的集群策略,mq的集群策略等等,如果你公司中有运维,不需要你做搭建部署的工作,那你也得关注和学习公司所有运用的相关技术,多向运维学习
3.很多面试官都会顺着你的简历去问,不会的别写,写了就得会,别给自己挖坑!
4.简历和自我介绍凸显自己的亮点!想想自己有什么亮点或者使自己拥有亮点,比如熟悉微服务相关技术栈,熟悉数据库优化等等,数据库优化比较吃香,不管哪家公司都需要数据库相关技术,推荐学习这个点
5.想工资高点,可以试着学好英语,进外企,这个应该比进大厂容易多了
面试题
工作经验2年,这次面试的是中级java,以下是一些比较常问的面试题,答案就自己Google吧
java基础
1.线程的各种状态
2.线程池的创建方式
3.set底层实现原理
4.HashMap,HashTable和CurrentHashMap的区别
5.常见设计模式
6.实现线程同步的几种方式
7.synchronized的底层实现原理
Spring相关
1.spring的事务管理类型
2.spring Bean的作用域
3.spingmvc原理
4.SpringMVC的controller是线程安全的吗
5.springboot配置文件加载原理
Mysql相关
1.mysql中索引的结构
2.聚簇索引,单列索引和多列索引的区别
3.mysql为什么需用b+Tree做索引结构
4.分布式系统中,主键如何选择
**ANS:**在只使用单数据库时,使用自增主键ID无疑是最适合的。但在集群、主从架构上时就会有一些问题,比如 : 主键的全局唯一
-
UUID:uuid 是杂乱无章的,每次插入的主键位置是不确定的,可能在开头,也可能在中间,在进行主键物理排序的时候,势必会造成大量的 IO操作影响效率,因此不适合使用 UUID 做物理主键。比较适合的做法是把 uuid 作为逻辑主键,物理主键依然使用 自增ID;或者使用UNHEX()函数转换UUID至为16位字节的数字存储
-
通过应用程序生成一个 GUID,然后和数据一起插入切分后的集群
-
Redis 生成 ID:这主要依赖于 Redis 是单线程的,所以也可以用生成全局唯一的 ID。
5.mysql优化
JVM相关
1.类的加载过程
2.常见垃圾回收算法
3.Full GC的触发条件
4.JVM调优
微服务与分布式相关
1.Ribbon的负载均衡策略
2.你知道哪几种负载均衡算法
3.eureka保护机制
4.eureka和zookepper区别
5.你如何理解springCloud
6.分布式锁解决方案
7.分布式事务解决方案
中间件相关
1.RabbitMq的几种工作模式
2.RabbitMq集群模式
3.redis集群策略
4.redis可以存1千万数据吗?
ANS:当数据量达到1千万左右时,由于内存中不能存储如此大量数目的数据,频繁同磁盘进行数据交换,导致数据查询、存储性能的急剧下降,将导致服务不可用。
5.你公司所用的消息中间是什么,为什么选它?(同问,各种消息中间件的比较)
6.RabbitMq如何保证数据不丢失
7.缓存穿透,缓存击穿和缓存雪崩
看完后,可能你会说有些东西你根本接触不到或者没用,甭说了,面试官就是要问。不管你是否想往技术这块深入发展,只要你想跳槽涨工资,就好好学吧,多问多做。若后期想转型,则可以边学边往自己想要的方向发展。Just Do It!
小彩蛋:这次面试遇到一家奇葩的公司,面试了2分钟,就做了个简单自我介绍和简单的无关技术问答,然后就过了,13k(懵逼脸o((⊙﹏⊙))o),然后我直接拒了(提醒:这种公司千万不要去,虽然给的还行,但肯定是个大坑,这么简陋的面试就知道!)
如果觉得不错,点赞收藏哦!