Java开发面试必须掌握的几个基础问题

Java接口和抽象类的区别:

从概念上理解,抽象类指的是“是不是”的问题,抽象类的所有抽象方法必须被重写,比如定义一个动物的抽象类,里面有吃和睡两个方法,意思就是我只要“是”动物、继承了这个类,我就一定有吃和睡的功能,必须要重写这些方法;

接口指的是“有没有”的问题;比如我定义了吃饭、睡觉、学习这三个接口,人这个类可以去实现吃饭、睡觉、学习三个接口,猫可以去实现吃饭、睡觉这两个接口,我有什么这个接口定义的功能,我就可以去实现的这个接口;

抽象类是单继承的,接口的可以实现很多个;

接口中的属性都是常量static final修饰,方法都默认是抽象方法;

Java多线程实现方式:

第一种:通过继承Thread类来实现多线程,需要重写run()方法,通过start()方法来启动,对于同一个实例化线程对象,start()方法只能调用一次,start()方法会根据不同操作系统执行相应的系统调用;

第二种:由于继承有单继承局限,也可以通过实现Runnable接口来实现多线程,这个时候就不能简单的通过调用实例化对象的start()方法了,start()方法是thread类的方法,这个时候就要用thread类的另一个构造方法实例化一个线程类,把我们实现了Runnable接口的类传进去,之后再调用start()方法即可;

在进行Thread启动多线程的时候调用的是start()方法,而后找到的是run()方法。当通过Thread类的构造方法传递了一个Runnable接口对象的时候,那么该接口对象将被Thread中target的属性保存,在start()方法执行的时候会调用Thread类中的run方法,而这个run()方法去调用Runnable接口子类被覆写过的run()方法。

第三种:是通过实现Callable接口实现多线程,实现的时候可以指定返回值类型;由于Runnable接口只是执行线程,结束后并没有返回值,为了实现返回值,后来就有了这个接口,需要将核心业务对象传给一个FutureTask对象,然后把FutureTask对象传给thread对象,调用start()方法即可启动线程;然后通过futureTask对象的get()方法可以获取线程执行完的返回值;

Java集合类介绍:

答案见这里:Java集合类总结

Overload和Override的含义区别:

Override:重写,子类对父类方法的实现过程进行重写,但是返回值和形参不能改变,可以根据子类自己的需要实现相应的功能;异常可以减少或者删除,但是不能抛出更广的异常;访问符不能做更严格的限制可以放松限制;

Overload:重载,在一个类中,方法名字相同,形参必须不同,返回类型、异常、访问符可以相同也可以不同;

他们都是Java多态的表现;

Java声明类型有哪些:

Java封装、继承、多态介绍:

封装:将事物拥有的属性和动作隐藏起来,只保留特定的方法与外界联系;当内部的逻辑发生变化时,外部调用不用因此而修改,他们只调用开放的接口,而不用去关心内部的实现;

继承:代码重用是一点,最重要的还是所谓想上转型,即父类的引用变量可以指向子类对象,这是Java面向对象最重要特性多态的基础;

多态:多态可以说是“一个接口,多种实现”或者说是父类的引用变量可以指向子类的实例,被引用对象的类型决定调用谁的方法,但这个方法必须在父类中定义;

多态可以分为两种类型:编译时多态(方法的重载)和运行时多态(继承时方法的重写)

Java写单例模式:

public class Singleton {
    private final static Singleton INSTANCE = new Singleton();
    private Singleton(){}
    public static Singleton getInstance(){
        return INSTANCE;
    }
}

Spring AOP和IOC介绍:

 

项目中使用了哪些技术:

 

Sql语句:

查询:

       select 属性、属性、属性... from 表 as 别名、表、表... where 条件、条件、条件...order by DESC(降序)/ASC(升序);

       并交差:

       并:(select ... from ... where ...)union (select ... from ... where ...)

       交:(select ... from ... where ...)intersect (select ... from ... where ...)

       差:(select ... from ... where ...)except (select ... from ... where ...)

       子查询:

       select ... from ... where ...属性 [>/</>=/<=/<> all/any/exists] [in/not in] (select . from ... where ...)

       连接表达式:

       cross join 笛卡尔积;join 内连接;left out join 左外连接;right out join 右外连接;full out join 全外连接;natural join 自然连接;  可用 on 增强条件。

       全关系操作:

       Select distinct ...;distinct关键字去除重复;

       聚集分组操作:

       Sum();count();min(),max();avg();

       Select ... from ... where ... group by 分组属性 having 条件;

数据库更新:

       插入:

       Insert into 表 values (v1,v2,...);

       删除:

       Delete from 表 where 条件;

       修改:

       Update 表 set a1 = v1,a2 = v2,... where 条件;

关系模式定义:

       创建表:数据类型:char varchar tinyint int bigint double float date time timestamp

       Create table 表名(

              属性 类型 [default 缺省值],

              属性 类型,

              。。。

              属性 类型

);

删除表:

Drop table 表;

修改表:

Alter table 表 add 列名 数据类型;【增加列】

