面试题1

1.简述一下js原生事件中onpropertychange()事件,在极速浏览器中如何使用该事件?
在对象的value改变时才能生效。

 1 <html>
 2 <head></head>
 3 <body>
 4 <div id="msg">输入的文字长度为:14</div>
 5 <input id="txt" value="">
 6 <script>
 7 //当状态改变的时候执行的函数
 8 function handle()
 9 {
10 document.getElementById('msg').innerHTML='输入的文字长度为:'+document.getElementById('txt').value.length;
11 }
12 //firefox下检测状态改变只能用oninput,且需要用addEventListener来注册事件。
13 if(/msie/i.test(navigator.userAgent)) //ie浏览器
14 {
15 document.getElementById('txt').onpropertychange=handle
16 }
17 else
18 {//非ie浏览器,比如Firefox
19 document.getElementById('txt').addEventListener("input",handle,false);
20 }
21 </script>
22 </body>
23 </html>

 

2.Jquery 中的$.get()提交和$.post()提交有什么区别?

详情参阅:http://www.w3school.com.cn/tags/html_ref_httpmethods.asp
get:从指定的资源请求数据
post:向指定的资源提交要处理的数据
GET基本上用于从服务器获得(取回)数据。get方法可能返回缓存数据。
get请求查询的的字符串键值对是在URL中发送的
get请求有长度限制
get请求不应该处理敏感数据时使用
get请求只应当与取回数据
get请求可以被缓存
get请求可以保存在浏览器的历史记录中
get请求可以被收藏成书签
POST也可以用于从服务器获取数据,不过post方法不会缓存数据。并且常用于连同请求一起发送数据。
post请求不会被缓存
post请求不会保存在浏览器历史记录中
post请求不能被收藏为书签
post请求对数据长度没有要求

3.String 和stringBuilder、stringBuffer的区别?

运行速度上了来说:StringBuilder >StringBuffer > String

StringBuilder和StringBuffer都是字符串变量,而String是字符串常量

      Stringbuilder  Stringbuffer

线程安全    0      1

Synchronized  0      1

适合情况    单线程    多线程

4. &和&& 的区别?

两者的共同点都是完成与功能,不同点是&&有短路与的功能。当 条件A && 条件B的时候,如果条件A不成立,条件B不会进行判断,整个表达式的结果为假。

而如果是使用 条件A & 条件B ,那么即是条件A不成立,整个表达式的结果为假,也要判断一次条件B。

 5.通过继承Thread类或者调用Runnable接口都可以实现线程,哪个方法更好?为什么?

实现Runnable接口相对于继承Thread类来说,有如下优势:

(1)适合多个相同程序代码的线程去处理同一资源的情况

(2)可以避免由于java 的单继承特性带来的局限。

(3)增强了程序的健壮性,代码能够给被多个线程共享,代码与数据是独立的。

6.数据库中事务的四大特性?

原子性、一致性、隔离性、持久性

7.Spring中的IOC和AOP分别使用了哪两种设计模式?

IOC:控制反转,将创建对象的的权利交给spring来完成,这个操作是通过工厂来实现的。

AOP:面向切面编程,主要是通过代理模式实现的。

 8. springBoot的配置文件有哪几种格式?他们有什么区别?

yml:使用空格划分层级

properties:类似key-value 的形式。

9. 以下哪个是SpringBoot的核心注解?

@SpringBootApplication

10. mybatis 中#{)与${}的区别是什么?

${}是简单的字符串替换,有可能会被SQL注入,不安全

#{}在预处理的时候会用占位符?来代替,是安全的。尽量多使用#{}

11.mybatis 中当实体类中的属性名和表中的字段名不一样,怎么办?12、Redis 支持的数据类型有哪些?

解决方法1

               在Mapper.xml映射文件中,写SQL语句时起别名

解决方法2

               在Mybatis全局配置文件中开启驼峰命名,注意:前提是数据库中的字段是按驼峰命名规则的两个单词之间加“_”命名的

解决方法3

               在Mapper.xml映射文件中使用resultMap自定义映射规则

12. Redis 支持的数据类型有哪些?

String set hash list sortedSet

13. 简述Redis分布式锁的实现原理?

分布式锁是控制分布式系统之间同步访问共享资源的一种方式。如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么访问这些资源的时候,往往需要互斥来防止彼此干扰来保证一致性,在这种情况下,便需要使用到分布式锁。
实现分布式锁有很多实现方式和工具,如Zookeeper、Redis等。
使用Redis实现分布式锁原理:
Redis为单进程单线程模式,采用队列模式将并发访问变成串行访问,且多客户端对Redis的连接并不存在竞争关系,基于此,Redis中可以使用SETNX命令实现分布式锁。
SETNX——SET if Not eXists(如果不存在,则设置):
setnx key value
 
 
将 key 的值设为 value ,当且仅当 key 不存在。
若给定的 key 已经存在,则 SETNX 不做任何动作。
 
如果需要解锁,使用 del key 命令就能释放锁:

 

SETNX有可能不安全使用Redis set key:

链接:https://segmentfault.com/a/1190000014128432?tdsourcetag=s_pcqq_aiomsg

14. ActiveMQ 中有哪儿种消息模式?

Queue模式:点对点通信,每个消息只有一个消费者,消息保证送达,离线消费者可以在下次上线后收到之前积压的消息。

Topic模式:

  普通订阅:不区分消费者,当前有几个客户端在线,就发送几条广播给客户端。

  持久订阅:区分消费者,消费者在线则直接发送消息广播给消费者,消费者离线,只要该消费者有topic登记,就会为其保留消息直至其再次连接后一次性推送,消息可以积压。

15. ActiveMQ 消息持久化方式有哪些?

 ActiveMQ的消息持久化机制有JDBC,AMQ,KahaDB和LevelDB。

在发送者将消息发送出去后,消息中心首先将消息存储到本地数据文件、内存数据库或者远程数据库等,然后试图将消息发送给接收者,发送成功则将消息从存储中删除,失败则继续尝试。

消息中心启动以后首先要检查指定的存储位置,如果有未发送成功的消息,则需要把消息发送出去。

16. Apache Shiro的三大核心组件是?

 Shiro框架中有三个核心概念:Subject ,SecurityManager和Realms。

链接:https://blog.csdn.net/peterwanghao/article/details/8015571

17.我们经常使用“Mvn Clean Package” 命令进行项目打包,请问该命令执行了哪些动作来完成该任务?

 

  • mvn clean package依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)等7个阶段。

链接:https://blog.csdn.net/zhaojianting/article/details/80324533

链接: https://blog.csdn.net/zhaojianting/article/details/80321488

posted @ 2019-02-16 13:54  ccsoft  阅读(187)  评论(0编辑  收藏  举报