1、单例模式的应用:

  1. 网站的计数器,一般也是采用单例模式实现,否则难以同步。 <br /> 应用程序的日志应用,一般都是单例模式实现,只有一个实例去操作才好,否则内容不好追加显示。 <br /> 多线程的线程池的设计一般也是采用单例模式,因为线程池要方便对池中的线程进行控制 <br /> Windows的(任务管理器)就是很典型的单例模式,他不能打开俩个 <br /> windows的(回收站)也是典型的单例应用。在整个系统运行过程中,回收站只维护一个实例。

2、工厂模式解析

工厂模式:工厂模式是我们最常用的实例化对象模式,利用工厂模式可以降低程序的耦合性,为后期的维护修改提供了很大的便利。
分类:简单工厂、工厂方法、抽象工厂模式;

3、动态代理与静态代理

代理模式:代理在原有代码乃至原业务流程都不修改的情况下,直接在业务流程中切入新代码,增加新功能,
这也和Spring的(面向切面编程)很相似 ;
分类:
静态代理:简单代理模式,是动态代理的理论基础。常见使用在代理模式
jdk动态代理:使用反射完成代理。需要有顶层接口才能使用,常见是mybatis的mapper文件是代理。
cglib动态代理:也是使用反射完成代理,可以直接代理类,使用字节码技术,不能对final类进行继承。(需要导入jar包)

4、模板方法:定义一个操作中的算法骨架(父类),而将一些步骤延迟到子类中。

  1. 实现一些操作时,整体步骤很固定,但是呢。就是其中一小部分需要改变,这时候可以使用模板方法模式,<br /> 将容易变的部分抽象出来,供子类实现。

5、原型模式:简单来说就是克隆

6、策略模式:定义了一系列的算法 或 逻辑 或 相同意义的操作,并将每一个算法、逻辑、操作封装起来,而且使它们还可以相互替换。

  1. 我觉得主要是为了 简化 if...else 所带来的复杂和难以维护;

7、观察者模式:观察者模式,他定义对象之间一种一对多的依赖关系,使得当一个对象改变状态,

  1. 则所有依赖于它的对象都会得到通知并自动更新;

8、redis的优点:

  1. 数据存放:存放到内存中,还能不定期持久化到磁盘。存取速度快,并发能力强,断电后数据不丢失。<br /> 支持Value类型更多。<br /> 多种客户端(语言 java php c# js)<br /> 支持集群来扩展空间 8G+8G+16G<br /> 开源(免费还有很多人维护)<br /> redis一个实例能存一个key或是value大小最大是512M。

10、jdk和jre的区别:

  1. jdkJava开发工具包,而jreJava的运行环境;jdk是整个Java的核心,而jre是运行Java程序所必须的环境。

11、抽象类中有没有普通方法:

  1. 有抽象方法就是抽象类,是抽象类可以没有抽象方法;

13、实现数组与list集合的转换:

  1. array转化为List集合,通过Arrays工具类中的asList()方法;集合转化为数组,通过调用集合类中的toArray()方法即可。<br /> 注意:<br /> 如果arr int[] 或者是其他原始类型的数组 那么不能直接用Arrays.asList()进行转化

14、元注解:

  1. 元注解是可以注解到注解上的注解,或者说元注解是一种基本注解,但是它能够应用到其它的注解上面。<br /> 它的作用和目的就是给其他普通的注解进行解释说明的。<br /> 元注解有五个:<br /> @Retention:当 @Retention 应用到一个注解上的时候,它解释说明了这个注解的的存活时间<br /> @Documented:它的作用是能够将注解中的元素包含到 Javadoc 中去。<br /> @Target:当一个注解被 @Target 注解时,这个注解就被限定了运用的场景。<br /> @Inherited:继承的意思,@Inherited注解了B注解,B再注解别人<br /> @RepeatableRepeatable 是可重复的意思。@Repeatable Java 1.8 才加进来的,所以算是一个新的特性。

15、jdk1.8新特性:

  1. 1Lambda表达式:lambda表达式本质上是一段匿名内部类,也可以是一段可以传递的代码<br /> 2)函数式接口:简单来说就是只定义了一个抽象方法的接口(Object类的public方法除外),函数式接口的提出是为了给Lambda表达式的使用提供更好的支持。<br /> 3)方法引用和构造器调用:若lambda体中的内容有方法已经实现了,那么可以使用“方法引用”,<br /> 也可以理解为方法引用是lambda表达式的另外一种表现形式并且其语法比lambda表达式更加简单<br /> 4Stream API:操作步骤:创建stream、中间操作(过滤、map)、终止操作;<br /> 5)接口中可以默认方法和静态方法:在接口中可以使用defaultstatic关键字来修饰接口中定义的普通方法<br /> 6)新时间日期API LocalDate LocalTime LocalDateTime。新的日期API都是不可变的,更使用于多线程的使用环境中;

16、js定义变量:

三种方式
const——声明一个只读的命名常量。
var——声明一个变量,可同时初始化。
let——声明一个块级本地变量,可以同时初始化。

17、sql语句怎么去重:

  1. MySQL 中通常是使用 distinct group by子句去重;<br /> 在支持窗口函数的 sql(如Hive SQLOracle等等) 中还可以使用 row_number 窗口函数进行去重;

18、反射是什么:

  1. JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法,<br /> 对于任意一个对象,都能够调用它的任意一个方法和属性,<br /> 这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。<br /> JDK java.lang.Class 类,就是为了实现反射提供的核心类之一。

19、vue是什么,有什么特点?

  1. 一个轻量级的mvvm框架,支持双向绑定(v-model)和数据动态更新,是一个基于JavaScript的渐进式前端框架,<br /> 是后端mvc框架的一个延伸<br /> 和传统前端开发的关注点完全不同,传统方式关注的是都像document结构的api,而vue关注的是数据。<br /> 优点显而易见,从而屏蔽了使用复杂晦涩难记的dom结构api

20、css是什么?

  1. 是层叠样式表,是一种用来表现HTMLXML等文件样式的计算机语言。<br /> CSS不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。

21、html是什么?

  1. HTML是一种标记语言。它包括一系列标签.通过这些标签可以将网络上的文档格式统一,<br /> 使分散的Internet资源连接为一个逻辑整体。HTML命令可以说明文字,图形、动画、声音、表格、链接等。

22、javascript是什么?

  1. JavaScript是一种脚本语言,其源代码在发往客户端运行之前不需经过编译,<br /> 而是将文本格式的字符代码发送给浏览器由浏览器解释运行。直译语言的弱点是安全性较差,<br /> 而且在JavaScript中,如果一条运行不了,那么下面的语言也无法运行。

23、springmvc的优点:

  1. 1)可以支持各种视图技术,而不仅仅局限于JSP
  2. 2)与Spring框架集成(如IoC容器、AOP等);
  3. 3)清晰的角色分配:前端控制器(dispatcherServlet) , 请求到处理器映射(handlerMapping), 处理器适配器(HandlerAdapter), 视图解析器(ViewResolver)。
  4. 4 支持各种请求资源的映射策略。

24、什么是Spring MVC?简单介绍下你对Spring MVC的理解?

  1. Spring MVC是一个基于Java实现了MVC设计模式的轻量级Web框架,<br /> 通过把模型-视图-控制器分离,将web层进行职责解耦,简化开发,减少出错,方便组内开发人员之间的配合。

25、linux基础指令:

  1. 1)查看命令:ls<br /> 2)切换目录:cd<br /> 3)建立文件和目录:mkdir <br /> 4)拷贝文件或目录:cp<br /> 5)删除文件和目录:rm<br /> 6)重命名(用字符串替换的方式批量改变文件名):rename<br /> 7)命令后面--helpls --help 表示寻求帮助,<br /> 8VIM编辑模式,:wq保存退出

26、EasyUI是什么?

  1. 它是基于Jquery的一个UI插件库,封装了许多实用的控件和功能,并且是完美支持HTML5网页的框架。<br /> 提供的控件包括数据表格,树形表格,菜单,进度条,选项卡,日期组合框,调节器,对话框等等。<br /> 优点: 丰富的jQuery插件库<br /> 使用简单,可以快速开发出原型界面<br /> 支持html5,实现跨浏览器等等

27、JQuery是什么?

  1. JQuery就是一个快速、简洁的JavaScript框架。jQuery是免费、开源的。<br /> 它可以简化查询DOM对象、制作动画、处理Ajax交互过程且兼容多浏览器的javascript库,<br /> 核心理念是write less,do more(写得更少,做得更多)。

28、extjs是什么?

  1. ExtJS是基于JavaScript的前端框架;<br /> Ext JS基本上用于创建桌面应用程序,它支持所有现代浏览器,

29、bootstrap是什么?

  1. Bootstrap 是一个用于快速开发 Web 应用程序和网站的前端框架。Bootstrap 是基于 HTMLCSSJAVASCRIPT 的。

30、redis怎么序列化?

  1. spring-data- redis 默认采用的 序列化 策略有两种,一种是String 序列化 策略,一种是JDK 序列化 策略。

31、控制层的常用注解?

  1. @RestController 相当于“@Controller@Controller @ResponseBody”的作用,在类开头上注明,作用是返回类中所有@RequestMapping(“”) 方法 的结果。<br /> @Autowired @Resource 都是注入bean,区别有待研究<br /> @GetMapping(“/{id}”) 的作用是获得Get请求,相当于@RequestMapping(method = RequestMethod.GET),可用于查询记录。<br /> @PostMapping(“/add”) 的作用是获得POST请求,相当@RequestMapping(method = RequestMethod.POST)., 可用于往数据表中添加记录。<br /> Restful 风格<br /> @RequestMapping(params=”tohello”) ,此处”tohello”是参数,在浏览器中访问时要在”?”后面添加参数名。如:

32、list怎么转json格式?

  1. 使用Gson类中的toJson()方法

33、json转list:

  1. 使用Gson类中的fromJson方法

34、怎么用java处理文档?

  1. 主要用 ApachePOI工具类,网上有POI对用的API和文档

35、依赖注入有几种方式?

  1. 构造方法依赖注入、setter方法注入、接口注入

36、spring中怎么配置redis?

  1. 配置RedisConfig—>实例化Redis连接池---->编写RedisUtil进行具体的操作。

37、七牛云:

  1. 主要提供的是图片、音频、视频的云存储服务,其计费方式是按使用量计费,大大降低了一个项目的前期投入成本。

39、七牛云使用:

  1. 1)在七牛云官网注册成为用户<br /> 2)通过实名认证后会获得公钥和密钥【项目调用接口时使用】<br /> 3)在管理控制台创建储存空间【根据自己的需求选择合适的服务器】

40、B2B和B2C的区别?

  1. 以下是B2BB2C的主要区别:. B2B服务对象是企业/商家,而B2C是消费者/个人<br /> B2B采购数量相对比较大,而B2C是个人消费。. B2B影响买家购买的因素很多,<br /> 当中包括对卖家资质考核,价格比较,货期权衡,服务态度的打量,属于理性消费;<br /> B2C买家,也许会货比三家,也会因为包不包邮,有没有货而考虑到底买不买,但冲动消费可能性也很大,<br /> 即毫无缘由当时喜欢了就买买买。. B2B注重用实力说话,会通过打造好的产品,提供好的服务,<br /> 竞争力的价格来赢得客户,B2C更讲究运营和营销,通过文案/包装去打动消费者。<br /> 由此B2B考验销售能力,B2C更考验运营能力。

