一面
首先面试官跟我说了一下他面试的时候,可能会记录下我的表现,提前跟我打了个招呼。
上来先是简单的自我介绍。
-
你简历里,项目里都是偏向Android的,那为什么现在要面java后端的呢?
-
springboot和spring cloud最大的区别是什么?在概念上有什么区别,或者说适用的场景有什么区别。
-
spring中的配置,讲一讲主要是用到了什么样的技术。
-
说一下注解都包含哪些类型?
-
如果你定义了两个注解,然后一个是运行时的,一个是编译时的,那它们两个在整个程序,从准备阶段、编译和运行阶段,有什么区别?就是为什么要有这些type。
-
运行时还能拿到编译时候的注解吗?
-
Redis适用的场景是什么?假如一个系统有了redis,就有哪些功能,Redis和它的同类替代品有什么区别?
-
Redis的主从节点之间的区别是什么?什么时候进行切换?
-
Redis单机大概能撑多少的QPS吗?
-
Redis都有哪些数据结构?先说下五种基本的。
-
说一下zset用到了哪些底层数据结构。什么时候发生这些数据结构之间的切换。
-
跳表的查询时间复杂度,按照member查询和按照score查询,时间复杂度分别是多少。
-
你觉得rabbitMQ适用于什么场景
-
那么MQ的主要作用是什么?
-
说下你对解耦的理解。关于MQ上,在解耦方面上,你可以说说自己的想法。
-
Nginx怎么解决跨域的问题。你先说下什么是跨域。那么APP中的跨域呢?
面试官说项目就先聊到这里。
-
Redis中的分布式你是怎么实现的?
-
那如果在集群中,Redis中锁的创建和释放,对于整个集群来说,意味着什么,发生了什么,可以说下嘛?
-
写一个Linux命令,查出当前目录中,所有创建时间在一个月以前的文件,并压缩到指定文件夹。你可以查资料,就是你可以使用搜索引擎。(把我惊呆了,第一个面试让我用搜索引擎的...)
-
java的concurrenthashmap和hashmap的区别
-
说一下它们俩的内部实现。
-
说一下ConcurrentModificationException,遇到过吗?具体是什么?
-
新生代和老年代的区别,为什么要这么分代呢?
-
听说过sync-flood攻击吗(应该是syn-flood,面试官的发音有点emmm)
-
说一下死锁的产生条件。
-
内存碎片是如何产生的。
先考一个智力题,有100只狼和1只羊,狼吃了羊就会变成羊,那么狼会不会去吃羊。
接下来是代码题,给定两个有序的数组,求出所有的元素中,第k小的。
最后就是反问。你投递的是抖音直播,关于直播这块有什么想问的吗?我感觉我回答的有些送命,我说的是我基本不怎么看直播...
然后面试官说:你稍微等会,一会二面来找你。
二面10分钟后就开始了。
二面
先做个自我介绍。
-
我看你做客户端比较多,为什么现在做了java后端呢?
-
技术方面你觉得自己掌握的比较好的方面有哪些?
-
java中有一个叫泛型,我有一个这样的例子(面试官手打的例子),List<A> list ,我想放入B,其中的AB这两个对象毫无关系。怎么写呢?事后想想不会是直接把泛型去掉吧??
-
那假泛型有哪些坑?
-
java典型的垃圾回收是怎么做的?
-
有哪些可以作为GC Roots。
-
以一种体系化的方式,给我介绍一下垃圾回收。
-
垃圾回收会stop the world,这一步会发生在什么时候,以及如何避免?
-
为什么必须要stop the world?
-
标记复制的标记,是先去找gc root吗?那你想过这么一个问题吗,我做新生代垃圾回收的时候,我怎么去处理被老年代引用的对象。
-
回到stop the world,用户线程是怎么被停下来的?
-
什么样的点是safe point呢?为什么要选择这些点做safe point呢?
-
TCP在建立连接的时候是三次握手,而挥手是四次呢?
-
断开连接的时候有个状态是TIME-WAIT,为什么要有这个状态?这个状态的时间是多少呢?
算法:给定一棵二叉树,然后呢我们要把它就地按照中序遍历使它变成双向链表。
-
mysql用在哪些场景呢?
-
数据库的隔离级别,有一个repeatable read,这个隔离级别什么时候会用到,为什么要用到这个?什么时候需要可重复读?
-
volatile的作用是?那你觉得它和repeatable read是冲突的吗?为什么这两个技术是截然相反的呢?
-
为什么会有可见性问题?工作内存具体在哪里?
-
为什么要进行指令重排?
-
指令重排会带来什么问题?
全部评论
(14) 回帖