重点关注2019:多线程处理、高并发、网络安全(含答案)

重点关注:多线程处理、高并发、网络安全

jQuery 

1. jQuery 库中的$()是什么
答:$()函数是jQuery()函数的别称,常用的方法。

2. 网页上存在5个<div>元素,如何使用和选择
答:使用选择器,常用的选择器有id选择器、class选择器、标签选择器。
eg:$("div")会返回所有的div标签的jQuery对象。

3. jQuery里的id选择器和class选择器的不同
答:id选择器是使用id来选择元素,而class选择器是使用css class来进行选择元素。
使用场景:当你只需要选择一个元素时,使用id选择器,而如果你想要选择一组具有相同css class
的元素时候,就要使用class下载你去。
使用方式:id选择器使用的字符"#"和id信息 ,class选择器使用的是"."和class信息。

4.如何在点击一个按钮时候使用jQuery隐藏一个图片
答:通过id进行隐藏

$('#ButtonToClick').click(function(){
    $('#ImageToHide').hide();
});

5.$(domcument).ready()是什么函数

6.JavaScript window.onload 事件和jQuery ready 函数的不通
答:jQuery ready()函数只需要对DOM树的等待,而无需对图片和外部资源加载的等待,
执行速度较快。
     window.onload等待dom被创建还要等待包含大型图片、音频、视频所在外部资源都
     完全被加载,相对耗时较长。

7 . 如何找到所有HTML select标签的选中项
答:$('[name=NameOfSelectedTag] :selected')

8 . jQuery里的each()是什么函数
答:each() 是一种遍历
$('[name=NameOfSelectedTag] :selected').each(function(selected) {
    alert($(selected).text());
});

9 . 合入将一个HTML元素添加到DOM树中的
答:使用jQuery的appendTo()函数。

10 . 怎么在jQuery代码选择所有在段落内部的超链接吗?
答:使用段落使用<p>标签,内部的超链接 <a>标签

11 . $(this) 和this关键字不同
答:jQuery中前者返回一个jQuery对象,你可以对它调用多个jQuery方法,
    this是上下文中当前dom 的操作使用
    
12: 如何使用jQuery来提取一个HTML标记的属性
答:attr()方法

$('a').each(function(){
  alert($(this).attr('href'))
  });

  需要注意 attr 一个参数的是获取,两个产生赋值。

13: jQuery中的detach() 和 remove() 方法的区别        ---- 不太明白
答:都是用来移除 dom元素的。
detach():移除被选元素,包括所有文本和子节点。会保留所有绑定的事件、附加的数据.

remove():移除被选元素,包括所有文本和子节点。绑定的事件、附加的数据等都会被移除。

14:jQuery添加 移除 css类
答:addClass() 和 removeClass()

15: cdn 加载jQuery库优势   ---- 待定

答:加快速度,自动选择合适的缓存。

16: $().get() 和 $().ajax()方法之间的区别
答:get 只是具有获取数据的能力
    ajax() 可配置性强。

17:jq 方法链是什么
答:一个方法的返回结果调用另一个方法。

18:jq 事件处理返回false会怎么样
答:阻塞事件向上冒泡

19:document.getElemengbyId("myId") 还是 $("#myId")效率高
答:第一种,因为它直接调用JavaScript引擎。  

sql相关的面试

1. 什么是存储过程,为什么要使用存储过程。
答:类似于函数,将我们要执行的复杂问题进行一个封装处理。
这样写的优点:将复杂的sql进行统一的封装方便使用;
              存储过程保存在数据库中;
              存储过程是一个预编译的代码块,执行效率比较的高。
不足之处:每个数据库的存储过程语法几乎不一样,通用性差 不便于维护;
           业务逻辑放在数据库上,难以迭代。

2. 什么是三个范式
答:
第一范式:数据库表中的字段都是单一属性的,不可再分,
这个单一属性由基本类型构成包含 整型、日期、字符型、逻辑型。
第二范式:表中的字段必须完全依赖于全部主键而非部分主键,即主键唯一,
比如:表中的一条数据,id 为1 日期为20190216 姓名  silianbo 的数据中 
slianbo 这条数据就依赖 日期20190216存在。
第三范式:非主键外的所有字段必须互不依赖,这样的目的是消除传递依赖
比如:一个公司有 研发部 市场部 销售部,在设计公司人员表的时候 
人员基本信息是一个表 部门信息时一个表 两个之间通过部门id进行一个关联。

3. 什么是视图?视图的使用场景有哪些?
答:视图是一种基于数据库表的一种虚拟表;
视图的建立是已存在表的基础上的,视图表中没有真正的数据,真正的数据还是
存储在基表中的,代码中对视图的操作最终哦还是会转成操作基表,设计视图的目的
是查询数据进行一个封装 避免保留原表信息,但是不会提供查询效率。

4. drop、delete、truncate的使用场景
答:
drop 和  truncate 都属于ddl,;
delete 属于dml,需要提交可回滚。

drop 删除的是表内容和数据。
truncate 清空表内容。
delete 根据where条件进行删除。

不再需要一张表的时候使用 drop;
想删除部分数据的 使用 delete + where ;
保留表结构只是想清空表中的数据时使用 truncate。

