2024年11月最新互联网大厂面试经验分享【网易、阿里,springmvc面试题常问2024

3.explain执行计划看过没有?其中type字段都有哪些值?分别代表什么?

4.你有哪些sql调优经验?

Redis相关

1.redis有哪几种数据结构?给你一个key怎么知道是用的哪种结构?

2.怎么查看所有的key?redis怎么切换库?怎么清数据?

3.描述下redis淘汰策略?如果没有数据可以淘汰活着没有配置淘汰策略读请求可以正常执行吗?

4.你们项目redis是单节点的吗?如果多节点怎么同步?

5.项目里用redis存哪些数据?为什么用redis?和jetty本地缓存有什么区别?

Linux相关

1.怎么查看某个进程中的线程?

2.怎么批量替换一个文件夹下所有文件中的一个字符?(sed命令)

3.有没有用过jps jmap jstack jstat 命令,分别说下有哪些常用参数,知道多少就说多少。

我这里结合自己用jmap jstack定位到线上问题的经验说的,答完后感觉面试官挺满意的,所以说实践很重要啊~

情景模拟&其他

1.设计一个系统,每天有100亿条数据,需要在后台做实时展示和查找。

我当时回答的大体思路是nginx负载均衡,消息队列存储,多线程读取,批量插入,数据库分库分表。

面试官根据我的回答又衍生出了很多问题,如消息队列存满了怎么办?(也就是消费跟不上生产)批量插入时某一条失败了有什么影响?怎么解决?分库分表应该怎么分?怎么解决数据迁移的问题?

2.用代码实现cat 1.log |grep a |sort |uniq -c |sort -rn 的功能。

3.手撕代码。牛客题霸上的原题,可以去看看:NC127 最长公共子串

4.如果现在有一台服务器突然变得很慢,怎么去定位问题?

曹操出行


社招 Java 3年工作经验

  • JUC 里的 ReentrantLock 和 synchronized 有什么区别?(实现方式)

  • 讲讲对 AQS 的理解(AQS 的实现原理)

  • 什么是 CAS?

  • synchronized 和 CAS 的区别?

  • CAS 有什么问题?

  • 线程池的原理?

  • 线程池中什么情况下会创建非核心线程?

  • 线程池中什么情况下会触发拒绝策略?

  • Java 堆的结构

  • 如果发生 OOM 如何排查解决?

  • 新生代用什么GC算法?GC过程?

  • 老年代用什么GC算法?GC过程?

  • G1垃圾回收器的特点

  • 聊聊对事务的理解(什么是事务?事务的特性?)

  • 事务的隔离级别

  • InnoDB 和 MyISAM 的区别?

  • 如何优化慢 SQL?

  • 一亿的表,很多复杂的查询条件,查第一万页,如何优化?分库分表查询过程?

  • 二阶段、三阶段、TCC、seata

  • RocketMQ / Kafka 的存储原理

  • Netty

  • Dubbo 原理

  • 如果注册中心挂了,消费者还能连上提供者吗?为什么?

  • Dubbo 的 SPI 机制

  • 基于 Dubbo 能做什么扩展?

  • Dubbo 负载均衡算法

  • 选一个重点项目讲讲,设计、问题等等

京东


**1、手撕代码。牛客题霸上的原题,可以去看看:**NC3链表中环的入口节点

**2、**Redis 的数据结构及使用场景

(1)String字符串:字符串类型是 Redis 最基础的数据结构,首先键都是字符串类型,而且 其他几种数据结构都是在字符串类型基础上构建的,我们常使用的 set key value 命令就是字符串。常用在缓存、计数、共享Session、限速等。

(2)Hash哈希:在Redis中,哈希类型是指键值本身又是一个键值对 结构,添加命令:hset key field value。哈希可以用来存放用户信息,比如实现购物车。

(3)List列表(双向链表):列表(list)类型是用来存储多个有序的字符串。可以做简单的消息队列的功能。

