1.常用到的集合有哪些,arrayList和hashSet是否线程安全,怎么处理
2.简单讲讲spring bean的生命周期
3.查询的优化(因为我目前做的搜索引擎)
4.了解的设计模式
5.jvm的了解,new一个对象会在哪个区域
6.项目的设计和开发是否我一个人完成的
7.tomcat了解多少,容器的了解
8.事务的了解
9.数据库索引有哪些类型
10.切面的了解,以及日常的使用,比如日志
11.常用的框架,讲讲spring-boot的注解,以及为什么可以引入依赖直接使用
12.常见的运行时异常,以及这些异常的处理,怎么封装
-------------------------------------------------------------------------------------------------------
1.常用到的集合有哪些,arrayList和hashSet是否线程安全,怎么处理
list和set ,其中list主要有arraylist、linklist、set主要是hashset 其中list有序可重复、set无序不可重复,arraylist可根据下标查询方便,linklist插入删除性能更好,只要改变前后指针的位置。
map主要有hashmap,键值对形式的存储,无序的线程不安全的,hashmap底层是根据数组+联表+红黑树实现的,put时,把key通过hash计算得到backet数组的位置,再初始化链表存进对象。get时,计算出backet的位置,再用equals去匹配值。
解决线程不安全的问题,
1 vector是线程安全的、2 使用Collections的synchronizedList方法
2 hashTable是线程安全的、2 使用Collections的synchronizedMap方法
-------------------------------------------------------------------------------------------------------
2.简单讲讲spring bean的生命周期
先实例化一个bean(单例的),再注入配置,根据配置调用,最后销毁
-------------------------------------------------------------------------------------------------------
3.查询的优化(因为我目前做的搜索引擎)
首先是sql的优化,是否带where条件,是否有排序,是否给条件加索引,连表的话两边都需要加索引,再然后考虑分库分表、缓存、和一些中间表
-------------------------------------------------------------------------------------------------------
4.了解的设计模式
单例模式、工厂模式、观察者模式、
-------------------------------------------------------------------------------------------------------
5.jvm的了解,new一个对象会在哪个区域
–>堆内存是用来存放由new创建的对象和数组,即动态申请的内存都存放在堆内存
–>栈内存是用来存放在函数中定义的一些基本类型的变量和对象的引用变量
-------------------------------------------------------------------------------------------------------
6.项目的设计和开发是否我一个人完成的
框架有架构师,专用的数据,其他的表设计、接口拆分计划安排都是安排的
-------------------------------------------------------------------------------------------------------
7.tomcat了解多少,容器的了解
-------------------------------------------------------------------------------------------------------
8.事务的了解
原子性:要么都成功,要么都失败
一致性:修改数据不能影响整体(ex总金额不能少)
隔离性:多线程处理时不能相互影响
持久性:一旦修改永久有效
-------------------------------------------------------------------------------------------------------
10.切面的了解,以及日常的使用,比如日志
面向切面目的:在不影响别人代码的前提下,在别人代码执行前后切入自己的逻辑。
-------------------------------------------------------------------------------------------------------
11.常用的框架,讲讲spring-boot的注解,以及为什么可以引入依赖直接使用
Spring Boot启动的时候会通过@EnableAutoConfiguration注解找到META-INF/spring.factories配置文件中的所有自动配置类,并对其进行加载,而这些自动配置类都是以AutoConfiguration结尾来命名的,它实际上就是一个JavaConfig形式的Spring容器配置类,它能通过以Properties结尾命名的类中取得在全局配置文件中配置的属性如:server.port,而XxxxProperties类是通过@ConfigurationProperties注解与全局配置文件中对应的属性进行绑定的
-------------------------------------------------------------------------------------------------------
12.常见的运行时异常,以及这些异常的处理,怎么封装
封装自定义的异常可以提高系统的交互友好性和维护性。
BusinessException extends RuntimeException
主要是继承RuntimeException,并且构造方法调用父方法
-------------------------------------------------------------------------------------------------------