当前位置: 首页 > 面试经验 >

4.17北大软件武汉分公司 Java后端一面 30min

优质
小牛编辑
136浏览
2023-04-17

4.17北大软件武汉分公司 Java后端一面 30min

1.自我介绍

2. Java基本数据类型有哪些?

一共八种,int、short、long、double、float、byte、char、boolean

3.String有哪些常用方法?

常用的方法有equals、split、charAt、subString等

4.重载和重写有什么区别?

重载:发生在同一个类,方法名相同、参数列表和顺序可以不同

重写:发生在子类继承父类中,子类重写父类方法,可应用自己的逻辑实现需求

5.Java三大特性?

1.封装:可将某个类进行封装,对外提供get\set方法

2.继承:子类继承父类,在父类原有的代码上进行扩展,提高代码的复用性和拓展性

3.多态:引用变量指向不同类的实例,可通过继承(多个子类对同一方法的重写)和实现接口实现多态

6.你了解Java集合吗?

Java集合主要有两个大类,Collection和Map,Collection包含List接口和Set接口

Collection :

List:ArrayList、LinkedList、Stack等

Set:HashSet、TreeSet等

Map:

HashMap、TreeMap、Hashtable、ConcurrentHashMap

7.请说一下Map中各个实现类的区别?

HashMap:以key-value对进行存储的数据结构,底层为数组+链表\红黑树,非线程安全

Hashtable:底层数据结构为数组+链表,内部方法大多经过synchronized修饰,线程安全,性能偏低

ConcurrentHashMap:底层数据结构为Node数组 + 链表/红黑树,利用CAS自旋锁+synchronized保证线程安全

8. 你看过HashMap的源码吗?

我看过HashMap的put方法的源码,HashMap的put操作是利用hashcode()方法计算出key的hash值,将hash值与数组长度-1 取模得到存放的索引index,若该index上为空,则直接进行put操作,若有值,则利用equals()判断该值与key是否相同,相同则说明是同一个key,直接进行覆盖,若不同则发生哈希碰撞,采用链表进行存储,若链表超过一定长度,则转换为红黑树来提高查询性能

9.请说一下ArrayList和LinkedList的区别

ArrayList:底层是一个object[]数组,支持快速随机访问

LinkedList:底层是一个双向链表,不支持随机访问

10.SpringMVC有了解吗?

SpringMVC是一种三层架构的设计思路,M-模型层,V-视图层,C-控制层

SpringMVC的工作流程为:

1.用户发起请求

2.DispatchServlet接收用户请求,通过处理器映射器HandlerMapping找到对应的Controller

3.执行Controller的业务代码并返回ModelAndView给DispatcherServlet

4.DispatcherServlet解析视图,进行视图渲染,将模型数据填充到request域,返回response响应

11.SpringIOC和AOP有了解吗?

IOC-控制反转,是一种设计思想,将创建对象的控制权交由spring管理,IOC容器是Spring实现IOC的载体

AOP:面向切面编程,将公共业务比如日志进行封装,减少重复代码,降低模块间的耦合度,是基于动态代理的,若代理对象实现了接口,则使用JDK动态代理,否则使用Cglib动态代理

12.创建线程池的参数?

没答上来

13.MySQL的连接查询方式?

当时只回答了 Left Join、Right Join、Inner Join

14.Left Join 、Right Join和Inner Join有什么区别?

这方面确实没仔细学习,当时只回答了 left join 是左表驱动右表、right join是右表驱动左表、inner join是Mysql自行选择小表来驱动大表(显然面试官并不是想问这个)

反问环节

总体来说,面试难度较易,几乎没有问到项目,90%都为八股,面试官比较和善,没有太大压力,最后也是耐心举例子告诉我MySQL各种连接的区别

#我的实习求职记录#
 类似资料: