2021Java后端实习春招面试高频考点

Java后端面经

项目要考虑:做了啥?/有哪些贡献?有哪些难点?怎么解决/实现的?为什么选这个技术不用其他?/跟其他技术对比的优劣势?达到了什么指标?

阿里新零售供应链一面凉经

(针对项目)

第一个项目:

1、秒杀系统是怎么设计和实现的?

2、为什么用redis?(原理)

3、rabbitmq原理,怎么实现你写的功能?

第二个项目:

1、介绍一下做了什么

2、为什么要用字典树,字典树的优缺点?

(数据库)

1、数据库在设计一张表时要考虑什么?

2、索引是什么?怎么实现的?B树和B+树的区别?索引必须是主键吗?(主键索引/聚簇索引和非主键索引/非聚簇索引)主键必须有吗?索引一定生效吗?(要答索引失效的几个情况)

3、mysql的数据类型

(算法)

1、交换左右子树

2、翻转链表

(jvm)

1、讲讲内存分区,每个分区是干什么的?

2、CMS、G1垃圾收集器的特点

(数据结构)

1、ArrayList和LinkedList的区别和使用场景,Linkedlist插入元素的两种方式(头插、尾插、中间插)

2、hashMap底层?红黑树特点?跟二叉树区别?hashMap怎么解决哈希冲突?

自己谈谈还有什么了解的?

阿里云网络一面凉经

对云了解多少?

(针对项目)

1、为什么用redis不用mysql/Map?/redis和mysql有哪些区别?

2、rabbitmq怎么控制并发的?

3、feign用在什么地方?

4、gateway用来做什么?怎么做的?

5、你用到了压测和性能监控,是怎么提升系统性能的?(业务和非业务)

3、锁/分布式锁/Linux原生锁解决的是什么问题?
(操作系统)

1、进程和线程的区别?(要答出内存角度)进程之间能否相互通信?线程呢?

(数据结构)

1、知道哪些数据结构?

2、HashMap底层是什么?展开后回答红黑树的原理、特点,红黑树怎么查找一个元素?

(算法)

1、数组二分查找

2、两数之和

阿里云数据库一面(通过)

(面试官介绍部门业务)

(针对项目)

1、Nacos的原理?怎么实现服务发现注册和配置的?

每个服务都会有一个nacos client,它用来和nacos server打交道 用来具体的服务注册 查询等操作,服务提供者在启动的时候会向nacos server注册自己,服务消费者在启动的时候订阅nacos server上的服务提供者。

2、秒杀业务进行时多个服务器争抢同一资源,此时redis的leader怎么去选?有一个服务器宕机释放不了锁怎么办?redisson怎么保证锁的释放?

3、服务之间通信用到RPC了吗?怎么保证接口幂等性?

用到了基于http的feign,SpringCloud对feign已经有了比较好的封装,还了解基于私有tcp协议的dubbo(阿里的)

如果不使用rpc框架,那么调用服务走http需要配置请求head、body,然后才能发起请求。获得响应体后,还需解析等操作,十分繁琐。Feign是一个http请求调用的轻量级框架,以Java接口注解的方式调用Http请求。Feign通过处理注解,将请求模板化,当实际调用的时候,传入参数,根据参数再应用到请求上,进而转化成真正的请求,封装了http调用流程。

(Java并发)

1、Synchronized和Lock的区别?

2、怎么实现多个线程都执行完再做一个操作?用JUC的哪个类?

3、线程池的使用?各个参数怎么用?达到线程池最大允许容量再进阻塞队列还是先进阻塞队列再达到线程池最大容量?

先进阻塞队列再达到线程池最大容量

4、线程有哪几种状态?(六种)Synchronized在多线程时每个线程是什么状态?

新生、运行、阻塞、等待、超时等待、终止

获得锁的线程阻塞,其他线程等待

(jvm)

1、内存分区?各个分区放的是什么?

2、java堆的结构,垃圾回收过程?

3、minorGC和MajorGC分别发生在什么时候?

minorGC:

1)Eden区满了 2)新创建对象的大小大于Eden所剩余空间

majorGC:

1)每次晋升到老年代的对象平均大小超过了老年代剩余空间

2)minorGC后存活的对象超过了老年代剩余空间

4、发现有许多对象都没有引用链向GCRoots,这时候该怎么办?

5、怎么对java堆此时的状态进行分析?

(数据结构)

1、HashMap底层?线程安全吗?不安全用什么?ConcurrentHashMap的实现原理

(算法题)

1、topK个元素,用快排的复杂度是多少?

时间复杂度期望为 O(n),最坏情况下的时间复杂度为 O(n2);

空间复杂度为递归调用的期望深度 O(logn)

(反问环节)

1、觉得我表现怎么样?

2、实习生怎么培养?有没有人带?

3、HC有多少?转正率?

阿里云智能云网络一面(负载均衡、组网)(通过)

(自我介绍)

(Java基础)

1、创建一个对象后会发生什么?如A a = new A();

从内存、构造方法考虑...

(JVM)

1、描述minorGC和majorGC/fullGC的过程?

(数据结构)

1、HashMap底层原理?元素达到阈值后会做什么?怎样能让扩容时间短?为什么HashMap的长度都是2的幂次?

让扩容时间变短的方法是取余操作变成与操作,参考https://blog.csdn.net/fightee/article/details/106272982

HashMap长度是2的幂次的原因是在取余操作中如果除数是2的幂次则等价于与其除数减一的与操作,而与操作运算的性能更高

(数据库)

1、MySQL的索引是什么?怎么实现的(有哪几类)?说一下什么是B+树?

2、MySQL的join是什么?left join和right join有什么区别?查出来的结果分别是什么?

(网络)

1、输入一个网址后干了什么?从七层模型考虑?从时序考虑先发什么后发什么?

https://blog.csdn.net/kongmin_123/article/details/82555936

(并发)

1、Java中有哪些锁?Synchronized的底层原理?Lock锁又分为哪几种?

Synchronized的底层原理参考https://cloud.tencent.com/developer/article/1465413

2、一个线程写,多个线程读,应该用什么锁?

写线程用写锁(独占锁、排他锁),读线程用读锁(共享锁)

3、线程池解决了什么问题?

(算法)

1、链表中的节点k个一组翻转

蚂蚁金服聊天

(并发)

1、死锁产生的条件?描述一下什么情况会产生死锁?

互斥、不剥夺、循环等待、请求和保持

2、进程和线程的区别?各自的通信方式?

(计算机网络)

1、描述一下TCP的三次握手?为什么不二次、四次?

(Java基础)

1、AOP原理?IOC原理?

总结:要加强408专业课的学习,进一步扎实Java基础!

阿里云通信一面(通过)

(自我介绍,实验室做什么的)

(操作系统)

1、什么是中断?中断触发过程?

2、寄存器是做什么的?PC指针寄存器(程序计数器)是做什么的?

寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和地址。

作用:1)可将寄存器内的数据执行算术及逻辑运算2)寻址3)可以用来读写数据到电脑的周边设备。

3、进程和线程在内存占用上的区别?线程有无独立堆栈?

进程有独立的内存空间,多个线程共享相同的内存空间

线程有独立的栈,没有独立的堆,堆通常与进程相关,每一个线程有自己的栈,访问共同的堆

4、堆和栈的区别?

1)栈由系统自动分配,而堆是人为申请开辟;

2)栈获得的空间较小,而堆获得的空间较大;

3)栈由系统自动分配,速度较快,而堆一般速度比较慢;

4)栈是连续的空间,而堆是不连续的空间。

5、什么是实时操作系统?Linux是实时的吗?windows呢?

指当外界事件或数据产生时,能够接受并以足够快的速度予以处理。

Linux和windows都不是实时

(JVM)

1、JVM是做什么的?

JVM是java字节码执行的引擎,还能优化java字节码,使之转化成效率更高的机器指令。

2、Java垃圾回收为什么要引入分代?

(Java基础)

1、Java是解释性还是编译性语言?

既是解释性语言(需要由编译器编译为.class字节码文件),又是解释性语言(需要由JVM读一行执行一行,由解释器解释为操作系统能执行的命令)

Java的编译器是javac.exe,解释器是java.exe

参考https://blog.csdn.net/qzc70919700/article/details/72515022

2、为什么说Java是跨平台的?

java对多种操作系统有不同的JVM

3、为什么引入Hash?好处是什么?

简称散列算法,是将一个大文件映射成一个小串字符。与指纹一样,就是以较短的信息来保证文件的唯一性的标志,这种标志与文件的每一个字节都相关,而且难以找到逆向规律。

好处:(1) 在庞大的数据库中,由于哈希值更为短小,被找到更为容易,因此,哈希使数据的存储与查询速度更快。

(2) 哈希能对信息进行加密处理,使得数据传播更为安全。

4、能不能有一个类叫做String?能的话创建对象的时候用哪个?系统的还是自定义的?

可以,优先使用自定义的,需要加上包名来进行区分

5、AOP的原理?什么是动态代理?怎么实现?

动态代理参考:https://zhuanlan.zhihu.com/p/50777496

6、反射的原理?

(数据结构)

1、HashMap底层实现?线程安全吗?不安全用什么?jdk1.8对ConcurrentHashMap在线程安全上做的优化?

2、堆和栈的区别?

(计算机网络)

1、TCP三次握手为了什么?

2、TCP/IP的五层是什么?

物理层、数据链路层、网络层、传输层、应用层

3、什么是TCP的滑动窗口?

https://blog.csdn.net/yao5hed/article/details/81046945

4、常见的传输层协议?应用层协议?

传输层:TCP、UDP

应用层:HTTP、HTTPS

5、TCP和UDP的比较?

(数据库)

1、数据库的索引是什么?为什么引入索引查找变快?

2、数据库连接池解决什么问题?用的什么协议?为什么?

资源复用,提高响应速度,便于管理

TCP,因为TCP是面向连接的可靠传输

3、事务的隔离级别?脏度是怎么产生的?

(项目)

1、分布式系统下redis集群某一台机器挂了或者整个集群挂了怎么办?

(其他)

1、怎么再大量文本里面匹配一个字符串?百度怎么做到输入一个关键词查出含关键词的相关内容?

2、什么是ES的倒排索引表?

3、读过什么开源项目的源码?

(不足)

1、研究生期间的工作?别人听不懂不怕,得体现你没白读

(算法)

1、两数之和

阿里云通信二面(通过)

(java基础)

1、final修饰的方法可以重写吗?static呢?

(框架)

1、springboot的启动加载过程和自动配置流程?

(计算机网络)

1、HTTP请求的过程?

(JVM)

1、fullGC发生在什么时候?fullGC的过程?

(项目)

1、为什么要用RabbitMQ?

2、怎么实现商品不会超扣?

3、远程调用服务超时怎么办?

4、如何保证商品只上架一次?分布式锁锁的是什么?

(并发)

1、Java中的多线程是如何实现的?

2、自己实现一个线程池需要考虑什么?

腾讯PCG一面凉经

(计算机网络)

1、发送一个网址后发生了什么?

2、DNS解析用的是什么协议?

3、TCP的拥塞控制怎么实现的?滑动窗口怎么解决问题的?

4、TCP的四次挥手过程是怎么样的?

(操作系统)

1、进程间通信的几种方式有什么?分别适用什么场景?

2、socket怎么实现的?client端和server端分别是怎样创建socket的?

3、进程、线程、协程的区别是什么?

(Linux)

1、Linux的启动过程?

2、有用过dump抓包的命令吗?

3、说几种Linux的常见命令,查看网络状态用什么命令?

(数据库)

1、常见的数据库引擎有哪几种?都有什么特性?(主要说Innodb)该怎么选型?

(数据结构)

1、HashMap在JDK1.8为什么要将链表换成红黑树?原因除了查找效率高之外还有什么?

2、HashMap什么条件下要扩容?扩容要进行什么操作?容量扩大为原来的多少?

3、1.8下的ConcurrentHashMap怎么实现的?Synchronized锁的是什么?是整个数据结构吗还是锁的是数组或链表中的一个?

4、JDK1.8下锁的几种状态是什么?(无锁、偏向锁、轻量级锁、重量级锁)

腾讯PCG微视一面凉经

(Java基础)

1、Java的异常体系是怎样的?

2、重载和重写是什么?Java的方法分派是什么?

(数据结构)

1、ArrayList和LinkedList的区别?ArrayList的初始长度?

2、HashMap和HashTable的区别?哪个可以为空?(key或value)

3、ConcurrentHashMap的实现原理JDK1.7和JDK1.8分别是什么?

4、HashMap的链表变成红黑树的阈值是多少?(8)红黑树退化成链表的阈值是多少?(6)

(并发)

1、volatile的特点?是线程安全的吗?

2、ThreadLocal的原理?

3、java线程池的原理?submit一个task以后进行什么操作?

4、Java中有哪几种锁?synchronized和Lock的区别?

5、Lock的底层原理AQS是什么?

(操作系统)

1、Thread中interrupt()interrupted()和isInterrupted()的区别

(JVM)

1、JVM的内存分区?

2、有哪几种引用?GC时的生命周期是怎样的?

3、GC算法有哪些?

4、垃圾收集器有哪些?讲讲CMS的原理?要进行几次stop the world?

5、类加载机制?

(数据库)

1、事务的隔离级别?分别解决了什么问题?

2、spring事务中的传播行为?

3、Mysql的引擎有哪几种?各自的使用场景?

4、Mysql索引用的是什么数据结构?有哪些优点?

5、Mysql在一条语句执行很慢的时候如何调优?

(框架)

1、spring的AOP的原理是什么?

2、Mybatis中的#和$分别是什么意思?实际用的是哪个?(#)

3、Mybatis中的xml如何关联到实际的sql执行语句?

4、什么是Mybatis的一级缓存和二级缓存?

5、ServiceA中methodA调用ServiceB中methodB,有一条sql执行失败了,那么ServiceA中methodA还能继续往下执行吗?还是回滚呢?

(算法)

1、从上到下打印二叉树每一层最右端的节点

美团到店事业群二面通过

1、docker是什么?有哪些功能?和虚拟机有什么区别?进程隔离机制是怎样的?

2、git什么情况会发生冲突?

3、spring的bean的作用域?生命周期?可见范围?

4、linux权限管理基于什么?

5、TCP如何保证通信过程的可靠?

6、电脑版微信登录时的二维码包含哪些信息?

7、Serializable的serialVersionUID是做什么的?

8、代码重复判断怎么实现?(提交的两份代码相似度太高)

diff逐行/逐字比较

9、重构代码要从哪些方面来考虑?(面向对象角度)

面向接口编程、单一职责:一个类只做一件事、高内聚低耦合

10、explain怎么分析执行计划?

11、负载均衡如何实现?

小米直播一面通过

1、HashMap扩容后元素的位置变化?

由于数组的容量是以2的幂次方扩容的,那么一个Entity在扩容时,新的位置要么在原位置,要么在原长度+原位置的位置

2、锁升级/降级过程?(无锁、轻量级锁、重量级锁)

3、redis如何保证锁的释放?(A加锁过程中B进来加锁,A业务完成后,怎么保证释放的锁是A而不是B?)

加上id,谁加锁谁释放,做校验

4、AOP切面的使用场景?

5、Innodb非聚簇索引为啥不存地址?(考虑MyIASM和Innodb存储的区别)

6、filter、selvlet、litenser的原理及产生作用的顺序?

7、新生代为什么8:1:1?

8、各种垃圾收集算法的实现方式和优缺点?

9、输入字符OSI七层怎么走?

10、各种排序的使用场景?

11、数据链路层和物理层的协议?

字节跳动教育K12一面凉经

1、SSL/TLS怎么加密?

2、mysql可重复读的实现原理?

使用一种叫MVCC的控制方式 ,即Mutil-Version Concurrency Control,多版本并发控制,类似于乐观锁的一种实现方式,为每行数据存储一个版本号,当数据被修改时,版本号加1

3、有一个抛硬币的函数,得到正面1的概率是60%,得到反面的概率是40%,用这个函数实现一个函数,使得得到正面和反面的概率都是50%,可以对原始函数多次调用

//10和01的概率相等,都是5/26
public int newCoin() {
    //10当作1(硬币朝上)
    if (coin() == 1 && coin() == 0) {
        return 1;
    } else if (coin() == 0 && coin() == 1) {
        //01当作0(硬币朝下)
        return 0;
    } else {
        //其他情况舍弃
        return newCoin();
    }
}

4、给一个链表奇数节点升序,偶数节点降序,将这个链表变成整体有序的

微软C+AI初面

1、二叉搜索树给定一个target,找到小于等于target的最大值floor和大于等于target的最小值ceiling(target不一定存在于二叉搜索树)

class Solution {
    private int floor = 0, ceiling = 0;

    public int[] findFloorAndCeiling(TreeNode root, int target) {
        if (root == null) {
            return new int[2];
        }
        findHelper(root, target);
        return new int[]{floor, ceiling};
    }

    private void findHelper(TreeNode root, int target) {
        if (root == null) {
            return;
        }
        if (root.val == target) {
            floor = root.val;
            ceiling = root.val;
        } else if (root.val > target) {
            ceiling = root.val;
            findHelper(root.left, target);
        } else {
            floor = root.val;
            findHelper(root.right, target);
        }
    }
}

2、腐烂的橘子

3、最长有效括号

#面经##实习##java工程师##阿里云##腾讯##美团##小米#
全部评论
你好,问一下微软结果怎么样,有回复吗
点赞 回复 分享
发布于 2021-10-27 10:48

相关推荐