(4)Set集合:集合(set)类型也是用来保存多个的字符串元素,但和列表类型不一 样的是,集合中不允许有重复元素,并且集合中的元素是无序的,不能通过 索引下标获取元素。利用 Set 的交集、并集、差集等操作,可以计算共同喜好,全部的喜好,自己独有的喜好等功能。

(5)Sorted Set有序集合(跳表实现):Sorted Set 多了一个权重参数 Score,集合中的元素能够按 Score 进行排列。可以做排行榜应用,取 TOP N 操作。

3、zset跳表的数据结构

4、ZAB协议

ZAB协议包括两种基本的模式:崩溃恢复和消息广播。当整个 Zookeeper 集群刚刚启动或者Leader服务器宕机、重启或者网络故障导致不存在过半的服务器与 Leader 服务器保持正常通信时,所有服务器进入崩溃恢复模式,首先选举产生新的 Leader 服务器,然后集群中 Follower 服务器开始与新的 Leader 服务器进行数据同步。 当集群中超过半数机器与该 Leader 服务器完成数据同步之后,退出恢复模式进入消息广播模式,Leader 服务器开始接收客户端的事务请求生成事物提案来进行事务请求处理。

5、volatile作用

(1)volatile在多处理器开发中保证了共享变量的“ 可见性”。可见性的意思是当一个线程修改一个共享变量时,另外一个线程能读到这个修改的值。(共享内存,私有内存)

(2)volatile关键字通过“内存屏障”来防止指令被重排序

1、手撕代码。牛客题霸上的原题,可以去看看:NC116把数字翻译成字符串

2、进程的组成部分

进程由进程控制块(PCB)、程序段、数据段三部分组成。

3、Redis的应用场景

(1)缓存

(2)共享Session

(3)消息队列系统

(4)分布式锁

4、单线程的Redis为什么快?

(1)纯内存操作

(2)单线程操作,避免了频繁的上下文切换

(3)合理高效的数据结构

(4)采用了非阻塞I/O多路复用机制

5、事务的基本要素**(事务特性)**

(1)原子性:事务是一个原子操作单元,其对数据的修改,要么全都执行,要么全都不执行

(2)一致性:事务开始前和结束后,数据库的完整性约束没有被破坏。

(3)隔离性:同一时间,只允许一个事务请求同一数据,不同的事务之间彼此没有任何干扰。

(4)持久性:事务完成后,事务对数据库的所有更新将被保存到数据库,不能回滚。

6、CAP定理

一个分布式系统不可能同时满足以下三种,一致性,可用性,分区容错性。在此ZooKeeper保证的是CP,ZooKeeper不能保证每次服务请求的可用性,在极端环境下,ZooKeeper可能会丢弃一些请求,消费者程序需要重新请求才能获得结果。 另外在进行leader选举时集群都是不可用,所以说,ZooKeeper不能保证服务可用性。

7、HashMapConcurrentHashMap区别

(1)由于HashMap是线程不同步的,虽然处理数据的效率高,但是在多线程的情况下存在着安全问题,因此设计了CurrentHashMap来解决多线程安全问题。

(2)HashMap在put的时候,插入的元素超过了容量(由负载因子决定)的范围就会触发扩容操作,就是rehash,这个会重新将原数组的内容重新hash到新的扩容数组中,在多线程的环境下,存在同时其他的元素也在进行put操作,如果hash值相同,可能出现同时在同一数组下用链表表示,造成闭环,导致在get时会出现死循环,所以HashMap是线程不安全的。

8、Kafka判断一个节点还活着的两个条件

(1)节点必须可以维护和 ZooKeeper 的连接,Zookeeper 通过心跳机制检查每个节点的连接

(2)如果节点是个 follower,他必须能及时的同步 leader 的写操作,延时不能太久。

百度


社招 JAVA 1年

1、 NC16 判断二叉树是否对称

2、NC32 求平方根

3、NC2 重排链表

腾讯


社招 JAVA 2年

腾讯一面:(总耗时:120min)

