五面阿里Java后端开发,最终斩获P6 offer!外包的我太不容易了!

269 阅读4分钟

前言

这里写的是我面试的阿里Java后端开发的面经。前面的几面,就不写了。最近太忙+身体状态一直不好,没怎么及时的总结,因为最近面试的太多了,觉得都是差不多的吧,总共4次技术面 1次hr面。

操作系统

1.进程间通信有哪些,详细说明自己在哪种场景下用过哪种方式

2.死锁产生的条件

3.java中的线程有几种状态?详细说明

4.os中管道的实现,问的很深,记不到具体的问题了

5.分段和分页解释一下

6.虚拟地址、逻辑地址、线性地址、物理地址的区别

7.协程和线程和进程的区别,谈谈你的理解

网络

1.三次握手四次挥手,三次挥手可不可以

2.OSI和TCP/IP的区别(第一个问题是问我网络看的哪本书学习的,我说tcp/ip详解)

3.http server服务,现在要做一个针对用户维度或者接口维度的频控,假设一秒100这种,问在不改变原有接口服务的情况下,你如何实现

4.网络安全相关,csrf这种攻击如何防范

5.各种协议问我了解过没有,例如TCP/UDP/ICMP,这个问题比较常见

6.微服务和http服务的区别,你对两者的理解

数据库

1.你自己使用mysql中遇到过乱码问题没有,如何解决的,产生原因是什么

2.Select * From table_name where filed_name != NULL 这个sql语句是什么意思,你觉得有没有问题

3.关键字where和having的区别

4.介绍一下mysql数据库引擎innodb,及mysql的四种隔离级别

5.用过什么索引,使用这个索引有什么要注意的

6.数据的分库分表会产生什么问题,如何解决

7.写一个sql语句,给表t_score 字段 id(int),score(varchar),team1_id(int),team2_id (int)

给表t_team 字段id(int),name(varchar),完成输出这种效果的语句(一条完成):id:xx,team1_name:中国,team2_name:日本,score:4:1

算法

1.给你一个正整数k,可能会很大但不超过integer_max,再给你一个正整数m(0-9),问1-k中间有多少个数,m出现了多少次,如给你k=12,给m=1,那么11,1,12这三个数,1一共出现了4次

2.一个N阶int矩阵,人从(0,0)开始走,只能往上或者往右走,矩阵内的数值是该坐标的分值,分值只能获取一次,问这个人从(0,0)走到(N-1,N-1)再走回来,往返获得的分值最大是多少

redis

1.redis里的五种数据类型

2.解释一下redisObject和SDS

3.redis里的sort set为什么要用跳表不用红黑树,那跳表实现原理说一下

4.缓存不一致如何解决

5.redis持久化,aof里的文件写入和文件同步解释一下

6.redis持久化aof和rdb分别适用于什么场景

7.redis各种数据结构,操作的时间复杂度

8.redis的主从复制原理,有没有可能写操作写到主,读操作读到从,那么读不到最新的数据,但是我如果偏要保证一致性,那如何解决

kafka

1.概念解释,producer/consumer/partition/topic/offset/broker

2.kafka为什么和其它mq比起来,吞吐量高这么多,你有思考过kafka适用于什么场景吗,或者你说下你对不同mq产品的对比

3.kafka高可用里的cap理论,谈一下你的理解

4.kafka如何保证消息不被重复消费

5.kafka里的消息我要指定存到不同的数据源该怎么做

总结

最后分享《Java核心学习笔记》,“覆盖了JVM、高并发、反射、Spring原理、分布式、微服务、MySQL、数据结构等等”,关注公众号:麒麟改bug获取!掌握了这些知识点,面试时在候选人中又可以夺目不少。机会都是留给有准备的人,只有充足的准备,才可能让自己可以在候选人中脱颖而出。