2024-12-21 20:59
已编辑
门头沟学院 Java
1.介绍最拿手的项目,背景等等2.项目是你自己完整实现的吗?3.stringbuilder和stringbuffer的区别?线程安全性?如何保证线程安全?(非安全,调用append方法。安全,底层用了锁)4.synchronized锁是怎么实现的?加在方法上吗?5.string是线程安全的吗?(线程安全,定义就不可改变)6.final关键字是修饰什么的?修饰类的时候可以被继承吗?修饰方法的时候呢?(变量,方法,类)(修饰方法可以被继承不能被重写,修饰类不可被继承)7.java序列化和反序列化讲一下?底层是怎么实现的?(jableio.serializable,objectinputsstreamserialversionuid了解吗?假如我序列化后修改了内容,反序列化还能成功吗?(可以的,这个是控制版本的)8.transient关键字了解吗?(被这个关键字修饰的成员变量不会被序列化)9.异常和error讲一下?包括?throws关键字?(不想内部处理异常就抛出去) throw关键字呢?(主动抛出异常,发现异常,手动触发异常处理机制)10.redission实现了怎样的分布式锁?底层?(加锁原理,可重复,删除锁)(setnx以及lua脚本)锁的续期?看门狗机制?11.redis数据结构?set和sortedset区别讲一下?(多了个score用来排序)12.redis树怎么实现的?(这个忘光了,没答出来)(跳跃表?字典?)不懂,求牛友告知13.redis淘汰策略有哪些?你项目用的是哪个?场景是?具体在哪个文件设置?14.mysql数据量有多少?你项目里面的?或者实习遇到的?15.mysql常用的优化策略?你讲一个优化的案例?你是怎么知道mysql执行时间的?(说了网上查的命令行,好像是mysql日志)16.你还用过哪些数据库吗?17.索引的数据结构?B树和B+树的区别?还有最左索引匹配?18.MVCC机制怎么实现的?实现了什么事务隔离级别?(rc,rr)(rr是多次读数据都一样,rc是读到最新的)19.幻读了解吗?mvcc是怎么解决的?(判断完范围后,再通过版本号判断是否读取)还有其他吗?(间隙锁gap lock)20.实习做的什么?反问:业务,自研ai更新:等老板决定,会赢吗😭#牛客解忧铺# #牛客创作赏金赛#
查看44道真题和解析 牛客解忧铺 牛客创作赏金赛
点赞 评论 收藏
分享
2024-12-04 16:19
门头沟学院 后端
点赞 评论 收藏
分享
9月投递 12月约面,终于要开始捡漏了吗?反问面试官 部门主要有三个大方向 小米汽车 小米之家相关业务12.9 一面* 自我介绍* 聊实习* ZSet是一个怎么样的结构* 看你java和golang都会。希望找一份怎么样的工作* java和golang有哪些区别?* golang中 函数和方法的区别?* java中synchronized和volatile关键字解释一下* MySQL 建表 (id 姓名 性别 电话号 描述 )这些字段你会选择的数据类型* 怎么添加索引?* 这张表最多可以添加多少条数据?* 表里有上亿条数据。怎么提高检索效率* 索引为什么能提高检索效率* Redis分布式锁实现* Redis中的 RedLock 具体解决了什么问题?* 用Redis实现消息队列的功能怎么做?* Spring、SpringBoot、SpringCloud各自解决了什么问题* 实习期间 SpringCloud 具体使用到的组件* 负载均衡组件的设计,服务间调用做负载均衡你会怎么实现* 微服务解决了什么问题?* 服务拆分你具体会怎么做?* linux 找到所有的java进程 并且杀死怎么做?* 查看资源占用情况?* 查看磁盘占用情况?* 查看文件后10行* vim编辑文件。进入后怎么检索java关键字* vim编辑怎么跳转到最后一行* 算法:二分查找。easy  那 不用二分 正常的思路怎么做呢?* 反问* 平时怎么学习12.11 二面 1h* 自我介绍* 介绍实习* 实习期间遇到的一致性问题?* 分布式事务的解决方案* 阿里的seata框架了解过吗?* SpringBoot的启动流程?* Spring IOC AOP解决了什么问题?没有IOC之前怎么做?* 自己项目中有用到AOP吗?* 看你也会golang 了解哪些技术栈?golang和java的区别?* MySQL建表的时候有哪些优化手段?索引怎么建?* MySQL中的锁机制* 最熟悉的设计模式* 代理模式讲一下* 聊网络,交换机和路由器的区别?* 现在我们视频聊天 涉及到的网络协议?视频聊天 通信流程大体是怎么样的* 算法:组合总和* 反问
查看45道真题和解析
点赞 评论 收藏
分享
评论
13
160
分享
牛客网
牛客企业服务