腾讯的Java面试题整合

目录

腾讯Java面试题:

1、网络基础问题

 Dubbo面试题

1、dubbo和dubbox之间的区别?

2、Dubbo面试题:一般使用什么注册中心?还有别的选择吗?

 Java List面试题

1、ArrayList和LinkedList的区别?分别用在什么场景?

Java Map集合面试题

1、Collection集合接口和Map接口有什么关系?

2、你都知道哪些常用的Map集合?

Spring面试题

1、什么是Spring的内部bean?

2、为什么说Spring是一个容器?

zookeeper面试题

1、zookeeper是什么框架?

JVM面试题:

1、说说Java虚拟机的生命周期及体系结构。

2、Java 是如何实现跨平台的?

3、什么是 JVM ?

4、JVM 由哪些部分组成?

5、类加载器是有了解吗?

6、Java 虚拟机是如何判定两个 Java 类是相同的?

7、类似-Xms、-Xmn这些参数的含义:

1.sleep( ) 和 wait( n)、wait( ) 的区别?

2、synchronized 关键字?

3、volatile 关键字?

4、volatile 能使得一个非原子操作变成原子操作吗?

5、volatile 修饰符的有过什么实践?

6、ThreadLocal(线程局部变量)关键字?

7、我们为什么要使用线程池?核心线程池内部实现了解吗?

1.解释AOP模块

2.有哪些不同类型的IOC(依赖注入)方式?

3.你怎样定义类的作用域?

4.Spring框架的事务管理有哪些优点?

5.什么是SpringMVC框架的控制器?

6.在SpringAOP中,关注点和横切关注的区别是什么?

1.使用Spring框架的好处是什么?

2、 Spring由哪些模块组成?

3、BeanFactory – BeanFactory 实现举例。

4、什么是Spring IOC 容器?

5、IOC的优点是什么?

6、什么是基于注解的容器配置?

1、什么是Spring MVC框架的控制器?

2、什么是基于注解的容器配置?

3、怎样开启注解装配?

4、@Required 注解

5、@Autowired 注解

6、@Qualifier 注解

Spring数据访问

1、什么是Mybatis?

2、Mybaits的优点?

3、MyBatis框架的缺点?

4、MyBatis框架适用场合?

5、MyBatis与Hibernate有哪些不同?

6、Mybatis是如何进行分页的?分页插件的原理是什么?

1、Mybatis动态sql有什么用?执行原理?有哪些动态sql?

2、Xml映射文件中,除了常见的select|insert|updae|delete标签之外,还有哪些标签?

3、为什么说Mybatis是半自动ORM映射工具?它与全自动的区别在哪里?

4、MyBatis实现一对一有几种方式?具体怎么操作的?

5、MyBatis实现一对多有几种方式,怎么操作的?

6、Mybatis的一级、二级缓存:

7、equal 和 hashcode 作用和区别?

hashCode()和equals使用的注意事项

扩展

1.阿里巴巴开发规约明确规定:

2.是不是每个对象都要重写这两个方法,到底什么时候重写?

3.我能不能值重写equals()方法,不重写hashCode()方法?

4.为什么需要hashCode

 1、如何保证单机保证3w tps 访问量?

2、讲一下模版模式和策略模式的区别?

3、redis和MQ如何平滑的扩容与缩容?

4、MQ的消息生产比消费速度快得多,有什么解决方案吗?

5、feign如何实现负载均衡,与Ribbon的负载均衡有什么区别?

Java技术、面试、就业交流群:929041174(新群)。

Java实操项目、学习资料有需求可以加美女老师微信备注“999”领取资料哦:


腾讯Java面试题:

1、说说Java中异常的分类。

答:异常分类:

Throwable -> Error,Exception

Error:严重问题,例如内存溢出

Exception ->运行时异常: RuntimeException,编译时异常

AWTError

1、网络基础问题

TCP和UDP的区别,TCP为什么是三次握手,不是两次。

答:1、因为tcp是全双工协议,区别在于前者可靠,后者不可靠,以及效率更高。

 Dubbo面试题

1、dubbo和dubbox之间的区别?

答:Dubbox 和Dubbo本质上没有区别,名字的含义扩展了Dubbo而已,以下扩展出来的功能
支持REST风格远程调用(HTTP + JSON/XML);
支持基于Kryo和FST的Java高效序列化实现;
支持基于Jackson的JSON序列化;
支持基于嵌入式Tomcat的HTTP remoting体系;
升级Spring至3.x;
升级ZooKeeper客户端;
支持完全基于Java代码的Dubbo配置;

2、Dubbo面试题:一般使用什么注册中心?还有别的选择吗?

答:Dubbo 一般用zookeeper做注册中心

还可以用:Redis,数据库,consul

 Java List面试题

1、ArrayList和LinkedList的区别?分别用在什么场景?

答:①ArrayList和LinkedList可想从名字分析,它们一个是Array(动态数组)的数据结构,一个是Link(链表)的数据结构,此外,它们两个都是对List接口的实现。
前者是数组队列,相当于动态数组;后者为双向链表结构,也可当作堆栈、队列、双端队列
②当随机访问List时(get和set操作),ArrayList比LinkedList的效率更高,因为LinkedList是线性的数据存储方式,所以需要移动指针从前往后依次查找。
③当对数据进行增加和删除的操作时(add和remove操作),LinkedList比ArrayList的效率更高,因为ArrayList是数组,所以在其中进行增删操作时,会对操作点之后所有数据的下标索引造成影响,需要进行数据的移动。
④从利用效率来看,ArrayList自由性较低,因为它需要手动的设置固定大小的容量,但是它的使用比较方便,只需要创建,然后添加数据,通过调用下标进行使用;而LinkedList自由性较高,能够动态的随数据量的变化而变化,但是它不便于使用。
⑤ArrayList主要控件开销在于需要在lList列表预留一定空间;而LinkList主要控件开销在于需要存储结点信息以及结点指针信息。
场景:
链表,插入删除快,查找修改慢。 适用于频繁增删的场景。
数组,查找快,插入删除慢。 适用于频繁查找和修改的场景。