1、jvm内存结构介绍、代码调用过程中的内存流程;

2、java如何分配内存,多线程呢?

3、Spring如何加载注解

4、Spring启动流程、bean实例化

5、xxljob原理,使用流程

6、OOM定位、解决方式,流程

7、讲项目xxxxx

8、redis pipline是全双工还是半双工

9、云原生是什么?(这个真不会)

10、rabbitMQ原理、流程、用途

11、rabbitMQ如何保证数据到达

12、Http 1.0 1.1 2.0

13、注解使用、如何扫描

14、cas原理,缓存一致性原理(volatile、synchronized、可见性)

15、gc算法、扫描算法(优劣)、内存分区

16、jedis是否使用链接池,如何处理有序数据

算法

go代码求输出(面试官让我按自己理解猜…)

leetcode 74. 搜索二维矩阵

leetcode 链表反转

腾讯二面面经:(总耗时:100min)

1、项目简述(blablabla…);

2、MQ选型;(RocketMQ、ZeroMQ、Kafka、RabbitMQ优缺点)

3、消息可靠性保证;(数据幂等、高可用镜像集群、Confirm机制、事务机制、持久性)

4、Redis类型及源码简述;(String、Hash、ZSet、Set、Dict、GEO、HyperLogLog、BloomFilter、Stream、Bitmap等)

5、MySql和MongoDB区别;( blablabla)

6、JVM中如何扫描对象;(root、hotspot算法、cardTable)

7、GC算法;(复制、标记清除、标记整理、内存碎片及解决方式)

8、代码运行流程对应JVM内部流程;(几个关键字:栈桢、操作数栈、)

9、红黑树;(这个简单,自己吹牛逼…;红黑节点、特性等)

10、线程&协程;(blabla…)

11、阻塞IO、非阻塞IO、同步IO、异步IO、IO多路复用(区别及内部流程、用户态内核态blablabla…);