5.索引是什么?有什么作用以及优缺点?
答:索引是一种快速查询表中的内容的机制,类似于书的目录,索引运用在表
中的某些字段上,但存储时,独立于表之外。
在主键上自动建立索引,不需要单独维护 由数据库进行管理。
使用场景:
表需要经常进行select操作;
表中的字段经常在where字句或者连接条件中出现。

不建议使用索引的场景:
经常进行insert update delete 操作
表中的数据很少
不常出现在 where字句或者连接条件中。

6. 索引的分类:
唯一索引:唯一索引不允许两行具有相同的索引值
主键索引:每个主键唯一 并且不能为空。
聚集索引:表中各行的物理顺序和键值的逻辑顺序相同,每个表只能有一个。
非聚集索引:

7. 事务:
答:一次进行的所有操作算一个事务,执行的结果要么同时成功,要么同时失败。
数据库事务正确执行的四个基本要素:
原子性、一致性、隔离性、持久性。
比如:银行之间的相互转账。
开启事务的方式 是关闭自动提交 setAutoCommit(false);

回滚使用 rollback();

8. 数据库的乐观锁和悲观锁是什么?
答:
悲观锁:
发生冲突时候屏蔽一切可能违反数据完整性的操作;
在查询完数据的时候就把事务锁起来,直到提交事务,实现方式 使用数据库的锁机制。
乐观锁:
假设不会发生冲突,只在提交操作时检查是否违反数据的完整性,实现方式 version版本或者时间戳。

9. sql约束有哪几种:
答:
not null:用于控制字段的内容一定不能为空
unique:控件字段内容不能重复,保证唯一性。
primary key:自动内容不允许重复
check:字段范围

10:varchar 和 char的区别
答:
char是一种固定长度的类型,varchar 是一种可变长度的类型。

11:sql优化
答:
查询避免使用 * 
明确查询的同一字段的多个条件使用 in 代替 or
关键字尽量全部大写,Oracle服务器总是首先会将小写字母转成大写后执行。
独立sql多使用commit;
清空表内容使用truncate非delete
有索引尽量使用索引
12 : rowid和rownum
答:rowid 是物理地址 ,是唯一不变的,rownum 是相对问题  会根据查询方式的不同进行变换

SELECT *
FROM (SELECT tmp.*, rownum AS row_num FROM (SELECT * FROM table_name ) tmp WHERE ROWNUM <= 20)
WHERE row_num > 10

Spring:

Spring MVC 运行流程:
1.spring mvc将所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责对请求 进行真正的处理工作。
2.DispatcherServlet查询一个或多个HandlerMapping,找到处理请求的Controller.
3.DispatcherServlet请请求提交到目标Controller
4.Controller进行业务逻辑处理后,会返回一个ModelAndView
5.Dispathcher查询一个或多个ViewResolver视图解析器,找到ModelAndView对象指定的视图对象
6.视图对象负责渲染返回给客户端。

SpringMVC的工作原理
1.客户端提交请求到前端控制器DispatcherServlet来处理,它会负责调用系统的
其他模块来处理真正的请求。
2.前端控制器DispatcherServlet收到请求后,将根据请求的信息(URL、HTPP协议
、请求头、请求参数等)以及HandleMapping找到目标Controller
3.在这个地方Spring会通过HandleAdpter 进行封装
4.Handle处理完成后,会返回一个ModeAndView
5.modeandview的视图是逻辑视图,借助viewResolver完成逻辑视图到真实视图的解析工作。
6.通过进行数据的渲染就可以呈现给前台了。

Spring MVC 启动流程:
在 web.xml 文件中给SpringMVC的Servlet配置了load-on-startup,所以程序启动的时候会初始化 Spring MVC,在 HttpServletBean 中将配置的 contextConfigLocation属性设置到 Servlet 中,然后在FrameworkServlet 中创建了 WebApplicationContext,DispatcherServlet根据contextConfigLocation 配置的 classpath 下的 xml 文件初始化了Spring MVC 总的组件。

Spring 的单例实现原理:
Spring对Bean实现的创建采用单例注册表的方式进行实现的,而这个注册表的缓存是
ConcurrentHashMap对象。

Spring 框架中使用到了那些设计模式:
代理模式:AOP
单例模式:在spring配置文件定义bean。
模板方法:restTemplate、JmsTemplate、JpaTemplate。
工厂模式:BeanFactory用来创建对象的实例。

动态代理与cglib实现的区别
jdk动态代理只能对实现了接口的类生产代理,而不能针对类。
cglib是针对类实现代理,主要是对指定的类生成一个子类,覆盖其中的方法因为是继承
jdk代理是不需要依赖第三方的库
cglib必须依赖cglib的类库
重点关注2019:多线程处理、高并发、网络安全(含答案)
顺便在此给大家推荐一个Java方面的交流学习群:714526711,里面会分享一些高级面试题,还有资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系,主要针对Java开发人员提升自己,突破瓶颈,相信你来学习,会有提升和收获。在这个群里会有你需要的内容 朋友们请抓紧时间加入进来吧

猜你喜欢

转载自blog.51cto.com/14207296/2357361