41、Hashmap:

  1. HashMap基于哈希表的Map接口实现,是以key-value存储形式存在,即主要用来存放键值对。HashMap的实现不是同步的,<br /> 这意味着它不是线程安全的。它的keyvalue都可以为null。此外,HashMap中的映射不是有序的。<br /> JDK1.8之前的HashMap由数组+链表组成的,数组是HashMap的主体,链表则是主要为了节解决<br /> 哈希碰撞(两个对象调用的hashCode方法计算的哈希码值一致导致计算的数组索引值相同)而存在的(“拉链法”解决冲突)。<br /> JDK1.8之后在解决哈希冲突时有了较大的变化,当链表长度大于阈值(或者红黑树的边界值,默认为8)<br /> 并且当前数组的长度大于64时,此时此索引位置上的所有数据改为使用红黑树存储。

42、多线程的线程池怎么创建?

  1. 线程池的创建方式总共包含以下 7 种(其中 6 种是通过 Executors 创建的,1 种是通过 ThreadPoolExecutor 创建的);<br /> Executors.newFixedThreadPool:创建一个固定大小的线程池,可控制并发的线程数,超出的线程会在队列中等待;<br /> Executors.

42、多线程的线程池怎么创建?

  1. 线程池的创建方式总共包含以下 7 种(其中 6 种是通过 Executors 创建的,1 种是通过 ThreadPoolExecutor 创建的);<br /> Executors.newFixedThreadPool:创建一个固定大小的线程池,可控制并发的线程数,超出的线程会在队列中等待;<br /> Executors.newCachedThreadPool:创建一个可缓存的线程池,若线程数超过处理所需,缓存一段时间后会回收,若线程数不够,则新建线程;<br /> Executors.newSingleThreadExecutor:创建单个线程数的线程池,它可以保证先进先出的执行顺序;<br /> Executors.newScheduledThreadPool:创建一个可以执行延迟任务的线程池;<br /> Executors.newSingleThreadScheduledExecutor:创建一个单线程的可以执行延迟任务的线程池;<br /> Executors.newWorkStealingPool:创建一个抢占式执行的线程池(任务执行顺序不确定)【JDK 1.8 添加】。<br /> ThreadPoolExecutor:最原始的创建线程池的方式,它包含了 7 个参数可供设置,后面会详细讲。

43、synchronized和lock的区别?

  1. SynchronizedLock比较. Synchronized是关键字,内置语言实现,Lock是接口。. <br /> Synchronized在线程发生异常时会自动释放锁,因此不会发生异常死锁。. Lock异常时不会自动释放锁,<br /> 所以需要在finally中实现释放锁。. Lock是可以中断锁,Synchronized是非中断锁,<br /> 必须等待线程执行完成释放锁。. Lock可以使用读锁提高多线程读效率。.

44、哪里用到反射机制?

  1. JDBC中,利用反射动态加载了数据库驱动程序。<br /> Web服务器中利用反射调用了Sevlet的服务方法。<br /> Eclispe等开发工具利用反射动态刨析对象的类型与结构,动态提示对象的属性和方法。<br /> 很多框架都用到反射机制,注入属性,调用方法,如Spring

45、反射机制的优缺点?

  1. 优点:可以动态执行,在运行期间根据业务功能动态执行方法、访问属性,最大限度发挥了java的灵活性。<br /> 缺点:对性能有影响,这类操作总是慢于直接执行java代码。

46、怎么实现动态代理?

  1. JDK 原生动态代理和 cglib 动态代理。<br /> JDK 原生动态代理是基于接口实现的,而 cglib 是基于继承当前类的子类实现的。

47、 Java反射机制的作用

  1. 在运行时判断任意一个对象所属的类<br /> 在运行时构造任意一个类的对象<br /> 在运行时判断任意一个类所具有的成员变量和方法<br /> 在运行时调用任意一个对象的方法

48、如何使用Java的反射?

  1. 通过一个全限类名创建一个对象<br /> 获取构造器对象,通过构造器new出一个对象<br /> 通过class对象创建一个实例对象<br /> 通过class对象获得一个属性对象<br /> 通过class对象获得一个方法对象<br /> 让方法执行