33.XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有哪几种方式?
32.简述一下面向对象的”六原则一法则“。
31.有什么方法可以提高系统的稳定性?如何应对高并发?
30.经常更新的数据树,如何使用缓存?使用缓存有什么副作用?
副作用:不断的序列化和反序列化时候会有很大的开销。
如何使用索引:如果数据库层面的更新速度是一天更新一次,那么,浏览器上的缓存可以设置为一个小时更新一次。因为如果不用缓存,多并发访问是无法支撑的。
29.mysql建了索引以后,什么时候走索引,什么时候不走索引?为什么性别字段 男和女不建索引呢?
他会算,如果节省70%左右的时候,才会走索引。像男和女一样多,不如全表扫描?
28.对transaction(事务)的理解?什么时候用。
27.两个事务,大事务里面嵌套一个小事务。如何实现当小事务回滚的时候,不让大事务回滚?
26.既然垃圾处理可以自动的进行,那么我们还去学习垃圾处理干什么呢?
之前的项目中,有垃圾过多导致内存不足。
25.你对面向对象编程有什么自己的经验和理解?
24.谈一下学习过的设计模式?可以结合spring。
23.是否用过magodb?之前的项目是如何实现缓存机制的?
22.mysql数据类型除了int,还有哪些?讲一下int(unsigned)。
21.如何带团队,心得体会。
20.敏捷开发的了解。
19.前端框架 AngularJS 了解多少?说几个比较熟悉的前端框架?有没有关注到前端框架发展的方向是什么?
前端分层。业务层等,使得开发更简便。
18.你在写代码的时候,怎么选择设计模式?
17.http状态码有哪些?
16.hashmap是不是线程安全的?
线程安全的三个条件:
1 代码的顺序性
2 操作原子性
3 内存可见性
其中第二条,其中一个线程扩展map空间时,其他线程执行put操作,会出现并发问题。总之HashMap是非线程安全的,在高并发的场合使用的话,要用Collections.synchronizedMap进行包装一下。
15.数组和 ArrayList 的区别
- 数组可以包含基本类型和对象类型,ArrayList 只能包含对象类型
- 数组大小固定,ArrayList 大小可以动态变化
- ArrayList 提供了更多的特性(
addAll
、removeAll
)。
14.MySQL中四种常用存储引擎的介绍
见单独日志。
13.说说Spring MVC的工作原理、流程
( DispatcherServlet —— 串联起整个逻辑主线,是整个框架的心脏)在整个Spring MVC框架中,DispatcherServlet处于核心位置,它负责协调和组织不同组件完成请求处理并返回响应的工作。具体流程为:1)客户端发送http请求,web应用服务器接收到这个请求,如果匹配DispatcherServlet的映射路径(在web.xml中配置),web容器将请求转交给DispatcherServlet处理;
2)DispatcherServlet根据请求的信息及HandlerMapping的配置找到处理该请求的Controller;
3)Controller完成业务逻辑处理后,返回一个ModelAndView给DispatcherServlet;
4)DispatcherServlet借由ViewResolver完成ModelAndView中逻辑视图名到真实视图对象View的解析工作;
5)DispatcherServlet根据ModelAndView中的数据模型对View对象进行视图渲染,最终客户端得到的响应消息可能是一个普通的html页面,也可能是一个xml或json串,甚至是一张图片或一个PDF文档等不同的媒体形式。
12.线程池的作用
在程序启动的时候就创建若干线程来响应处理,它们被称为线程池,里面的线程叫工作线程。第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。
第二:提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。
第三:提高线程的可管理性。
常用线程池:ExecutorService 是主要的实现类,其中常用的有 :Executors.newSingleThreadPool()、newFixedThreadPool()、newcachedTheadPool()、newScheduledThreadPool()。
11.多线程使用的目的
1) 吞吐量:做WEB,容器帮你做了多线程,但是它只能帮你做请求层面的,简单的说,就是一个请求一个线程(如struts2,是多线程的,每个客户端请求创建一个实例,保证线程安全),或多个请求一个线程,如果是单线程,那只能是处理一个用户的请求;
2)伸缩性:也就是说,你可以通过增加CPU核数来提升性能。如果是单线程,那程序执行到死也就利用了单核,肯定没办法通过增加CPU核数来提升性能。
10,线程安全和线程不安全理解
线程安全就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用。不会出现数据不一致或者数据污染。 线程不安全就是不提供数据访问保护,有可能出现多个线程先后更改数据造成所得到的数据是脏数据
如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。
9,什么是aop?
假如没有aop,在做日志处理的时候,我们会在每个方法中添加日志处理,但大多数的日志处理代码是相同的,为了实现代码复用,我们可能把日志处理抽离成一个新的方法。但是这样我们仍然必须手动插入这些方法。但这样两个方法就是强耦合的,假如此时我们不需要这个功能了,或者想换成其他功能,那么就必须一个个修改。通过动态代理,可以在指定位置执行对应流程。这样就可以将一些横向的功能抽离出来形成一个独立的模块,然后在指定位置插入这些功能。这样的思想,被称为面向切面编程,亦即AOP。
8,对list、set的理解
1 List接口 List是有序的Collection,使用此接口能够精确的控制每个元素插入的位置。用户能够使用索引(元素在List中的位置,类似于数组下标)来访问List中的元素,这类似于Java的数组。和下面要提到的Set不同,List允许有相同的元素。2 Set接口 Set是一种不包含重复的元素的Collection,即任意的两个元素e1和e2都有e1.equals(e2)=false,Set最多有一个null元素。 很明显,Set的构造函数有一个约束条件,传入的Collection参数不能包含重复的元素
3 List和Set都是接口。他们各自有自己的实现类,有无顺序的实现类,也有有顺序的实现类。最大的不同就是List是可以重复的。而Set是不能重复的。List适合经常追加数据,插入,删除数据。但随即取数效率比较低。Set适合经常地随即储存,插入,删除。但是在遍历时效率比较低。
4 list,set都是可以使用collections.sort()排序的。
7,ArrayList 与Vector HashMap 与HashTable
就ArrayList 与Vector 主要从二方面来说.一.同步性:Vector 是线程安全的,也就是说是同步的,而ArrayList 是线程序不安全的,不是同步的二.数据增长:当需要增长时,Vector 默认增长为原来一培,而ArrayList 却是原来的一半。
6,什么是线程池?
5,linux常用命令
见单独日志。
4,MQ消息队列的使用情景,举例说明。
见单独日志。
3,spring boot,spring cloud,dubbo的原理概述?
见单独日志。
2,mysql索引原理?
见单独日志。