面试题泛谈

在程序员的1-3年阶段,我们需要不断努力的学习并积累知识点,那么每个阶段都需要具备什么条件呢?请看下面:

🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥

10k面试题

1.抽象类和接口的关系和区别,以及你在实际开发过程中是怎样使用的?

抽象类

概念:抽象类不能创建实例,它只能作为父类被继承。抽象类是从多个具体类中抽象出来的父类,它具有更高层次的抽象。从多个具有相同特征的类中抽象出一个抽象类,以这个抽象类作为其子类的模板,从而避免了子类的随意性。

特点:

抽象类无法被实例化(因为它不是具体的类,但是有构造方法)
抽象类有构造方法,是给子类创建对象的
抽象类中可以定义抽象方法(在方法的修饰列表中添加abstract关键字,并且以“;”结束,不能带有“{}”)public abstract void m1();
抽象类中不一定有抽象方法,抽象方法一定在抽象类中
一个非抽象类继承抽象类,必须将抽象类中的抽象方法覆盖,实现,重写
抽象类的成员特点:1)成员变量:既可以是变量也可以是常量。2)构造方法:有构造方法,用于子类访问父类数据的初始化。3)成员方法:抽象类中方法既可以是抽象的,也可以是非抽象方法
在父类中,非抽象方法:子类继承,提高代码的复用性;抽象方法:强制要求子类做的事情
抽象类中注意的问题:一个类如果没有抽象方法,可以是抽象类,即抽象类中可以完全没有抽象方法。这样类的主要目的就是不让创建该类对象。
abstract关键字不可以与哪些关键字使用。
1)private冲突:private修饰的成员不能被继承,从而不可以被子类重写,而abstract修饰的是要求被重写的。

2)final冲突:final修饰的成员是最终成员,不能被重写,所以冲突,static无意义;

3)static冲突;static修饰成员用类名可以直接访问,但是abstract修饰成员没有方法体,所以访问没有方法体的成员无意义。

接口

概念:接口的初步理解是一个特殊的抽象类,当抽象类中全部都是抽象方法时,可以通过接口的方式来体现。

特点:

1)接口不能被实例化

2)接口只能包含方法的声明

3)接口的成员方法包括方法,属性,索引器,事件

4)接口中不能包含常量,字段(域),构造函数,析构函数,静态成员

抽象类和接口的区别:

抽象类可以有构造方法,接口中不能有构造方法。
抽象类中可以有普通成员变量,接口中没有普通成员变量
抽象类中可以包含静态方法,接口中不能包含静态方法
一个类可以实现多个接口,但只能继承一个抽象类
接口可以被多重实现,抽象类只能被单一继承
如果抽象类实现接口,则可以把接口中方法映射到抽象类中作为抽象方法而不必实现,而在抽象类的子类中实现接口中方法。
接口和抽象类的相同点:

都可以被继承
都不能被实例化
都可以包含方法声明
派生类必须实现未实现的方法
接口带来的最大好处就是避免了多继承带来的复杂性和低效性,并且同时可以提供多重继承的好处。接口和抽象类都可以提现多态性,但是抽象类对事物进行抽象,更多的是为了继承,为了扩展,为了实现代码的重用,子类和父类之间提现的是is-a关系,接口则更多的体现一种行为约束,一种规则,一旦实现了这个接口,就要给出这个接口中所以方法的具体实现,也就是实现类对于接口中所有的方法都是有意义是的。

2.你知道反射机制和动态代理吗?

反射机制是Java语言提供的一种基础功能,赋予程序在运行时自省(introspect,官方用语)的能力。通过反射我们可以直接操作类或者对象,比如获取某个对象的类定义,获取类声明的属性和方法,调用方法或构造对象,甚至可以运行时修改类定义。

动态代理是一种方便运行时动态构建代理、动态处理代理方法调用的机制,很多场景都是利用类似机制做到的。比如用来包装RPC调用、面向切面的编程(AOP)。

实现动态代理的方式很多,比如JDK自身提供的动态代理,就是主要利用了反射机制。还有其他的实现方式,比如利用传说中更高性能的字节码操作机制,类似ASM、cglib(基于ASM)、Javassist等。

3.一个线程连续两次调用start方法会发生什么?简单谈谈线程的几种状态?