12、死锁及打破方式;(互斥、请求与保持、循环等待、阻塞;超时、银行家算法

13、一致性Hash算法详解;(热点分布、2的31个槽、虚拟节点等)

14、看什么书;(随便挑一本,开始背书)

15、对c++和java看法;(吹牛逼,吹到面试官high点)

16、自己技术发展方向;(技术or管理)

17、读过什么组件源码;(redis、JVM、MyBatis、Spring及相关基本都读过、sharding-jdbc等)

18、随便讲个源码组件源码结构及内部核心原理;(redis、MyBatis等吹牛逼)

算法

a、链表相加;

b、leetcode 1567 乘积为正数的最长子数组长度;(滑动窗口、贪心分治法求解)

阿里巴巴


两轮面试都是电面。

一面总体上还是围绕项目架构、Java基础、JVM、并发编程、数据库操作、中间件技术和Dubbo服务治理框架等展开,可能因为是云安全部门,有一半时间在考察JVM,还提问了一些编译优化的知识。

一面结束后很快安排了二面,相对一面,二面的问题更深入,问题比较刨根问底,更加注重对一些技术细节的理解和把握。比如数据库操作,面试官会详细的问你数据库插入和删除一条数据的过程在底层是如何执行的,项目里配置了读写分离,也会比较深入的就实现方法和底层逻辑展开讨论。

面试问题:

1、JVM内存分代。

2、Java 8的内存分代改进。

3、深入分析了Classloader,双亲委派机制。

4、JVM的编译优化。

5、对Java内存模型的理解,以及其在并发中的应用。

6、指令重排序,内存栅栏等。

7、HashMap的并发问题。

8、了解LinkedHashMap的应用吗?

9、在工作中遇到过哪些设计模式,是如何应用的?

爱奇艺


爱奇艺的面试都是二对一,每轮面试两个面试官。

一面比较顺利,主要是Java基础,Spring原理,Java NIO,并发和集合框架等,可能是因为视频网站,爱奇艺考察网络原理的知识多,比如TCP/IP协议、长连接与短连接等。

一面提到了自己可能会在下半年学习大数据与机器学习相关的知识,二面就在这上面栽了跟头,问了很多海量数据的问题。

面试问题:

1、手撕代码。牛客题霸上的原题,可以去练练:NC22合并两个有序的数组

2、TCP/IP协议。

3、长连接与短连接。

4、mapreduce过程。

5、多路归并的时间复杂度。

6、海量url去重类问题。

7、Java NIO使用。

7、倒排索引的原理。

8、对分词技术的了解。

面试中给了一个具体场景,考察对MapReduce过程的理解,比如Map阶段和Reduce阶段是如何进行的等,Reduce阶段面试官希望分析给出一个多路归并的时间复杂度,用外排序的知识简单分析了一下,回答的不太好。回来以后搜索了胜者树和败者树的优化,发现这里面的内容还挺多, 深刻体会到有些知识点如果平时掌握的不够全面深刻,很难信手拈来 。

字节跳动


JAVA 1年

一面:

1、final是干嘛的,用在什么地方,你们项目中有用到过吗

2、有那些集合,一个一个说linkedlist,arraylist,hashmap

3、说一下hashmap基本结构,和hashmap的扩容,hashmap的并发

4、说一下jvm的垃圾回收器,有那些,算法有哪些,他们的优缺点

5、线程池用过吗?用来干什么?说一下线程池。

6、做过sql优化吗(我简历上写了),说一下吧。

7、mysql的索引说一下,b+树的优缺点

8、说一下dubbo的架构(简历上有写)

9、说一下kafka的topic,partition,broker概念

10、kafka的主从选举机制

11、redis用过吗?有哪些数据类型,常用什么数据类型?我有说zset,那说一下zset的底层原理吧

12、linux中你用哪些命令

13、linux中想看一个文件中某个关键字出现的次数(我不会,后面还会问到。。)

15、做题:leetcode56题,合并区间

二面:

直接先做题:leetcode70 跳台阶,这个我做过所以写的很快,还说了下递归和动态规划的优缺点,

然后特别,面试官发给了一个飞书文档的连接,上面有很多实际的问题,大致有这些:

1、给一个实习生写的代码,请指出他的问题

2、给定一个订单和商品的要求,请设计表结构,然后有三个问题,分别写3条sql来。根据联合索引来设计索引。

3、接着第二题,用redis来存储上面问题查询出来的结果,该怎么写redis

然后:

1、问一个之前问过你当时你没回答上来的: linux中想看一个文件中某个关键字出现的次数,嘻嘻,那天面试完我去百度了!

2、说一下redis的主从复制,缓冲区大小,超过缓冲区大小怎么办?

小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
img

写在最后

还有一份JAVA核心知识点整理(PDF):JVM,JAVA集合,JAVA多线程并发,JAVA基础,Spring原理,微服务,Netty与RPC,网络,日志,Zookeeper,Kafka,RabbitMQ,Hbase,MongoDB,Cassandra,设计模式,负载均衡,数据库,一致性哈希,JAVA算法,数据结构,加密算法,分布式缓存,Hadoop,Spark,Storm,YARN,机器学习,云计算…

image

摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**

因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-LuWvpjo9-1711041165149)]
[外链图片转存中…(img-qKpHZqSA-1711041165150)]
[外链图片转存中…(img-Kp0uaCyL-1711041165151)]

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
[外链图片转存中…(img-zfYvFDa7-1711041165151)]

写在最后

还有一份JAVA核心知识点整理(PDF):JVM,JAVA集合,JAVA多线程并发,JAVA基础,Spring原理,微服务,Netty与RPC,网络,日志,Zookeeper,Kafka,RabbitMQ,Hbase,MongoDB,Cassandra,设计模式,负载均衡,数据库,一致性哈希,JAVA算法,数据结构,加密算法,分布式缓存,Hadoop,Spark,Storm,YARN,机器学习,云计算…

[外链图片转存中…(img-Xp0KCoPn-1711041165152)]

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

  • 28
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值