当前位置: 首页 > 后端技术 > Java

这个Java面试题目真的有那么好吗?你一直在打电话吗?

时间:2023-04-01 20:37:07 Java

1.Java基础什么是Java程序的主类?应用程序的主类和小程序有什么区别?构造函数Constructor可以重写吗?StringStringBuffer和StringBuilder有什么区别?为什么String是不可变的?对象的相等性和对它们的引用的相等性有什么区别?重载和覆盖有什么区别?为什么在静态方法中调用非静态成员是非法的?简述线程、程序、进程的基本概念。而他们之间又是什么关系呢?方法的返回值是多少?类的方法中返回值的作用是什么?类的构造方法的作用是什么?如果一个类没有声明构造方法,程序能正确执行吗?为什么?Java面向对象编程的三大特点:封装和继承多态Java序列化,有些字段不想序列化怎么办?在调用子类构造函数之前,先调用父类的无参构造函数。目的是?线程的基本状态有哪些?什么运算符用于创建对象?对象实体和对象引用有什么区别?成员变量和局部变量有什么区别?2、Java中级Spring的AOP和IOC是什么?有哪些使用场景?什么是Spring事务、事务属性、数据库隔离级别、Spring和SpringMVC、MyBatis和SpringBoot注解?什么是SpringCould组件,它们有什么作用?微服务的CAP是什么?什么是基地?HashMap底层实现原理,红黑树,B+树,B树结构原理,CAS(比较和交换)实现原理Redis支持的数据类型和使用场景,持久化,哨兵机制,缓存击穿,缓存穿透线程是什么,有有几种实现方法,它们有什么区别,线程池实现原理,JUC并发包传递的安全问题(数据篡改(获取别人的URL,篡改数据(数量)并发送给系统))使用受索引限制,什么是sql优化,数据同步问题(缓存,数据库数据同步)分布式事务堆溢出,栈溢出发生场景及解决方案悲观锁,乐观锁,读写锁,行锁,表锁,自旋什么的锁、死锁、分布式锁、线程同步锁、公平锁、非公平锁是什么?初始化一个Bean对象有几个步骤,它的生命周期JVM内存模型,算法,垃圾收集器,调优,类加载机制(双亲委派),创建一个对象,这个对象在内存中是如何分配的?Dubbo的运行原理,为什么比SpringCould效率高,Zookeeper底层原理讲几种MQ的区别,为什么要用这种MQ,消息重复发送(幂等性),消息发送失败,消息丢包,长时间收不到消息,发送的消息过大导致接收不成功。3、高级Java为什么要使用消息队列?消息队列的优点和缺点是什么?Kafka、ActiveMQ、RabbitMQ、RocketMQ的优缺点是什么?如何保证消息不被重复消费?或者说,如何保证消息消费的幂等性?如何解决消息队列延迟和过期的问题?消息队列满了怎么办?百万条消息积压数小时,如何解决?能讲讲redis集群模式的工作原理吗?集群模式下,redis的key是怎么寻址的?分布式寻址的算法有哪些?你了解一致性哈希算法吗?理解什么是redis的雪崩、穿透、击穿?redis崩溃后会发生什么?系统应该如何处理这种情况?如何应对redis的渗透?为什么要分库分表(设计高并发系统时如何设计数据库层次)?你用过哪些分库分表中间件?不同的数据库和表中间件的优缺点是什么?你具体如何垂直或水平拆分数据库?MySQL读写分离你做过吗?如何实现MySQL的读写分离?MySQL主从复制的原理是什么?如何解决MySQL主从同步的延迟问题?说说dubbo的工作原理?注册中心宕机还能继续通信吗?说说一个rpc请求的过程?如何基于dubbo进行服务治理、服务降级、失败重试、超时重试?集群部署时如何实现分布式会话?服务注册和发现是什么意思?SpringCloud是如何实现的呢?分布式锁的一般实现方式有哪些?如何使用redis设计分布式锁?用zk设计分布式锁可以吗?这两种分布式锁实现方式哪个更高效?dubbo的spi思想是什么?如何设计可动态扩缩容的分库分表方案?4、分布式ActiveMQ的消息重传间隔和重传次数是多少?Kafka在创建Topic时如何将partition放在不同的Broker中?Kafka判断一个节点是否还活着的两个条件是什么?Kafka消息使用Pull方式还是Push方式?与服务器本地缓存(如PHP的APC、mmap文件等)相比,memcached的优缺点是什么?我需要批量导出导入memcached中的item,怎么办?memcached的多线程是什么?如何使用它们?MongoDB在A:{B,C}上建了一个索引,查询A:{B,C}和A:{C,B}都会用到这个索引吗?MongoDB是否支持存储过程?如果支持,如何使用?如何理解MongoDB中的GridFS机制,MongoDB为什么使用GridFS来存储文件?Nginx中,如何使用未定义的服务器名来阻止处理请求?RabbitMQ队列中存储的消息数量是否有限制?如果集群中某个队列的owner节点发生故障,而该队列被声明为持久属性,是否可以从其他节点重新成功声明该队列?为什么说保证消息可靠持久化的条件是队列和交换器具有持久化属性,而消息具有持久化属性呢?为什么要用缓存,你用过哪些缓存,redis和memcache的区别?5.Spring架构SpringBoot、SpringMVC和Spring有什么区别?BeanFactory和ApplicationContext有什么区别?什么是基于Java的Spring注解配置?举一些注解的例子。请解释一下SpringBean的生命周期?Spring框架中的单例bean是线程安全的吗?SpringMvc的controller是单例模式吗?如果是这样,问题是什么以及如何解决?SpringMVC如何设置重定向和转发?当一个方法返回一个特殊的对象给AJAX,比如Object,List等,需要做什么?SpringMvc用什么对象把数据从后台传到前台?服务注册和发现是什么意思?SpringCloud是如何实现的呢?使用SpringCloud有什么优势?什么是Hystrix断路器?我们需要它什么是SpringCloudBus?我们需要吗如何在SpringBoot应用程序中实现安全性?SpringBoot默认配置的H2数据库名称是什么?为什么默认的数据库名称是testdb?6.为什么线程不推荐使用stop()和suspend()方法?同步和异步有什么异同,什么时候使用?线程间通信,wait和notify什么是threadstarvation,什么是livelock?atomicinteger、volatile等线程安全操作的关键字和volatile变量的使用是怎样理解的?volatile变量和原子变量有什么区别?当一个线程进入进入一个对象的一个??synchronized方法后,其他线程是否可以进入这个对象的其他方法?简述synchronized和java.util.concurrent.locks.Lock的异同?多线程之间通信的同步问题,synchronized锁是对象,衍生出很多和synchronized相关的具体问题,比如同一个类的不同方法有synchronized锁,是否可以同时访问一个对象或者静态构造类的方法在synchronized之后加上锁的影响。volatile类型变量提供什么保证?非原子操作可以变成原子操作吗?理解可重入锁的含义,以及ReentrantLock和synchronized的区别Java创建线程后,直接调用start()方法和run()方法的区别同步数据结构,比如concurrentHashMap的源码理解和内部实现原理,为什么是synchronized效率高的常用线程池模式以及不同线程池的使用场景newFixedThreadPool如果这个线程池的线程数达到最大值会发生什么,底层原理。7、为什么网络上会有三次握手?第二次握手有什么问题?三向握手的缺陷是什么?TCP是如何控制流量的?发送方发送过于频繁导致丢包。TCP是怎么解决的呢?HTTPs为什么要使用对称加密+非对称加密与只使用非对称加密相比,使用非对称加密有什么优势?说一下OSI网络架构HTTP在哪一层HTTP报文结构HTTP头字段HTTPs加密是在哪一层http是无状态通信的。http的请求方式有哪些?定义一个新的请求方法。Socket通信,以及长连接、分包、连接异常断开处理。使用socket通信模型,AIO和NIO。socket框架netty的使用,以及NIO的实现原理,为什么是异步非阻塞的?八、MySQL数据库服务(ACID)的四大特性:原子性、一致性、隔离性和持久性?查询语句的不同元素(where、join、limit、groupby、having等)的执行顺序是怎样的?MySQL中常见的三种存储引擎(InnoDB、MyISAM、MEMORY)有什么区别?MySQL的MyISAM和InnoDB存储引擎,事务和锁级别,以及各自的应用场景?mysql高并发环境解决方案?交易并发?事务隔离级别,每个级别会导致什么问题,MySQL默认是哪个级别?MySQLB+Tree索引和Hash索引有什么区别?锁有哪几种(乐观锁和悲观锁),选择时如何加排他锁?sql查询语句确定创建什么类型的索引?如何优化查询?聚簇索引和非聚簇索引有什么区别?mysql有哪些锁,死锁判断原理和具体场景,如何解决死锁?非关系数据库和关系数据库有什么区别,它们的优点是什么?如何解决MySQL慢查询?数据库读写分离,主从复制,主从复制分析7题?数据库崩溃时的事务恢复机制(REDOlog和UNDOlog)?9、Redis缓存redis事务相关的命令有哪些?为什么要用redis/为什么要用缓存(高性能、高并发)为什么要用redis而不是map/guava做缓存?redis和memcached的区别,请介绍一下RedisSortedSet(zset)的数据类型和底层实现机制?Redis常用数据结构及使用场景分析(String、Hash、List、Set、SortedSet)redis设置过期时间redis内存淘汰机制(MySQL中2000w数据,Redis中只有20w数据,如何保证Redis中数据全部是热数据吗?)redis持久化机制(redis挂掉后如何保证重启后可以恢复数据)分布式环境下redis事务常见异常及解决方法(缓存穿透、缓存雪崩、缓存预热、缓存降级)常见应用场景(分布式锁、分布式自增ID)Redis集群模式(主从模式、哨兵模式、Cluster集群模式)如何解决Redis的并发竞争关键问题如何保证缓存和数据库双写时的数据一致性?10、JVM如何判断一个对象是否存活?(或者判断GC对象的方法)java中垃圾回收的方法有哪些?简述java垃圾回收机制?GC的两种判断方式?MinorGC和FullGC什么时候发生?JVM内存分为多少个区域,每个区域的作用是什么?什么是GC收集器?CMS收集器和G1收集器的特点。GC的三种收集方式:标记清除,标记排序,以及复制算法的原理和特点。它们在哪里使用?如果让你优化采集方式,你有什么想法?类加载器双亲委派模型机制?Java类加载过程?java类加载机制的简要说明?什么是类加载器,什么是类加载器?Java内存分配和回收策略的简要说明,以及MinorGC和MajorGC垃圾收集器背后的基本原理是什么?垃圾收集器能否立即回收内存?有没有办法主动通知虚拟机进行垃圾回收呢?Java会不会有内存泄漏,请简单描述一下如果对象的引用设置为null,垃圾回收器会立即释放对象占用的内存吗?什么时候调用finalize()方法?析构函数(终结)的目的是什么?串行收集器和吞吐量收集器有什么区别?什么是分布式垃圾收集(DGC)?它是如何工作的?你如何调整tomcat?Tomcat优化经验Java中,什么时候可以对对象进行垃圾回收?System.gc()和Runtime.gc()有什么作用?Java中会存在内存泄漏吗?请简单介绍一下什么是GC?为什么会有GC?垃圾收集是否发生在JVM的永久代中?tomcat有哪几种Connector运行方式(优化)?内存调优十二、设计模式21设计模式知识点请列举JDK中常用的几种设计模式?什么是设计模式?您在代码中使用过任何设计模式吗?在Java中,什么是观察者设计模式(observerdesignpattern)?使用工厂模式的主要好处是什么?它在哪里使用?在Java中什么时候使用重载什么时候使用覆盖?在Java中,为什么不允许从静态方法访问非静态变量?设计一台ATM机,请说说你的设计思路?给一个用Java实现的装饰器设计模式?它是在对象级别工作还是在类级别工作,举例说明何时更适合使用抽象类而不是接口?13.Algorithms&DataStructures如何只使用递归函数和堆栈操作来反转堆栈?将单向链表按照一定的值分成左边小,中间相等,右边大用递归和非递归的方法实现二叉树预递归和动态规划判断性状order,in-order和post-ordertraversal斐波那契数列问题数组中是否有任何字符只出现一次在有序但空的数组中查找字符串仅使用2GB内存在20亿个整数中查找出现次数最多的数累积未排序数组中的总和小于或等于给定值从5随机到7随机的最长子数组的长度及其扩展最大减去最小子数组数小于或等于num的约瑟夫问题循环单链表求一棵二叉树中单链表的每K个节点之间的倒序累计和为指定值的最长路径长度判断一棵二叉树是否为搜索二叉树的最长公共子序列完整的二叉树。Question14.Concurrency什么是可重入性,为什么Synchronized是可重入锁?为了什么说Synchronized是悲观锁?乐观锁的实现原理是什么?什么是CAS,它有什么特点?乐观锁就一定好吗?JVM对Java原生锁做了哪些优化?ReentrantLock是如何实现重入的呢?与Synchronized相比,ReentrantLock的实现原理有什么不同?Java的线程如何相互同步?你知道哪些同步器?请介绍一下,CyclicBarrier和CountDownLatch看起来很像,请比较一下?线程池中的线程是如何创建的?是不是一开始就随着线程池的启动而创建的?既然提到了可以通过配置不同的参数来创建不同的线程池,那么Java默认实现的线程池有哪些呢?请比较它们的相同点和不同点。请说说volatile的特点,为什么能保证变量对所有线程的可见性?Java的内存模型是什么,Java中的线程如何看到彼此的变量?既然volatile可以保证变量在线程间的可见性,那是否意味着基于volatile变量的操作是并发安全的呢?很多人说ThreadLocal要慎用。说说你的理解。使用ThreadLocal需要注意什么?请告诉我AQS框架是什么?15.操作系统/Linux死锁的原因进程和线程的区别,什么时候使用线程,如何实现线程池,Java中如何配置线程池linux中有哪些常用指令,并介绍select、poll、和epoll之前没看懂,讲解一下线程切换,以及如何扩展Java阻塞操作将/home目录逐层复制到另一个目录?安装Linux最少需要多少个分区,如何查看系统启动信息?如何暂停正在运行的进程并将其置于后台(不运行)?什么是页面错误,它是如何发生的?人生苦短,不要一辈子都在发呆,不要安于现状。最近还是有很多小伙伴想学习Java高级的。我不知道从哪里得到它。我这里有很多PDF资料。各种真人面试题和答案应有尽有。它们是我近几年在京东5年工作经验的总结!常见的面试问题。程序员必备技能的核心知识点,对你有很大的帮助。通过我的学习笔记,很多人都进入了梦寐以求的互联网巨头。成功率高达85%!我就是有信心说这话!俗话说,养不起孩子,就抓不到狼。如果你想达到你的目标,你必须不断学习和提高,总有一天你会成为一名称职的程序员!最后点击【学习】逗我领取学习资料!