Java的线程是不允许启动两次的,第二次调用必然会抛出IllegalThreadStateException,这是一种运行时异常,多次调用start被认为是编程错误。 关于线程生命周期的不同状态,在Java 5以后,线程状态被明确定义在其公共内部枚举类型java.lang.Thread.State中,分别是: 新建(NEW),就绪(RUNNABLE),阻塞(BLOCKED),等待(WAITING),终止(TERMINATED)

4.springmvc实现原理?

1. SpringMVC框架是以请求为驱动,围绕Servlet设计,将请求发给控制器,然后通过模型对象,分派器来展示请求结果视图。其中核心类是DispatcherServlet,它是一个Servlet,顶层是实现的Servlet接口。 2. 需要在web.xml中配置DispatcherServlet。并且需要配置spring监听器ContextLoaderListener


流程说明:
(1)客户端(浏览器)发送请求,直接请求到DispatcherServlet。
(2)DispatcherServlet根据请求信息调用HandlerMapping,解析请求对应的Handler。
(3)解析到对应的Handler后,开始由HandlerAdapter适配器处理。
(4)HandlerAdapter会根据Handler来调用真正的处理器开处理请求,并处理相应的业务逻辑。
(5)处理器处理完业务后,会返回一个ModelAndView对象,Model是返回的数据对象,View是个逻辑上的View。
(6)ViewResolver会根据逻辑View查找实际的View。
(7)DispaterServlet把返回的Model传给View。
(8)通过View返回给请求者(浏览器)

5.mybatis中#$的区别?

#{}方式能够很大程度防止sql注入(安全),${}方式无法防止Sql注入 在JDBC能使用占位符的地方,最好优先使用#{} 在JDBC不支持使用占位符的地方,就只能使用${},典型情况就是 动态参数 比如 有两张表,分别是emp_2017 和 emp_2018 .如果需要在查询语句中 动态指定表名,就只能使用${} 复制代码再比如MyBatis 排序时使用order by 动态参数时,此时也只能使用${}

6.你知道设计模式吗?在实际运用中你会怎样去运用它?比如我这里有个策划打折活动,比如VIP,普通用户,顾客分别打不一样的折扣,你会用什么设计模式?

单例模式(Singleton),适配器(Adapter),包装器,代理(Proxy),观察者(Observer),策略(Strategy) 在现实生活中常常遇到实现某种目标存在多种策略可供选择的情况,例如,出行旅游可以乘坐飞机、乘坐火车、骑自行车或自己开私家车等,超市促销可以釆用打折、送商品、送积分等方法。 策略模式的定义与特点 策略(Strategy)模式的定义:该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于对象行为模式,它通过对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行管理。

7.你知道索引失效吗?举例看看?

索引失效,可以从一下几种原因中分析: 1.在where条件的等号左侧中使用函数 where date(create_at) = ‘2019-01-01’ 带有列的函数计算值,导致索引无法使用。 2.表关联字符集格式以及排序方式不一致 关注CHARSET和COLLATION SQL写法错误导致的索引失效比较常见的例子是,我们存储手机号的字段格式为varchar,但是SQL却写的where phone=123; 3.统计信息不准确 在查询中使用 !=、not in、not exists等 4.MySQL支持前缀索引,但是不支持后缀索引 5.where条件中有or,需将or中的每个字段都加上索引 6.状态值少的字段不宜使用索引,例如性别。 设置联合索引时,索引的建立顺序要和where或者order by条件中的字段顺序相同,如建立name、status(分别为key1、key2)的联合索引,此时以name字段为第一查询顺序的索引有效

8.多态在实际项目中的使用?

在实际开发工作中,常常遇到一个功能有多种实现方式,比如支付方式,有分微信支付、京东支付、支付宝、银联等支付方式,不同支付方式的大概流程大抵相似,实现细节有所区别。这个时候就可以用到java的多态机制,先定义一个公共接口,接口定义支付流程的各个方法,具体的支付方式实现该接口的方法。在控制层,利用spring的注入获取支付类型和支付方式实现类的引用映射,根据请求需要的支付类型就可以调用对应支付方式的方法,以此实现业务的解耦和拓展。后期需要增加支付方式,只需要实现共同接口即可。参考链接:https://blog.csdn.net/kuyuyingzi/article/details/80050028

