面试题泛谈

在程序员的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 @   LoremMoon  阅读(21)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示
主题色彩