Alter table 表 drop 列名;【删除列】

Alter table 表 modify 列名 数据类型;【修改列】

Alter table 表 rename 表新名;【重命名表】

Alter table 表 rename 列名 to 新列名;【重命名列名】

创建视图:

Create view 视图名[(属性名,属性名。。。)] as select ......;

 

有哪些排序算法,哪些是稳定的:

各种算法时间复杂度
冒泡直接插入归并基数快速选择希尔
n2b2nlogn nlognn2 nlogn

 

 

 

快、选、希、堆 是不稳定的;其他都是稳定的!

  • 6
    点赞
  • 65
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java面试资源概览 一、内容概览 本次分享的资源涵盖了Java面试的各个方面,从基础知识到高级技术,从数据库到框架应用,都做了深入的探讨和总结。具体内容包括: Java基础知识点:包括数据类型、面向对象特性、异常处理、集合框架等。 Java核心技术:如多线程、网络编程、序列化等都有详细的解释和示例。 常用框架:如Spring、MyBatis等框架的使用方法和内部原理都有涉及。 数据库相关:包括关系型数据库和非关系型数据库的使用,以及JDBC、MyBatis等与数据库交互的技术。 实战项目经验:分享了几个经典的Java项目,解析了项目的架构设计和核心技术点。 面试经验和技巧:整理了常见的Java面试问题,并给出了答题建议和技巧。 代码和项目实例:提供了多个Java项目的源代码,方便学习者参考和实践。 学习笔记和心得:记录了学习过程中的重点难点和心得体会,有助于学习者更好地理解和掌握知识。 二、适用人群 本资源适用于即将毕业或已经毕业,希望通过学习Java找到一份理想工作的同学。无论你是初学者还是有一定基础开发者,都能从中获得启发和帮助。 三、使用建议 系统学习:建议学习者按照资源提供的顺序和内容,系统地学习和掌握Java的知识点。 实践为王:理论知识和实战经验相结合,通过实践来加深理解和记忆。 持续更新:由于Java技术和面试要求都在不断更新,建议学习者保持关注,随时更新自己的知识和技能。 交流与讨论:与同学或同行进行交流和讨论,分享学习心得和经验,共同进步。Java面试资源概览 一、内容概览 本次分享的资源涵盖了Java面试的各个方面,从基础知识到高级技术,从数据库到框架应用,都做了深入的探讨和总结。具体内容包括: Java基础知识点:包括数据类型、面向对象特性、异常处理、集合框架等。 Java核心技术:如多线程、网络编程、序列化等都有详细的解释和示例。 常用框架:如Spring、MyBatis等框架的使用方法和内部原理都有涉及。 数据库相关:包括关系型数据库和非关系型数据库的使用,以及JDBC、MyBatis等与数据库交互的技术。 实战项目经验:分享了几个经典的Java项目,解析了项目的架构设计和核心技术点。 面试经验和技巧:整理了常见的Java面试问题,并给出了答题建议和技巧。 代码和项目实例:提供了多个Java项目的源代码,方便学习者参考和实践。 学习笔记和心得:记录了学习过程中的重点难点和心得体会,有助于学习者更好地理解和掌握知识。 二、适用人群 本资源适用于即将毕业或已经毕业,希望通过学习Java找到一份理想工作的同学。无论你是初学者还是有一定基础开发者,都能从中获得启发和帮助。 三、使用建议 系统学习:建议学习者按照资源提供的顺序和内容,系统地学习和掌握Java的知识点。 实践为王:理论知识和实战经验相结合,通过实践来加深理解和记忆。 持续更新:由于Java技术和面试要求都在不断更新,建议学习者保持关注,随时更新自己的知识和技能。 交流与讨论:与同学或同行进行交流和讨论,分享学习心得和经验,共同进步。Java面试资源概览 一、内容概览 本次分享的资源涵盖了Java面试的各个方面,从基础知识到高级技术,从数据库到框架应用,都做了深入的探讨和总结。具体内容包括: Java基础知识点:包括数据类型、面向对象特性、异常处理、集合框架等。 Java核心技术:如多线程、网络编程、序列化等都有详细的解释和示例。 常用框架:如Spring、MyBatis等框架的使用方法和内部原理都有涉及。 数据库相关:包括关系型数据库和非关系型数据库的使用,以及JDBC、MyBatis等与数据库交互的技术。 实战项目经验:分享了几个经典的Java项目,解析了项目的架构设计和核心技术点。 面试经验和技巧:整理了常见的Java面试问题,并给出了答题建议和技巧。 代码和项目实例:提供了多个Java项目的源代码,方便学习者参考和实践。 学习笔记和心得:记录了学习过程中的重点难点和心得体会,有助于学习者更好地理解和掌握知识。 二、适用人群 本资源适用于即将毕业或已经毕业,希望通过学习Java找到一份理想工作的同学。无论你是初学者还是有一定基础开发者,都能从中获得启发和帮助。 三、使用建议 系统学习:建议学习者按照资源提供的顺序和内容,系统地学习和掌握Java的知识点。 实践为王:理论知识和实战经验相结合,通过实践来加深理解和记忆。 持续更新:由于Java技术和面试要求都在不断更新,建议学习者保持关注,随时更新自己的知识和技能。 交流与讨论:与同学或同行进行交流和讨论,分享学习心得和经验,共同进步。
Java面试资源概览 一、内容概览 本次分享的资源涵盖了Java面试的各个方面,从基础知识到高级技术,从数据库到框架应用,都做了深入的探讨和总结。具体内容包括: Java基础知识点:包括数据类型、面向对象特性、异常处理、集合框架等。 Java核心技术:如多线程、网络编程、序列化等都有详细的解释和示例。 常用框架:如Spring、MyBatis等框架的使用方法和内部原理都有涉及。 数据库相关:包括关系型数据库和非关系型数据库的使用,以及JDBC、MyBatis等与数据库交互的技术。 实战项目经验:分享了几个经典的Java项目,解析了项目的架构设计和核心技术点。 面试经验和技巧:整理了常见的Java面试问题,并给出了答题建议和技巧。 代码和项目实例:提供了多个Java项目的源代码,方便学习者参考和实践。 学习笔记和心得:记录了学习过程中的重点难点和心得体会,有助于学习者更好地理解和掌握知识。 二、适用人群 本资源适用于即将毕业或已经毕业,希望通过学习Java找到一份理想工作的同学。无论你是初学者还是有一定基础开发者,都能从中获得启发和帮助。 三、使用建议 系统学习:建议学习者按照资源提供的顺序和内容,系统地学习和掌握Java的知识点。 实践为王:理论知识和实战经验相结合,通过实践来加深理解和记忆。 持续更新:由于Java技术和面试要求都在不断更新,建议学习者保持关注,随时更新自己的知识和技能。 交流与讨论:与同学或同行进行交流和讨论,分享学习心得和经验,共同进步。Java面试资源概览 一、内容概览 本次分享的资源涵盖了Java面试的各个方面,从基础知识到高级技术,从数据库到框架应用,都做了深入的探讨和总结。具体内容包括: Java基础知识点:包括数据类型、面向对象特性、异常处理、集合框架等。 Java核心技术:如多线程、网络编程、序列化等都有详细的解释和示例。 常用框架:如Spring、MyBatis等框架的使用方法和内部原理都有涉及。 数据库相关:包括关系型数据库和非关系型数据库的使用,以及JDBC、MyBatis等与数据库交互的技术。 实战项目经验:分享了几个经典的Java项目,解析了项目的架构设计和核心技术点。 面试经验和技巧:整理了常见的Java面试问题,并给出了答题建议和技巧。 代码和项目实例:提供了多个Java项目的源代码,方便学习者参考和实践。 学习笔记和心得:记录了学习过程中的重点难点和心得体会,有助于学习者更好地理解和掌握知识。 二、适用人群 本资源适用于即将毕业或已经毕业,希望通过学习Java找到一份理想工作的同学。无论你是初学者还是有一定基础开发者,都能从中获得启发和帮助。 三、使用建议 系统学习:建议学习者按照资源提供的顺序和内容,系统地学习和掌握Java的知识点。 实践为王:理论知识和实战经验相结合,通过实践来加深理解和记忆。 持续更新:由于Java技术和面试要求都在不断更新,建议学习者保持关注,随时更新自己的知识和技能。 交流与讨论:与同学或同行进行交流和讨论,分享学习心得和经验,共同进步。Java面试资源概览 一、内容概览 本次分享的资源涵盖了Java面试的各个方面,从基础知识到高级技术,从数据库到框架应用,都做了深入的探讨和总结。具体内容包括: Java基础知识点:包括数据类型、面向对象特性、异常处理、集合框架等。 Java核心技术:如多线程、网络编程、序列化等都有详细的解释和示例。 常用框架:如Spring、MyBatis等框架的使用方法和内部原理都有涉及。 数据库相关:包括关系型数据库和非关系型数据库的使用,以及JDBC、MyBatis等与数据库交互的技术。 实战项目经验:分享了几个经典的Java项目,解析了项目的架构设计和核心技术点。 面试经验和技巧:整理了常见的Java面试问题,并给出了答题建议和技巧。 代码和项目实例:提供了多个Java项目的源代码,方便学习者参考和实践。 学习笔记和心得:记录了学习过程中的重点难点和心得体会,有助于学习者更好地理解和掌握知识。 二、适用人群 本资源适用于即将毕业或已经毕业,希望通过学习Java找到一份理想工作的同学。无论你是初学者还是有一定基础开发者,都能从中获得启发和帮助。 三、使用建议 系统学习:建议学习者按照资源提供的顺序和内容,系统地学习和掌握Java的知识点。 实践为王:理论知识和实战经验相结合,通过实践来加深理解和记忆。 持续更新:由于Java技术和面试要求都在不断更新,建议学习者保持关注,随时更新自己的知识和技能。 交流与讨论:与同学或同行进行交流和讨论,分享学习心得和经验,共同进步。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值