9.你知道Spring IOC 吗?Spring 是怎样创建对象的?

查看提示 答案后续更新...

10.你知道缓存机制不?

Java常见缓存机制cache(集成spring使用) 1理解cache 在Java中,不同的类都有自己单独的Cache机制,实现的方法也可能有所不同,常见的各类Cache机制有:OSCache、JSC(Java Caching System)、EHCache、JCache、ShiftOne、SwarmCache、JBossCache等等。 所谓缓存,就是将程序或系统经常要调用的对象存在内存中,一遍其使用时可以快速调用,不必再去创建新的重复的实例。这样做可以减少系统开销,提高系统效率。 2缓存分类 缓存主要可分为二大类: 1:通过文件缓存 是指把数据存储在磁盘上,不管你是以XML格式,序列化文件DAT格式还是其它文件格式 2:内存缓存 就是实现一个类中静态Map,对这个Map进行常规的增删查 3应用场景 1:涉及到处理高并发请求,且需要及时响应的 2:加快系统响应速度时 参考链接: https://cloud.tencent.com/developer/article/1081782

11.你的项目中有用到数据库分库分片吗?数据库分库分片规则?

[参考链接](https://zhuanlan.zhihu.com/p/54921615)

12.在实际中你会怎样对sql语句进行优化?

[参考链接](https://zhuanlan.zhihu.com/p/47155782)

13.常见的数据结构有哪些?在Java中是怎样使用它们的?

[参考链接](https://zhuanlan.zhihu.com/p/63138829)

14.JVM原理你知道吗?有没有自己调优过?

[参考链接](https://blog.csdn.net/leogreat110/article/details/115345603)

15.看你的项目里用到了SpringBoot,谈谈你对SpringBoot的理解?

[参考链接](https://blog.csdn.net/weixin_40920882/article/details/106036389)

16.你项目里用到了 rocket MQ,那你知道rabbit MQ、rocket MQ和kafka它们之间的区别吗?

[参考链接](https://blog.csdn.net/belvine/article/details/80842240)

17.redis常用场景有哪些?你的项目中主要是使用redis干嘛的?

[参考链接](https://blog.csdn.net/qq_41097354/article/details/90146745)

18.有自己部署过redis吗?redis是如何实现高可用的?

查看提示 答案后续更新...

19.了解mysql的读写分离吗?是如何实现高可用的?

[参考链接](https://segmentfault.com/a/1190000023775512)

20.Exception和Error的关系和区别?

查看提示 答案后续更新...

21.基本数据类型转换为String时你有几种方法,分别是什么?

查看提示 答案后续更新...

22.如何利用JDK不依赖外部工具,实现一个简单的缓存机制?请简述用到的技术和思路?

查看提示 答案后续更新...

23.你项目中是怎样用到事物的,分布式锁呢?

查看提示 答案后续更新...

24.Zookeeper有哪些运用场景?

查看提示 答案后续更新...

String 可能会问到的

// 1、== 和 equals的区别?
// 建议从基本数据类型和引用数据类型以及Object和String的equals来大致说
// 2、下面代码的运行结果是?
String str1 = "Hello World";
String str2 = "Hello" + " World"; // 两个常量池的字面拼接值还是在常量池中
System.out.println(str1 == str2); // true


// 3、下面代码运行的结果是?
String str1 = "Hello World"; // 常量池
String str2 = "Hello";
str2 += " World"; // 操作了str2 是一个变量,变量是存在于 堆中的
System.out.println(str1 == str2); // false


// 4、下面代码运行的结果是?
String str1 = "Hello World";
String str2 = " World";
String str3 = "Hello" + str2;
System.out.println(str1 == str3); // false

// 5、下面代码的运行结果是?
String str1 = "Hello World";
final String str2 = " World";
String str3 = "Hello" + str2;
System.out.println(str1 == str3); // true

// 6、下面代码的运行结果是?
String str1 = "Hello World";
final String str2 = new String(" World"); //虽然用final修饰了,但是因为是采用的构造函数来实例化的,所以本身就存在于堆内存中,本身就是一个变量了
String str3 = "Hello" + str2;
System.out.println(str1 == str3); // false

// 7、下面代码的运行结果是?
String str1 = "Hello World";
String str2 = "Hello";
String str3 = " World";
String str4 = str2 + str3;
System.out.println(str4 == str1); // false
System.out.println(str4.intern() == str1); // true intern相当于是从常量池中查找是否有该值,若有则返回


🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀

15k面试题

1.IO/NIO的区别,为什么要用NIO,使用IO中的Buffered也能实现NIO的面向缓冲,什么情况下用NIO?

查看提示 答案后续更新...

2.熟悉的排序算法有哪些?快速排序算法的实现原理?

查看提示 答案后续更新...

3.HashMap与ConcurrentHashMap有什么区别?HashMap的存储结构?

查看提示 答案后续更新...

4.vector、ArrayList和LinkedList区别及存储性能?

查看提示 答案后续更新...

5.线程实现的几种方式,有什么区别,一般用哪个,为什么?

查看提示 答案后续更新...

6.多线程中线程池怎么样使用及其实现原理?

查看提示 答案后续更新...

7.volatile关键字的作用是什麽?

查看提示 答案后续更新...

8.synchronized关键字的作用,使用该关键字后保证同步了,同步代码块与同步方法有什么区别?

查看提示 答案后续更新...

9.一个线程可以多次start吗?会报错吗?

查看提示 答案后续更新...

10.Spring AOP IOC实现原理?

查看提示 答案后续更新...

11.Spring中的事物的传播方式怎样实现的?

查看提示 答案后续更新...

12.Spring中事物实现的原理?

查看提示 答案后续更新...

13.为什么要使用数据库索引,数据库索引有哪些?索引的底层原理是什么?

查看提示 答案后续更新...

14.sql查询缓慢怎么处理?sql优化方案有哪些?explain用过吗?

查看提示 答案后续更新...

15.数据库中的锁有几种?比如行锁,表锁等了解吗?

查看提示 答案后续更新...

16.数据库为什么要使用事物?事物的原理是什么?

查看提示 答案后续更新...

17.数据库分库分表的方法,垂直分还是水平分,根据哪些来分?

查看提示 答案后续更新...

18.count(1) count(5) count(*)有什么区别,100万条数据的效率如何?

查看提示 答案后续更新...

19.solr搜索实现原理,使用的排序算法是什么?怎样实现快速查询?

查看提示 答案后续更新...

20.3次握手的原理是什么?

查看提示 答案后续更新...

21.动态代理实现原理是什么和动态代理使用的方法、类有哪些?

查看提示 答案后续更新...

22.redis的数据结构有哪些?

查看提示 答案后续更新...

23.虚拟机了解多少?

查看提示 答案后续更新...

24.Spring默认是单例还是多例的?

查看提示 答案后续更新...

25.常用的队列有哪些?分别是什么情况下使用?

查看提示 答案后续更新...

26.你知道的线程安全的类有哪些,方法有哪些?

查看提示 答案后续更新...

27.数据库的乐观锁和悲观锁的原理及使用?

查看提示 答案后续更新...

28.对GC了解多少?

查看提示 答案后续更新...

29.堆和栈的区别,堆中存放什么,栈中存放什么?

查看提示 答案后续更新...

30.用过的中间件有哪些?

查看提示 答案后续更新...


💄💄💄💄💄💄💄💄💄💄💄💄💄💄💄💄

20k面试题

1.你认为的“大规模高并发访问的Web”有哪些呢?请举例2个知名的网站?

查看提示 答案后续更新...

2.你开发过的核心功能有哪些呢?

查看提示 答案后续更新...

3.如果让你对外开发一个接口,你会考虑哪些因素?

查看提示 答案后续更新...

4.设计数据库的时候会考虑哪些因素,怎样去建表?

[参考链接](https://www.cnblogs.com/JavaArchitect/p/7449166.html) [参考链接](https://www.huaweicloud.com/articles/c1c4f2d4c72b61eab44114ae8286835f.html)

5.说说负载均衡,缓存,文件数据库技术的心得和要点?

查看提示 答案后续更新...

6.性能评估机制有哪些方面呢,你有这方面的经验和心得吗?

查看提示 答案后续更新...

7.精通UML以及熟练使用一种或多种建模工具

查看提示 答案后续更新...

8.你常去的技术网站是什么?工作中用过什么辅助软件呢?

查看提示 答案后续更新...


posted @ 2022-06-21 23:52  LoremMoon  阅读(19)  评论(0编辑  收藏  举报