第一次实习面试—Java后端

4 篇文章 0 订阅
3 篇文章 0 订阅

 集合是必问的,写在前面

1.说一下集合

(1)Java中常见集合分为三大类,Set,List,Map;

(3)Set集合是无序的,不可重复的,常见实现类有HashSet,TreeSet;
(2)List集合是有序的,可重复的,常见实现类有ArrayList,LinkedList,Vector;ArrayList查询快,但是线程不安全,LinkedList增删快
(4)Map集合用来存储key-value键值对,其中key是无序不可重复的,常见实现类有HashMap,TreeMap,Hashtable。HashMap是无序,非线程安全的,TreeMap是有序的

1.HashMap 和 Hashtable 有什么区别?

存储:HashMap 允许 key 和 value 为 null,⽽ Hashtable 不允许。

线程安全:Hashtable 是线程安全的,⽽ HashMap 是⾮线程安全的。

(推荐使⽤:在 Hashtable 的类注释可以看到,Hashtable 是保留类不建议使⽤,推荐在单线程环境下 使⽤ HashMap 替代,如果需要多线程使⽤则⽤ ConcurrentHashMap 替代)

2.ArrayList 和 LinkedList 的区别是什么?

数据结构实现:ArrayList 是动态数组的数据结构实现,⽽ LinkedList 是双向链表的数据结构实现。

随机访问效率:ArrayList查询快,但是线程不安全,LinkedList增删快(ArrayList ⽐ LinkedList 在随机访问的时候效率要⾼,因为 LinkedList 是线性的数据 存储⽅式,所以需要移动指针从前往后依次查找。 增加和删除效率:在⾮⾸尾的增加和删除操作,LinkedList 要⽐ ArrayList 效率要⾼,因为 ArrayList 增删操作要影响数组内的其他数据的下标。 综合来说,在需要频繁读取集合中的元素时,更推荐使⽤ ArrayList,⽽在插⼊和删除操作较多时,更推荐 使⽤ LinkedList)

3.HashSet 的实现原理/HashSet和HashMap的关系

HashSet 是基于 HashMap 实现的,HashSet 底层使⽤ HashMap 来保存所有元素,因此 HashSet 的实现 ⽐较简单,相关 HashSet 的操作,基本上都是直接调⽤底层 HashMap 的相关⽅法来完成,HashSet 不允许重复的值

static关键字的作用(也是必问重点):

1.static成员变量

静态成员变量属于类,非静态成员变量属于对象

2.static成员方法

静态成员方法属于类,不属于对象,因此不需要创建对象就可以被调用

非静态成员方法需要通过对象来调用

3.static代码块

所有的静态代码块只能在JVM加载类时被执行一次

4.static内部类

静态内部类不能访问外部类的实例成员(普通的成员变量和方法),只能访问外部类的类成员(静态成员变量和静态方法),静态内部类的非静态成员方法也不能访问外部类的实例成员

不依赖于外部类实例而被实例化

1.JDK 和 JRE 有什么区别?

JDK:Java Development Kit 的简称,java 开发⼯具包,提供了 java 的开发环境和运⾏环境。 JRE:Java Runtime Environment 的简称,java 运⾏环境,为 java 的运⾏提供了所需环境。 具体来说 JDK 其实包含了 JRE,同时还包含了编译 java 源码的编译器 javac,还包含了很多 java 程序调试 和分析的⼯具。简单来说:如果你需要运⾏ java 程序,只需安装 JRE 就可以了,如果你需要编写 java 程 序,需要安装 JDK

2.== 和 equals 的区别是什么?(多次问到)

== 对于基本类型来说是值⽐较,对于引⽤类型来说是⽐较的是引⽤;⽽ equals 默认情况下是引⽤ ⽐较,只是很多类重写了 equals ⽅法,⽐如 String、Integer 等把它变成了值⽐较,所以⼀般情况下 equals ⽐较的是值是否相等

3.三种修饰符

public、具有最大访问权限,外部类可以访问