2、怎么给List排序?

答:List 如何排序:

①:使用  Collections.sort 默认正序,可以传第二个参数自定义排序

②:自定义bean实现 Comparable 接口。

③: 实现Comparator接口自定义比较器

Java Map集合面试题

1、Collection集合接口和Map接口有什么关系?

答:没有直接关系,但是一些子类会有依赖,Collection是最基本的集合接口,声明了适用于JAVA集合(只包括Set和List)的通用方法。Map接口并不是Collection接口的子接口,但是它仍然被看作是Collection框架的一部分。

2、你都知道哪些常用的Map集合?

答:HashMap、HashTable、TreeMap、LinkedHashMap

Spring面试题

1、什么是Spring的内部bean?

答:当一个bean只能被某一个类使用时,称该bean为内部bean。

2、为什么说Spring是一个容器?

答:Spring的核心理念就是更方便地管理Java Bean,而被管理的Java Bean存缓存在一个Map中,这个Map就可以理解为用来装Java Bean的容器,即IOC容器

zookeeper面试题

1、zookeeper是什么框架?

答:ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务





JVM面试题:

1、说说Java虚拟机的生命周期及体系结构。

答:见 https://maozj.iteye.com/blog/697376

2、Java 是如何实现跨平台的?

注意:跨平台的是 Java 程序,而不是 JVM。JVM 是用 C/C++ 开发的,是编译后的机器码,不能跨平台,不同平台下需要安装不同版本的 JVM

答:我们编写的 Java 源码,编译后会生成一种 .class 文件,称为字节码文件。Java 虚拟机(JVM)就是负责将字节码文件翻译成特定平台下的机器码然后运行,也就是说,只要在不同平台上安装对应的 JVM,就可以运行字节码文件,运行我们编写的 Java 程序。

而这个过程,我们编写的 Java 程序没有做任何改变,仅仅是通过 JVM 这一 “中间层” ,就能在不同平台上运行,真正实现了 “一次编译,到处运行” 的目的。

3、什么是 JVM ?

解析:不仅仅是基本概念,还有 JVM 的作用。

答:JVM,即 Java Virtual Machine,Java 虚拟机。它通过模拟一个计算机来达到一个计算机所具有的的计算功能。JVM 能够跨计算机体系结构来执行 Java 字节码,主要是由于 JVM 屏蔽了与各个计算机平台相关的软件或者硬件之间的差异,使得与平台相关的耦合统一由 JVM 提供者来实现。

4、JVM 由哪些部分组成?

解析:这是对 JVM 体系结构的考察

答:JVM 的结构基本上由 4 部分组成:

类加载器,在 JVM 启动时或者类运行时将需要的 class 加载到 JVM 中

执行引擎,执行引擎的任务是负责执行 class 文件中包含的字节码指令,相当于实际机器上的 CPU

内存区,将内存划分成若干个区以模拟实际机器上的存储、记录和调度功能模块,如实际机器上的各种功能的寄存器或者 PC 指针的记录器等

本地方法调用,调用 C 或 C++ 实现的本地方法的代码返回结果

5、类加载器是有了解吗?

解析:底层原理的考察,其中涉及到类加载器的概念,功能以及一些底层的实现。

答:顾名思义,类加载器(class loader)用来加载 Java 类到 Java 虚拟机中。一般来说,Java 虚拟机使用 Java 类的方式如下:Java 源程序(.java 文件)在经过 Java 编译器编译之后就被转换成 Java 字节代码(.class 文件)。

类加载器负责读取 Java 字节代码,并转换成 java.lang.Class类的一个实例。每个这样的实例用来表示一个 Java 类。通过此实例的 newInstance()方法就可以创建出该类的一个对象。实际的情况可能更加复杂,比如 Java 字节代码可能是通过工具动态生成的,也可能是通过网络下载的。

6、Java 虚拟机是如何判定两个 Java 类是相同的?

答:Java 虚拟机不仅要看类的全名是否相同,还要看加载此类的类加载器是否一样。只有两者都相同的情况,才认为两个类是相同的。即便是同样的字节代码,被不同的类加载器加载之后所得到的类,也是不同的。比如一个 Java 类 com.example.Sample,编译之后生成了字节代码文件 Sample.class。两个不同的类加载器 ClassLoaderA和 ClassLoaderB分别读取了这个 Sample.class文件,并定义出两个 java.lang.Class类的实例来表示这个类。这两个实例是不相同的。对于 Java 虚拟机来说,它们是不同的类。试图对这两个类的对象进行相互赋值,会抛出运行时异常 ClassCastException。

7、类似-Xms、-Xmn这些参数的含义:

答:堆内存分配:

JVM初始分配的内存由-Xms指定,默认是物理内存的1/64

JVM最大分配的内存由-Xmx指定,默认是物理内存的1/4

默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制;空余堆内存大于70%时,JVM会减少堆直到 -Xms的最小限制。

因此服务器一般设置-Xms、-Xmx相等以避免在每次GC 后调整堆的大小。对象的堆内存由称为垃圾回收器的自动内存管理系统回收。

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值