private、访问权限仅限于类的内部,外部类不可以访问

protected保护子类,子类可以用它修饰的成员,其他的不可以

4.八种基本数据类型

byte、short、long、int

float、double、boolean、char

5.int和integer区别

1.int基本数据类型,integer是包装类

2.integer变量必须实例化才能使用,而int变量不需要

3.integer实际是对象的引用,int是直接存储数据值

6.char和varchar区别

1、最大长度:

char最大长度是255字符,varchar最大长度是65535个字节。

2、定长:

char是定长的,不足的部分用隐藏空格填充,varchar是不定长的。

3、空间使用:

char会浪费空间,varchar会更加节省空间。

4、查找效率:

char查找效率会很高,varchar查找效率会更低。

5、尾部空格:

char插入时可省略,vaechar插入时不会省略,查找时省略。
7.堆和栈的区别

(72条消息) 一文读懂堆与栈的区别_恋喵大鲤鱼的博客-CSDN博客_堆和栈的区别

8.break和continue的区别

break终止循环

continue跳出当次循环,继续进入下一次循环
9.类与对象的区别

1.类是模板,对象是实例

2.对象是一个实体,具有状态和行为

3.对象可以是有形的(物理)实体,也可以是无形的(逻辑)实体

类是一个逻辑实体

4.对象通过关键字new创建,类通过关键字class声明

5.类只需声明一次,对象可多次

6.对象在创建时就会占用内存,类在创建时不占用任何内存

7.创建对象的方法有很多种,如new关键字,newInstance()方法,clone()方法,反序列化

定义类只有使用class关键字这一种方法

9.设计模式

Java设计模式面试题(1~9题)_java364100的博客-CSDN博客_java的设计模式面试题

10.谈谈你对Spring的理解

1)Spring是当前主流的开发框架,是一个轻量级开源框架,用来封装Java对象,以IoC和AOP为内核,具有简单、可测试和松耦合等特点

2)IoC(控制反转),通过控制反转达到松耦合的目的,将类的创建和依赖关系写在配置文件里,由配置文件注入,实现了松耦合
Spring提供了对IOC的良好支持,IOC是一种编程思想,是一种架构艺术,利用这种思想可以很好地实现模块之间的解耦,IOC也被称为DI,即依赖注入。

3)AOP(面向切面编程) 将安全,事务等于程序逻辑相对独立的功能抽取出来,利用spring的配置文件将这些功能插进去,实现了按照方面编程,提高了复用性

数据库

1.MySQL如何优化?

这个我还没弄懂,找了个链接可以看看:

(72条消息) java mysql优化,java面试(一)Mysql优化_滴水荥阳的博客-CSDN博客

2.针对简历中学生管理系统提问:

1.模糊查询

查询包含123的信息:%123%

2.查询河北省最高分

首先用group by按省份分组,然后用一个max()函数查询

非专业性提问(IT公司对这个关注的不多,仅有一家问过)


1.你认为培训和看B站学习哪个好?

(我当时很实在的回答说“看视频,因为不用交钱”,基于我是培训过一段时间的虽然那个老师讲的不咋样,但是我简历上是写有培训经历的,现在想想应该这么回答:)

培训,因为遇到问题可以当面请教老师同学,面对面解决问题更高效,且更深刻。B站虽然是免费的,但是遇到问题没有老师同学一起研究讨论,遇到问题解决起来很慢也很困难。

2.为什么看你简历上得过这么多奖,却没拿过奖学金?

因为大学的时间精力都放在做喜欢的事,不想为了奖学金去卷绩点,为了拿奖学金加量化而去参加各种没有意义的比赛。我在入学时就定下了要就业的目标,也有很多个人爱好,所以课余时间都用在学习相关技术上和发展个人爱好了。

介绍简历上某个项目怎么写的,某个功能怎么实现的

写在最后

Java基础、多态是重点,要尽量做到深刻掌握

面试前多看看面经和自己做过的项目,交流更自信一点

  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值