26
2020
11

JSR310 规范 Joda-Time 的区别?

其实 JSR310 的规范领导者 Stephen Colebourne,同时也是 Joda-Time 的创建者,JSR310 是在 Joda-Time 的基础上建立的,参考了绝大部分的 API,但并不是说 JSR310=JODA-Time,下面几个比较明显的区别是: ● 最明显的变化就是包名(从 org.joda.time 以及 java.time) ● JSR310 不接受 NULL 值,Joda-Time 视 NULL 值为 0 ● JSR310 的计算机相关的
26
2020
11

打印昨天的当前时刻?

import java.util.Calendar;class YesterdayCurrent {    public static void main(String[] args) {        Calendar cal = Calendar.getInstance();        cal.add(Calendar.DATE, -1);      &nbs
26
2020
11

如何格式化日期?

 java.text.DataFormat的子类(如 SimpleDateFormat 类)中的 format(Date)方法可将日期格式化。Java 8 中可以用 java.time.format.DateTimeFormatter 来格式化时间日期,代码如下所示: import java.text.SimpleDateFormat;import java.time.LocalDate;import java.time.format.DateTimeFormatter;im
26
2020
11

如何取得某月的最后一天?

class GetLastDay {    public static void main(String[] args) {        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");        //获取当前月第一天:        Calendar c =
26
2020
11

如何取得从 1970 年 1 月 1 日 0 时 0 分 0 秒到现在的毫秒数?

class GetTime {    public static void main(String[] args) {        System.out.println("第一种:" + Calendar.getInstance().getTimeInMillis());        System.out.println("第二种:" + System.
26
2020
11

如何取得年月日、小时分钟秒?

import java.time.LocalDateTime;import java.util.Calendar;class DateTimeTest {    public static void main(String[] args) {        Calendar cal = Calendar.getInstance();        System.out.println(cal.ge
26
2020
11

请说出下面程序的输出?

class StringEqualTest {    public static void main(String[] args) {        String s1 = "Programming";        String s2 = new String("Programming");        Strin
26
2020
11

String 、StringBuilder 、StringBuffer 的区别?

Java平台提供了两种类型的字符串:String 和 StringBuffer/StringBuilder,它们都可以储存和操作字符串,区别如下: ● String 是只读字符串,也就意味着 String 引用的字符串内容是不能被改变的。初学者可能会有这样的误解: String str  = “abc”; str = “bcd”; 如上,字符串 str 明明是可以改变的呀!其实不然,str 仅仅是一个引用对象,它指向一个字符串对象“abc”。第二
26
2020
11

数组有没有length()方法?String有没有length()方法?

数组没有length()方法,而是有length属性。String有length()方法。JavaScript 中,获得字符串的长度是通过length属性得到的,这一点容易和Java混淆。
26
2020
11

switch是否能作用在byte 上,是否能作用在long上,是否能作用在String上?

Java5以前switch(expression)中,expression只能是byte、short、char、int,严格意义上来讲Java5以前只支持int,之所以能使用byte short char是因为存在自动类型转换。从 Java 5 开始,Java中引入了枚举类型,expression也可以是 enum 类型。从 Java 7 开始,expression还可以是字符串(String),但是长整型(long)在目前所有的版本中都是不可以的。
26
2020
11

Math.round(11.5)等于多少?Math.round(- 11.5) 又等于多少?

Math.round(11.5)的返回值是12,Math.round(-11.5)的返回值是-11。四舍五入的原理是在参数上加0.5然后进行取整。 
26
2020
11

数据类型之间的转换?

● 字符串如何转基本数据类型? 调用基本数据类型对应的包装类中的方法 parseXXX(String)或valueOf(String)即可返回相应基本类型。 ● 基本数据类型如何转字符串? 一种方法是将基本数据类型与空字符串(“”)连接(+)即可获得其所对应的字符串;另一种方法是调用 String类中的 valueOf()方法返回相应字符串。 
26
2020
11

String、StringBuffer、StringBuilder的区别?

● 可变不可变 String:字符串常量,在修改时不会改变自身;若修改,等于重新生成新的字符串对象。 StringBuffer:在修改时会改变对象自身,每次操作都是对 StringBuffer 对象本身进行修改,不是生成新的对象;使用场景:对字符串经常改变情况下,主要方法:append(),insert()等。 ● 线程是否安全 String:对象定义后不可变,线程安全。 StringBuffer:是线程安全的(对调用方法加入同步锁),执行效率较
26
2020
11

String 类常用方法?

方法解释说明char charAt(int index)返回指定索引处的 char 值。boolean contains(CharSequence s)当且仅当此字符串包含指定的 char 值序列时,返回 true。boolean endsWith(String suffix)测试此字符串是否以指定的后缀结束。boolean equals(Object anObject)将此字符串与指定的对象比较。boolean equalsIgnoreCase(String anotherString)将此
26
2020
11

下面 Integer 类型的数值比较输出的结果为?

public class Test{    public static void main(String[] args) {        Integer f1 = 100, f2 = 100, f3 = 150, f4 = 150;        System.out.println(f1 == f2);        System.out.println
26
2020
11

int和Integer有什么区别?

java 是一个完全面向对象编程语言,但是为了编程的方便还是引入了基本数据类型,为了能够将这些基本数据类型当成对象操作,Java 为每一个基本数据类型都引入了对应的包装类型(wrapper class),int 的包装类就是Integer,从 Java 5 开始引入了自动装箱/拆箱机制,使得二者可以相互转换。 java 为每个原始类型提供了包装类型: ● 基本数据类型: boolean,char,byte,short,int,long,float,double ●
26
2020
11

short s1 = 1; s1 = s1 + 1; 有错吗?short s1 = 1; s1 += 1 有错吗?

前者不正确,后者正确。 对于 short s1 = 1; s1 = s1 + 1;由于 1 是 int 类型,因此 s1+1 运算结果也是 int 型,需要强制转换类型才能赋值给 short 型。 而 short s1 = 1; s1 += 1;可以正确编译,因为 s1+= 1;相当于 s1 = (short)(s1 + 1);其中有隐含的强制类型转换。
26
2020
11

String 是基本数据类型吗?

通过JDK源代码可以看到,Stirng是class,是引用类型,底层用 char 数组实现的。
26
2020
11

Java 的基本数据类型都有哪些各占几个字节?

按照口诀记忆: ● 数据类型:byte short int long float double boolean char ● 占用字节数:12484812(byte对应1,short对应2,以此类推)
24
2020
11

从jQuery开始的基本需求是什么?

使用jQuery的时候需要引用它的库。最新版本的jQuery可以从jQuery.com下载
24
2020
11

jQuery是否遵循W3C建议?

遵循
24
2020
11

jQuery是用于客户端脚本或服务器脚本的库吗?

客服端的脚本
24
2020
11

是jQuery替代Java Script吗?

不是.jQuery不是JavaScript的替代品。jQuery是它是在JavaScript之上编写的。jQuery是一个轻量级JavaScript库,强调JavaScript和HTML之间的交互。 
24
2020
11

JavaScript和jQuery有何不同?

JavaScript是一种语言虽然jQuery是一个用JavaScript语言构建的库,它有助于使用JavaS
24
2020
11

为什么我们使用jQuery?

易于使用和学习。易于扩展。跨浏览器支持(IE 6.0 +,FF 1.5 +,Safari 2.0 +,Opera 9.0+)易于用于DOM操作和遍历。大池内置方法。AJAX功能。更改或应用CSS,创建动画的方法。事件检测和处理。满足各种需求的大量插件。Copy
24
2020
11

什么是jQuery?

jQuery是一个快速,轻量且功能丰富的客户端JavaScript库/框架,它有助于遍历HTML DOM,制作动画,添加Ajax交互,操纵页面内容,更改样式并提供很酷的UI效果。它是最受欢迎的客户端库之一,根据调查,它在每个第二个网站上就会有一个使用。Copy
24
2020
11

在jquery中你有没有编写过插件,插件有什么好处?你编写过那些插件?它应该注意那些?

a) 答: 插件的好处:对已有的一系列方法或函数的封装,以便在其他地方重新利用,方便后期维护和提高开发效率插件的分类:封装对象方法插件 、封装全局函数插件、选择器插件b) 注意的地方:i. 1.插件的文件名推荐命名为jquery.[插件名].js,以免和其他的javaScript库插件混淆ii. 2.所有的对象方法都应当附加到jQuery.fn对象上,而所有的全局函数都应当附加到jQuery对象本身上iii. 3.插件应该返回一个jQuery对象,以保证插件的可链式操作iv. 4.避免在插件内部
24
2020
11

jquery表单提交前有几种校验方法?分别为??

a) formData:返回一个数组,可以通过循环调用来校验b) jaForm:返回一个jQuery对象,所有需要先转换成dom对象c) fieldValue:返回一个数组beforeSend()
24
2020
11

例如 单击超链接后会自动跳转,单击"提交"按钮后表单会提交等,有时候我想阻止这些默认的行为,该怎么办?

答: 可以用 event.preventDefault()或在事件处理函数中返回false,即 return false;
24
2020
11

你知道jQuery中的事件冒泡吗,它是怎么执行的,何如来停止冒泡事件?

答 : 知道,事件冒泡是从里面的往外面开始触发。在jQuery中提供了stopPropagation()方法可以停止冒泡。
24
2020
11

jQuery中的hover()和toggle()有什么区别?

答 hover()和toggle()都是jQuery中两个合成事件。hover()方法用于模拟光标悬停事件。 toggle()方法是连续点击事件。
24
2020
11

在ajax中data主要有几种方式?

答 : 三种,html拼接的,json数组,form表单经serialize()序列化的。
24
2020
11

jQuery 能做什么?

答:1 获取页面的元素 2 修改页面的外观3 改变页面大的内容4 响应用户的页面操作5 为页面添加动态效果6 无需刷新页面,即可以从服务器获取信息7 简化常见的javascript任务
24
2020
11

你使用过哪些数据格式,它们各有什么特点?

答: HTML格式 ,JSON格式,javascript格式,XML格式1 HTML片段提供外部数据一般来说是最简单的。2 如果数据需要重用,而且其他应用程序也可能一次受到影响,那么在性能和文件大小方面具有优势的JSON通常是不错的选择。3 而当远程应用程序未知时,XML则能够为良好的互操作性提供最可靠的保证。
24
2020
11

选择器中 id,class有什么区别?

答:在网页中 每个id名称只能用一次,class可以允许重复使用
24
2020
11

radio单选组的第二个元素为当前选中值,该怎么去取?

答 : $('input[name=items]').get(1).checked = true; 
24
2020
11

$("#msg").text(); 和 $("#msg").text("new content");有什么区别?

答:1 $("#msg").text() 是 返回id为msg的元素节点的文本内容           2 $("#msg").text("<b>new content</b>"); 是 将“<b>new content</b>” 作为普通文本串写入id为msg的元素节点内容中, 页面显示粗体的<b>new conte
24
2020
11

你读过有关于jQuery的书吗?

《jquery基础教程》 《jquery实战》《锋利的jquery》 《巧用jquery》  《jQuery用户界面库学习指南》等
24
2020
11

$.getScript()方法 和 $.getJson() 方法有什么区别?

答: 1 $.getScript() 方法可以直接加载.js文件,并且不需要对javascript文件进行处理,javascript文件会自动执行。2 $.getJson() 是用于加载JSON 文件的 ,用法和$.getScript() 
24
2020
11

jQuery是如何处理缓存的?

答 :要处理缓存就是禁用缓存.1 通过$.post() 方法来获取数据,那么默认就是禁用缓存的。2 通过$.get()方法 来获取数据,可以通过设置时间戳来避免缓存。可以在URL后面加上+(+new Date)例 $.get('ajax.xml?'+(+new Date),function () { //内容 }); 3 通过$.ajax 方法来获取数据,只要设置cache:false即可。
24
2020
11

$(document).ready()方法和window.onload有什么区别?

答: 两个方法有相似的功能,但是在实行时机方面是有区别的。 1window.onload方法是在网页中所有的元素(包括元素的所有关联文件)完全加载到浏览器后才执行的。2 $(document).ready() 方法可以在DOM载入就绪时就对其进行操纵,并调用执行绑定的函数。
24
2020
11

jQuery中有几种方法可以来设置和获取样式

答 :addClass() 方法,attr() 方法
24
2020
11

nextAll() 能 替代$('prev~siblindgs')选择器吗?

答:能。 使用nextAll() 和使用$('prev~siblindgs') 是一样的
24
2020
11

有哪些查询节点的选择器?

答:我在公司使用过 :first 查询第一个,:last 查询最后一个,:odd查询奇数但是索引从0开始:even 查询偶数,:eq(index)查询相等的 ,:gt(index)查询大于index的 ,:lt查询小于index:header 选取所有的标题等
24
2020
11

你在ajax中使用过JSON吗,你是如何用的?

答:使用过,在$.getJSON() 方法的时候就是。因为 $.getJSON() 就是用于加载JSON文件的
24
2020
11

siblings() 方法 和 $('prev~div')选择器是一样的嘛?

答: $('prev~div') 只能选择'#prev'元素后面的同辈<div>元素而siblings()方法与前后的文职无关,只要是同辈节点就都能匹配。
24
2020
11

你觉得beforeSend方法有什么用?

答:发送请求前可以修改XMLHttpRequest对象的函数,在beforeSend中如果返回false 可以取消本次的Ajax请求。XMLHttpRequest对象是唯一的参数所以在这个方法里可以做验证
24
2020
11

在jquery中可以替换节点吗?

答:可以 在jQuery中有两者替换节点的方式 replaceWith() 和 replaceAll()例如在<p title="hao are you">hao are you</p>替换成<strong>I am fine<strong>$('p').replaceWith('<strong>I am fine</strong>'); replaceAll 与repla
24
2020
11

子元素选择器 和后代选择器元素有什么区别?

答:子代元素是找子节点下的所有元素,后代元素是找子节点或子节点的子节点中的元素
24
2020
11

你jquery中有哪些方法可以遍历节点?

答 :children() 取得匹配元素的子元素集合,只考虑子元素不考虑后代元素 next() 取得匹配元素后面紧邻的同辈元素prev() 取得匹配元素前面紧邻的同辈元素siblings() 取得匹配元素前后的所有同辈元素closest() 取得最近的匹配元素find() 取得匹配元素中的元素集合 包括子代和后代
24
2020
11

jquery中如何来获取或和设置属性?

jQuery中可以用attr()方法来获取和设置元素属性removeAttr() 方法来删除元素属性23  如何来设置和获取HTML 和文本的值?答:html()方法 类似于innerHTML属性 可以用来读取或者设置某个元素中的HTML内容注意:html() 可以用于xhtml文档 不能用于xml文档text() 类似于innerText属性 可以用来读取或设置某个元素中文本内容。val() 可以用来设置和获取元素的值
24
2020
11

你使用过包裹节点的方法吗,包裹节点有方法有什么好处?

答: wrapAll(),wrap(), wrapInner() 需要在文档中插入额外的结构化标记的时候可以使用这些包裹的方法应为它不会帛画原始文档的语义
24
2020
11

你在jquery中使用过哪些插入节点的方法,它们的区别是什么?

答:append(),appendTo(),prepend(),prependTo(),after(),insertAfter(),before(),insertBefore() 大致可以分为 内部追加和外部追加append() 表式向每个元素内部追加内容。appendTo()表示 讲所有的元素追加到指定的元素中。例$(A)appendTo(B) 是将A追加到B中下面的方法解释类似。
24
2020
11

在jquery中引入css有几种方式?

答:四种 行内式,内嵌式,导入式,链接式 
24
2020
11

你一般用什么去提交数据,为什么?

答:一般我会使用的是$.post() 方法。如果需要设定beforeSend(提交前回调函数),error(失败后处理),success(成功后处理及complete(请求完成后处理)回调函数等,这个时候我会使用$.ajax()
24
2020
11

你使用过jquery中的插件吗?

答:看个人的实力和经验来回答了。
24
2020
11

你使用过jquery中的动画吗,是怎样用的?

答:使用过。hide() 和 show() 同时修改多个样式属性。像高度,宽度,不透明度。 fadeIn() 和fadeOut() fadeTo() 只改变不透明度slideUp() 和 slideDown() slideToggle() 只改变高度animate() 属于自定义动画的方法.
24
2020
11

简单的讲叙一下jquery是怎么处理事件的,你用过哪些事件?

答: 首先去装载文档,在页面家在完毕后,浏览器会通过javascript 为DOM元素添加事件。
24
2020
11

在jquery中你是如何去操作样式的?

答: addClass() 来追加样式 ,removeClass() 来删除样式,toggle() 来切换样式
24
2020
11

jquery中的load方法一般怎么用的?

答:load方法一般在 载入远程HTML 代码并插入到DOM中的时候用,通常用来从Web服务器上获取静态的数据文件。如果要传递参数的话,可以使用$.get() 或 $.post()。
24
2020
11

jquery中$.get()提交和$.post()提交有区别吗?

答:  1 $.get() 方法使用GET方法来进行异步请求的。$.post() 方法使用POST方法来进行异步请求的。    2 get请求会将参数跟在URL后进行传递,而POST请求则是作为HTTP消息的实体内容发送给Web服务器的,这种传递是对用户不可见的。    3 get方式传输的数据大小不能超过2KB 而POST要大的多    4 GET 方式请求的数据会被浏览器缓存起来,因此有安全问题。
24
2020
11

你是如何使用jquery中的ajax的?

    答: 如果是一些常规的ajax程序的话,使用load(),$.get(),$.post(),就可以搞定了,一般我会使用的是$.post() 方法。如果需要设定beforeSend(提交前回调函数),error(失败后处理),success(成功后处理)及complete(请求完成后处理)回调函数等,这个时候我会使用$.ajax()
24
2020
11

jquery对象和dom对象是怎样转换的?

答 :jquery转DOM对象:jQuery 对象是一个数组对象,可以通过[index]的丰富得到相应的DOM对象还可以通过get[index]去得到相应的DOM对象。DOM对象转jQuery对象:$(DOM对象)
24
2020
11

你在使用选择器的时候有有没有什么觉得要注意的地方?

答: 1 选择器中含有".","#","[" 等特殊字符的时候需要进行转译       2 属性选择器的引号问题       3 选择器中含有空格的注意事项
24
2020
11

你觉得jquery中的选择器有什么优势?

答:简单的写法  $('ID') 来代替 document.getElementById()函数支持CSS1 到CSS3 选择器完善的处理机制(就算写错了id也不会报错)
24
2020
11

jquery中的选择器 和 css中的选择器有区别吗?

答:jQuery选择器支持CSS里的选择器,jQuery选择器可用来添加样式和添加相应的行为CSS 中的选择器是只能添加相应的样式
24
2020
11

你知道jquery中的选择器吗,请讲一下有哪些选择器?

答 :jQuery中的选择器大致分为:基本选择器,层次选择器,过滤选择器,表单选择器
24
2020
11

你知道jquery中的选择器吗,请讲一下有哪些选择器?

答 :jQuery中的选择器大致分为:基本选择器,层次选择器,过滤选择器,表单选择器
24
2020
11

你使用jquery遇到过哪些问题,你是怎么解决的?

答:这个答案是开发的,看你是否有相关的项目经验。例前台拿不到值,JSON 可是出现的错误(多了一个空格等)这编译是不会报错的 jquery库与其他库冲突:1>如果其他库在jquery库之前导入的话1.我们可以通过jquery.noconflict()将变量的$的控制权过度给其他库2.自定义快捷键,用一个变量接住jquery.noconflict()3.通过函数传参2>如果jquery库在其他库之前导入就直接使用jquery今天在处理一个数据问题时,发现jQuery.ajax()方法返
24
2020
11

你觉得jquery有哪些好处?

答:因为jQuery是轻量级的框架,大小不到30kb,它有强大的选择器,出色的DOM操作的封装,有可靠的事件处理机制(jQuery在处理事件绑定的时候相当的可靠),完善的ajax(它的ajax封装的非常的好,不需要考虑复杂浏览器的兼容性和XMLHttpRequest对象的创建和使用的问题。) 出色的浏览器的兼容性。 而且支持链式操作,隐式迭代。行为层和结构层的分离,还支持丰富的插件,jquery的文档也非常的丰富。
24
2020
11

你为什么要使用jquery?

答:因为jQuery是轻量级的框架,大小不到30kb,它有强大的选择器,出色的DOM操作的封装,有可靠的事件处理机制(jQuery在处理事件绑定的时候相当的可靠),完善的ajax(它的ajax封装的非常的好,不需要考虑复杂浏览器的兼容性和XMLHttpRequest对象的创建和使用的问题。) 出色的浏览器的兼容性。 而且支持链式操作,隐式迭代。行为层和结构层的分离,还支持丰富的插件,jquery的文档也非常的丰富。
24
2020
11

你在公司是怎么用jquery的?

答:在项目中是怎么用的是看看你有没有项目经验(根据自己的实际情况来回答) 你用过的选择器啊,复选框啊,表单啊,ajax啊,事件等配置Jquery环境 下载jquery类库 在jsp页面引用jquery类库即可<script type="text/javascript" src="jquery/jquery-1.7.2.min.js"/>接下来通过在<script> $(function(){ }); </script>
23
2020
11

Golang GC 时会发生什么?

首先我们先来了解下垃圾回收.什么是垃圾回收?内存管理是程序员开发应用的一大难题。传统的系统级编程语言(主要指C/C++)中,程序开发者必须对内存小心的进行管理操作,控制内存的申请及释放。因为稍有不慎,就可能产生内存泄露问题,这种问题不易发现并且难以定位,一直成为困扰程序开发者的噩梦。如何解决这个头疼的问题呢?过去一般采用两种办法:内存泄露检测工具。这种工具的原理一般是静态代码扫描,通过扫描程序检测可能出现内存泄露的代码段。然而检测工具难免有疏漏和不足,只能起到辅助作用。智能指针。这是 c++ 中
23
2020
11

LVS相关了解.

LVS是 Linux Virtual Server 的简称,也就是Linux虚拟服务器。这是一个由章文嵩博士发起的一个开源项目,它的官方网站是LinuxVirtualServer现在 LVS 已经是 Linux 内核标准的一部分。使用 LVS 可以达到的技术目标是:通过 LVS 达到的负载均衡技术和 Linux 操作系统实现一个高性能高可用的 Linux 服务器集群,它具有良好的可靠性、可扩展性和可操作性。 从而以低廉的成本实现最优的性能。LVS 是一个实现负载均衡集群的开源软件项目,LVS架构
23
2020
11

Etcd怎么实现分布式锁?

首先思考下Etcd是什么?可能很多人第一反应可能是一个键值存储仓库,却没有重视官方定义的后半句,用于配置共享和服务发现。A highly-available key value store for shared configuration and service discovery.实际上,etcd 作为一个受到 ZooKeeper 与 doozer 启发而催生的项目,除了拥有与之类似的功能外,更专注于以下四点。简单:基于 HTTP+JSON 的 API 让你用 curl 就可以轻松使用。安全:
23
2020
11

Redis的数据结构有哪些,以及实现场景?

Redis的数据结构有五种:string 字符串String 数据结构是简单的 key-value 类型,value 不仅可以是 String,也可以是数字(当数字类型用 Long 可以表示的时候encoding 就是整型,其他都存储在 sdshdr 当做字符串)。使用 Strings 类型,可以完全实现目前 Memcached 的功能,并且效率更高。还可以享受 Redis 的定时持久化(可以选择 RDB 模式或者 AOF 模式),操作日志及 Replication 等功能。除了提供与 Memc
23
2020
11

Mysql高可用方案有哪些?

Mysql高可用方案包括:主从复制方案这是MySQL自身提供的一种高可用解决方案,数据同步方法采用的是MySQL replication技术。MySQL replication就是从服务器到主服务器拉取二进制日志文件,然后再将日志文件解析成相应的SQL在从服务器上重新执行一遍主服务器的操作,通过这种方式保证数据的一致性。为了达到更高的可用性,在实际的应用环境中,一般都是采用MySQL replication技术配合高可用集群软件keepalived来实现自动failover,这种方式可以实现95
23
2020
11

Go语言的栈空间管理是怎么样的?

Go语言的运行环境(runtime)会在goroutine需要的时候动态地分配栈空间,而不是给每个goroutine分配固定大小的内存空间。这样就避免了需要程序员来决定栈的大小。分块式的栈是最初Go语言组织栈的方式。当创建一个goroutine的时候,它会分配一个8KB的内存空间来给goroutine的栈使用。我们可能会考虑当这8KB的栈空间被用完的时候该怎么办?为了处理这种情况,每个Go函数的开头都有一小段检测代码。这段代码会检查我们是否已经用完了分配的栈空间。如果是的话,它会调用morest
23
2020
11

Goroutine和Channel的作用分别是什么?

进程是内存资源管理和cpu调度的执行单元。为了有效利用多核处理器的优势,将进程进一步细分,允许一个进程里存在多个线程,这多个线程还是共享同一片内存空间,但cpu调度的最小单元变成了线程。那协程又是什么呢,以及与线程的差异性??协程,可以看作是轻量级的线程。但与线程不同的是,线程的切换是由操作系统控制的,而协程的切换则是由用户控制的。最早支持协程的程序语言应该是lisp方言scheme里的continuation(续延),续延允许scheme保存任意函数调用的现场,保存起来并重新执行。Lua,C#
23
2020
11

怎么查看Goroutine的数量?

GOMAXPROCS中控制的是未被阻塞的所有Goroutine,可以被Multiplex到多少个线程上运行,通过GOMAXPROCS可以查看Goroutine的数量。
23
2020
11

说下Go中的锁有哪些?三种锁,读写锁,互斥锁,还有map的安全的锁?

Go中的三种锁包括:互斥锁,读写锁,sync.Map的安全的锁.互斥锁Go并发程序对共享资源进行访问控制的主要手段,由标准库代码包中sync中的Mutex结构体表示。//Mutex 是互斥锁, 零值是解锁的互斥锁, 首次使用后不得复制互斥锁。type Mutex struct {   state int32   sema  uint32}sync.Mutex包中的类型只有两个公开的指针方法Lock和Unlock。//Locker表示可以锁定和解锁
23
2020
11

读写锁或者互斥锁读的时候能写吗?

Go中读写锁包括读锁和写锁,多个读线程可以同时访问共享数据;写线程必须等待所有读线程都释放锁以后,才能取得锁;同样的,读线程必须等待写线程释放锁后,才能取得锁,也就是说读写锁要确保的是如下互斥关系,可以同时读,但是读-写,写-写都是互斥的。
23
2020
11

怎么限制Goroutine的数量.

在Golang中,Goroutine虽然很好,但是数量太多了,往往会带来很多麻烦,比如耗尽系统资源导致程序崩溃,或者CPU使用率过高导致系统忙不过来。所以我们可以限制下Goroutine的数量,这样就需要在每一次执行go之前判断goroutine的数量,如果数量超了,就要阻塞go的执行。第一时间想到的就是使用通道。每次执行的go之前向通道写入值,直到通道满的时候就阻塞了,package mainimport "fmt"var ch chan  intfunc ele
23
2020
11

Channel是同步的还是异步的.

Channel是异步进行的。channel存在3种状态:nil,未初始化的状态,只进行了声明,或者手动赋值为nilactive,正常的channel,可读或者可写closed,已关闭,千万不要误认为关闭channel后,channel的值是nil
23
2020
11

说一下异步和非阻塞的区别?

异步和非阻塞的区别:异步:调用在发出之后,这个调用就直接返回,不管有无结果;异步是过程。非阻塞:关注的是程序在等待调用结果(消息,返回值)时的状态,指在不能立刻得到结果之前,该调用不会阻塞当前线程。同步和异步的区别:步:一个服务的完成需要依赖其他服务时,只有等待被依赖的服务完成后,才算完成,这是一种可靠的服务序列。要么成功都成功,失败都失败,服务的状态可以保持一致。异步:一个服务的完成需要依赖其他服务时,只通知其他依赖服务开始执行,而不需要等待被依赖的服务完成,此时该服务就算完成了。被依赖的服务
23
2020
11

Log包线程安全吗?

Golang的标准库提供了log的机制,但是该模块的功能较为简单(看似简单,其实他有他的设计思路)。在输出的位置做了线程安全的保护。
23
2020
11

Goroutine和线程的区别?

从调度上看,goroutine的调度开销远远小于线程调度开销。OS的线程由OS内核调度,每隔几毫秒,一个硬件时钟中断发到CPU,CPU调用一个调度器内核函数。这个函数暂停当前正在运行的线程,把他的寄存器信息保存到内存中,查看线程列表并决定接下来运行哪一个线程,再从内存中恢复线程的注册表信息,最后继续执行选中的线程。这种线程切换需要一个完整的上下文切换:即保存一个线程的状态到内存,再恢复另外一个线程的状态,最后更新调度器的数据结构。某种意义上,这种操作还是很慢的。Go运行的时候包涵一个自己的调度器
23
2020
11

滑动窗口的概念以及应用?

滑动窗口概念不仅存在于数据链路层,也存在于传输层,两者有不同的协议,但基本原理是相近的。其中一个重要区别是,一个是针对于帧的传送,另一个是字节数据的传送。滑动窗口(Sliding window)是一种流量控制技术。早期的网络通信中,通信双方不会考虑网络的拥挤情况直接发送数据。由于大家不知道网络拥塞状况,同时发送数据,导致中间节点阻塞掉包,谁也发不了数据,所以就有了滑动窗口机制来解决此问题。参见滑动窗口如何根据网络拥塞发送数据仿真视频。滑动窗口协议是用来改善吞吐量的一种技术,即容许发送方在接收任何
23
2020
11

怎么做弹性扩缩容,原理是什么?

弹性伸缩(Auto Scaling)根据您的业务需求和伸缩策略,为您自动调整计算资源。您可设置定时、周期或监控策略,恰到好处地增加或减少CVM实例,并完成实例配置,保证业务平稳健康运行。在需求高峰期时,弹性伸缩自动增加CVM实例的数量,以保证性能不受影响;当需求较低时,则会减少CVM实例数量以降低成本。弹性伸缩既适合需求稳定的应用程序,同时也适合每天、每周、每月使用量不停波动的应用程序。
23
2020
11

说一下中间件原理.

中间件(middleware)是基础软件的一大类,属于可复用软件的范畴。中间件处于操作系统软件与用户的应用软件的中间。中间件在操作系统、网络和数据库之上,应用软件的下层,总的作用是为处于自己上层的应用软件提供运行与开发的环境,帮助用户灵活、高效地开发和集成复杂的应用软件  IDC的定义是:中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信。中间件解决的问题是:在中间件产生以前,应用软件直
22
2020
11

Label 的作用是什么?是怎么用的?

label 标签来定义表单控制间的关系,当用户选择该标签时,浏览器会自动将焦点转到和标签相关的表单控件上。<label for="Name">Number:</label> <input type=“text“ name="Name" id="Name"/>
22
2020
11

页面导入样式时,使用 link 和 @import 有什么区别?

从属关系区别。@import是CSS提供的语法规则,只有导入样式表的作用;link是HTML提供的标签,不仅可以加载CSS文件,还可以定义RSS、rel连接属性、引入网站图标等。加载顺序区别。加载页面时,link标签引入的CSS文件被同时加载;而@import引入的CSS文件将在页面加载完毕后被加载。兼容性区别。@import时CSS 2.1才有的语法,故只可在IE5+才能识别;link标签作为HTML标签,不存在兼容性问题。DOM可控性区别。可以通过JS操作DOM,插入link标签来改变样式;
22
2020
11

H5 是什么?

H5是HTML5的简称,就是“HTML”的第5个版本,也就是第5个版本的超文本标记语言。
22
2020
11

你用过哪些 HTML 5 标签?

<article> 定义独立的内容<aside> 定义页面内容之外的内容<audio>   定义声音内容<bdi>   定义文本的文本方向,使其脱离其周围文本的方向设置<canvas> 定义图形<command> 定义命令按钮<datalist> 定义下拉列表<details> 定义元素的细节<embed> 定义外部交互内容或插件<figcaption>
22
2020
11

meta viewport 是做什么的?怎么写?

移动端浏览器通常都在一个比屏幕更宽的虚拟窗口中渲染页面,这个虚拟窗口就是viewport,目的是正常展示没有做移动端适配的网页,可以让他们完整的展现给用户。我们有时用移动设备访问桌面版网页就会看到一个横向滚动条,这里可显示区域的宽度就是viewport的宽度。<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">该meta标签的作
22
2020
11

你是如何理解语义化的?

语义化,顾名思义,就是你写的HTML结构,是用相对应的有一定语义的英文字母(标签)表示的,标记的,因为HTML本身就是标记语言。不仅对自己来说,容易阅读,书写。别人看你的代码和结构也容易理解,甚至对一些不是做网页开发的人来说,也容易阅读。那么,我们以后再开发的过程中,一定要注意了,尽量使用官方的有语义的标签,不要再使用一堆无意义的标签去堆你的结构。 语义化,也无非就是自己在使用标签的时候多使用有英文语义的标签,比如h标签,在HTML中就是就是用来定义标题,还有p标签,英文是paragr
22
2020
11

空元素定义

标签内没有内容的 HTML 标签被称为空元素。空元素是在开始标签中关闭的。常见的空元素有:br hr img input link meta
22
2020
11

DTD 介绍

DTD( Document Type Definition 文档类型定义)是一组机器可读的规则,它们定义 XML 或 HTML 的特定版本中所有允许元 素及它们的属性和层次关系的定义。在解析网页时,浏览器将使用这些规则检查页面的有效性并且采取相应的措施。DTD 是对 HTML 文档的声明,还会影响浏览器的渲染模式(工作模式)。
22
2020
11

SGML 、 HTML 、XML 和 XHTML 的区别?

SGML 是标准通用标记语言,是一种定义电子文档结构和描述其内容的国际标准语言,是所有电子文档标记语言的起源。HTML 是超文本标记语言,主要是用于规定怎么显示网页。XML 是可扩展标记语言是未来网页语言的发展方向,XML 和 HTML 的最大区别就在于 XML 的标签是可以自己创建的,数量无限多, 而 HTML 的标签都是固定的而且数量有限。XHTML 也是现在基本上所有网页都在用的标记语言,他其实和 HTML 没什么本质的区别,标签都一样,用法也都一样,就是比 HTML 更严格,比如标签必须
22
2020
11

HTML5 为什么只需要写< !DOCTYPE HTML >,而不需要引入 DTD?

HTML5 不基于 SGML,因此不需要对 DTD 进行引用,但是需要 DOCTYPE 来规范浏览器的行为(让浏览器按照它们应该的方式来运 行)。而 HTML4.01 基于 SGML ,所以需要对 DTD 进行引用,才能告知浏览器文档所使用的文档类型。
22
2020
11

标准模式与兼容模式各有什么区别?

标准模式的渲染方式和 JS 引擎的解析方式都是以该浏览器支持的最高标准运行。兼容模式中,页面以宽松的向后兼容的方式显示 ,模拟老式浏览器的行为以防止站点无法工作。
22
2020
11

DOCTYPE 的作用是什么?

<!DOCTYPE> 声明一般位于文档的第一行,它的作用主要是告诉浏览器以什么样的模式来解析文档。一般指定了之后会以标准模式来 进行文档解析,否则就以兼容模式进行解析。在标准模式下,浏览器的解析规则都是按照最新的标准进行解析的。而在兼容模式下,浏 览器会以向后兼容的方式来模拟老式浏览器的行为,以保证一些老的网站的正确访问。 
22
2020
11

元素的alt和title有什么异同?

在alt和title同时设置的时候,alt作为图片的替代文字出现,title是图片的解释文字。
22
2020
11

title与h1的区别、b与strong的区别、i与em的区别?

title属性没有明确意义,只表示标题;h1表示层次明确的标题,对页面信息的抓取也有很大的影响strong标明重点内容,语气加强含义;b是无意义的视觉表示em表示强调文本;i是斜体,是无意义的视觉表示视觉样式标签:b i u s语义样式标签:strong em ins del code
22
2020
11

网页验证码是干嘛的,是为了解决什么安全问题?

区分用户是计算机还是人的程序;可以防止恶意破解密码、刷票、论坛灌水;
22
2020
11

实现不使用 border 画出1px高的线,在不同浏览器的Quirks mode和CSS Compat模式下都能保持同一效果

<div style="height:1px;overflow:hidden;background:red"></div>
22
2020
11

如何在页面上实现一个圆形的可点击区域?

map+area或者svgborder-radius纯js实现,一个点不在圆上的算法
22
2020
11

页面可见性(Page Visibility)API 可以有哪些用途?

通过visibility state的值得检测页面当前是否可见,以及打开网页的时间。在页面被切换到其他后台进程时,自动暂停音乐或视频的播放。
22
2020
11

webSocket如何兼容低浏览器?

Adobe Flash Socket ActiveX HTMLFile (IE) 基于 multipart 编码发送 XHR 基于长轮询的 XHR引用WebSocket.js这个文件来兼容低版本浏览器。
22
2020
11

如何实现浏览器内多个标签页之间的通信?

WebSocket SharedWorker也可以调用 localstorge、cookies 等本地存储方式。 localstorge 在另一个浏览上下文里被添加、修改或删除时,它都会触发一个事件,我们通过监听事件,控制它的值来进行页面信息通信。注意:Safari 在无痕模式下设置 localstorge 值时会抛出QuotaExceededError 的异常
22
2020
11

HTML5的form如何关闭自动完成功能?

HTML的输入框可以拥有自动完成的功能,当你往输入框输入内容的时候,浏览器会从你以前的同名输入框的历史记录中查找出类似的内容并列在输入框下面,这样就不用全部输入进去了,直接选择列表中的项目就可以了。但有时候我们希望关闭输入框的自动完成功能,例如当用户输入内容的时候,我们希望使用AJAX技术从数据库搜索并列举而不是在用户的历史记录中搜索。方法:在IE的internet选项菜单中里的自动完成里面设置设置form输入框的autocomplete为on或者off来来开启输入框的自动完成功能
22
2020
11

label的作用是什么? 是怎么用的?

label标签用来定义表单控件间的关系,当用户选择该标签时,浏览器会自动将焦点转到和标签相关的表单控件上。label 中有两个属性是非常有用的, FOR和ACCESSKEY。 FOR属性功能:表示label标签要绑定的HTML元素,你点击这个标签的时候,所绑定的元素将获取焦点。例如,<Label FOR="InputBox">姓名</Label><input ID="InputBox" type="text
22
2020
11

iframe框架有那些优缺点?

优点:iframe能够原封不动的把嵌入的网页展现出来。如果有多个网页引用iframe,那么你只需要修改iframe的内容,就可以实现调用的每一个页面内容的更改,方便快捷。网页如果为了统一风格,头部和版本都是一样的,就可以写成一个页面,用iframe来嵌套,可以增加代码的可重用。如果遇到加载缓慢的第三方内容如图标和广告,这些问题可以由iframe来解决。缺点:搜索引擎的爬虫程序无法解读这种页面框架结构中出现各种滚动条使用框架结构时,保证设置正确的导航链接。iframe页面会增加服务器的http请求
22
2020
11

cookies,sessionStorage和localStorage的区别?

共同点:都是保存在浏览器端,且是同源的。区别:cookies是为了标识用户身份而存储在用户本地终端上的数据,始终在同源http请求中携带,即cookies在浏览器和服务器间来回传递,而sessionstorage和localstorage不会自动把数据发给服务器,仅在本地保存。存储大小的限制不同。cookie保存的数据很小,不能超过4k,而sessionstorage和localstorage保存的数据大,可达到5M。数据的有效期不同。cookie在设置的cookie过期时间之前一直有效,即使窗
22
2020
11

HTML5的文件离线储存怎么使用,工作原理是什么?

在线情况下,浏览器发现HTML头部有manifest属性,它会请求manifest文件,如果是第一次访问,那么浏览器就会根据manifest文件的内容下载相应的资源,并进行离线存储。如果已经访问过并且资源已经离线存储了,那么浏览器就会使用离线的资源加载页面。然后浏览器会对比新的manifest文件与旧的manifest文件,如果文件没有发生改变,就不会做任何操作,如果文件改变了,那么就会重新下载文件中的资源,并且进行离线存储。例如,在页面头部加入manifest属性<html manife
22
2020
11

简述一下你对HTML语义化的理解?

去掉或丢失样式的时候能够让页面呈现出清晰的结构。有利于SEO和搜索引擎建立良好沟通,有助于爬虫抓取更多的信息,爬虫依赖于标签来确定上下文和各个关键字的权重。方便其它设备解析。便于团队开发和维护,语义化根据可读性。
22
2020
11

HTML5有哪些新特性,移除了那些元素?如何处理HTML5新标签的浏览器兼容问题?如何区分HTML和HTML5

新增加了图像、位置、存储、多任务等功能。新增元素:canvas用于媒介回放的video和audio元素本地离线存储。localStorage长期存储数据,浏览器关闭后数据不丢失;sessionStorage的数据在浏览器关闭后自动删除语意化更好的内容元素,比如 article footer header nav section位置API:Geolocation表单控件,calendar date time email url search新的技术:web worker(web worker是运行
22
2020
11

常见的浏览器内核有哪些?

Trident( MSHTML ):IE MaxThon TT The World 360 搜狗浏览器Geckos:Netscape6及以上版本 FireFox Mozilla Suite/SeaMonkeyPresto:Opera7及以上(Opera内核原为:Presto,现为:Blink)Webkit:Safari Chrome
22
2020
11

介绍一下你对浏览器内核的理解?

主要分成两部分:渲染引擎(Layout Engine或Rendering Engine)和JS引擎。渲染引擎:负责取得网页的内容(HTML、XML、图像等等)、整理讯息(例如加入CSS等),以及计算网页的显示方式,然后会输出至显示器或打印机。浏览器的内核的不同对于网页的语法解释会有不同,所以渲染的效果也不相同。JS引擎:解析和执行javascript来实现网页的动态效果。最开始渲染引擎和JS引擎并没有区分的很明确,后来JS引擎越来越独立,内核就倾向于只指渲染引擎。
22
2020
11

无样式内容闪烁(FOUC)Flash of Unstyle Content

@import导入CSS文件会等到文档加载完后再加载CSS样式表。因此,在页面DOM加载完成到CSS导入完成之间会有一段时间页面上的内容是没有样式的。解决方法:使用link标签加载CSS样式文件。因为link是顺序加载的,这样页面会等到CSS下载完之后再下载HTML文件,这样先布局好,就不会出现FOUC问题。
22
2020
11

页面导入样式时,使用link和@import有什么区别?

相同的地方,都是外部引用CSS方式,区别:link是xhtml标签,除了加载css外,还可以定义RSS等其他事务;@import属于CSS范畴,只能加载CSSlink引用CSS时候,页面载入时同时加载;@import需要在页面完全加载以后加载,而且@import被引用的CSS会等到引用它的CSS文件被加载完才加载link是xhtml标签,无兼容问题;@import是在css2.1提出来的,低版本的浏览器不支持link支持使用javascript控制去改变样式,而@import不支持link方式的
22
2020
11

HTML5为什么只需要写 ?

HTML5不基于SGML(Standard Generalized Markup Language 标准通用标记语言),因此不需要对DTD(DTD 文档类型定义)进行引用,但是需要DOCTYPE来规范浏览器行为。HTML4.01基于SGML,所以需要引用DTD。才能告知浏览器文档所使用的文档类型,如下:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/st
22
2020
11

DOCTYPE有什么作用?标准模式与混杂模式如何区分?它们有何意义?

告诉浏览器使用哪个版本的HTML规范来渲染文档。DOCTYPE不存在或形式不正确会导致HTML文档以混杂模式呈现。标准模式(Standards mode)以浏览器支持的最高标准运行;混杂模式(Quirks mode)中页面是一种比较宽松的向后兼容的方式显示。
22
2020
11

关于python中scrapy处理项目数据的实例分析

在我们处理完数据后,习惯把它放在原有的位置,但是这样也会出现一定的隐患。如果因为新数据的加入或者其他种种原因,当我们再次想要启用这个文件的时候,就会开始着急却怎么也翻不出来,似乎也没有其他更好的搜集办法,而重新进行数据整理显然是不现实的。下面我们就一起看看python爬虫中scrapy处理项目数据的方法吧。1、拉取项目$ git clone https://github.com/jonbakerfish/TweetScraper.git$ cd TweetScraper/$ pip instal
22
2020
11

谈谈你的优点和缺点?

出现指数:四颗星主要考点:这道题让人有一种骂人的冲动,但是没办法,偏偏很多所谓的大公司会问这个。比如华为。这个问题见仁见智,答案可以自己组织。参考答案:优点:对于新的技术学**能力强,能很快适应新环境等等缺点:对技术太过于执着等等
22
2020
11

关于代码优化你怎么理解?你会考虑去代码重构吗?

出现指数:四颗星主要考点:此题考的是面试者对代码优化的理解,以及代码如何重构的相关知识。参考答案:1、对于代码优化,之前的公司每周会做代码审核,审核的主要作用就是保证代码的正确性和执行效率,比如减少代码的层级结构、避免循环嵌套、避免循环CURD数据库、尽量避免一次取出大量数据放在内存中(容易内存溢出)、优化算法等。2、对于陈旧代码,可能很多地方有调用,并且开发和维护人员很有可能不是同一个人,所以重构时要格外小心,如果没有十足的把握,不要轻易重构。如果必须要重构,必须做好充分的单元测试和全局测试。
22
2020
11

数据库优化经验(后端工程师非常常见)

出现指数:四颗星主要考点:此题考察后端工程师操作数据库的经验。说实话,数据库是博主的弱项,博主觉得对于这种考题,需要抓住几个常用并且关键的优化经验,如果说得不对,欢迎大家斧正。参考答案:1、数据库运维方面的优化:启用数据库缓存。对于一些比较常用的查询可以采用数据库缓存的机制,部署的时候需要注意设置好缓存依赖项,防止“过期”数据的产生。2、数据库索引方面的优化:比如常用的字段建索引,联合查询考虑联合索引。(PS:如果你有基础,可以敞开谈谈聚集索引和非聚集索引的使用场景和区别)3、数据库查询方面的优
22
2020
11

Http协议

出现指数:四颗星主要考点:此题主要考对于web里面http协议的理解。参考答案:1、http协议是浏览器和服务器双方共同遵循的规范,是一种基于TCP/IP应用层协议。2、http是一种典型的请求/响应协议。客户端发送请求,请求的内容以及参数存放到请求报文里面,服务端收到请求后,做出响应,返回响应的结果放到响应报文里面。通过F12可以查看请求报文和响应报文。3、http协议是”无状态”的,当客户端向服务端发送一次http请求后,服务端收到请求然后返回给客户端相应的结果,服务器会立即断开连接并释放资
22
2020
11

IIS的工作原理?

出现指数:四颗星主要考点:此题主要考的是.net framework和IIS是如何结合呈现页面的。这是一个有点复杂的过程,面试的时候不可能说得完整,那么我们就抓住几个关键点说说就可以。其实博主也不能完全理解这个过程,今天正好借这个机会温**下。参考答案:1、当客户端发送HTTP Request时,服务端的HTTP.sys(可以理解为IIS的一个监听组件) 拦截到这个请求;2、HTTP.sys 联系 WAS 向配置存储中心请求配置信息。3、然后将请求传入IIS的应用程序池。4、检查请求的后缀,启动
22
2020
11

谈谈你对设计模式的认识?结合你用得最多的一种设计模式说说它的使用。

出现指数:五颗星主要考点:不用多说,这题考的就是对设计模式的理解。一般为了简单可能会要求你写一个单例模式,注意最好是写一个完整点的,考虑线程安全的那种。然后会让你说说你在项目中什么情况下会用到这种模式参考答案:通用写法 1   public class Singleton 2     { 3         // 定义一个静态变量来保存类的实例 4      
22
2020
11

Js继承实现。

出现指数:五颗星主要考点:这道题考验面试者对js理解的深度。根据博主的经历,这种题一般在笔试出现的几率较大,为什么把它放在这里,因为它确实太常见了。其实js实现继承的方式很多,我们只要写好其中一种就好了。参考答案:原型链继承 1 //1.定义Persiong函数 2             function Person(name, age) { 3        
22
2020
11

谈谈你觉得做的不错系统,大概介绍下用到了哪些技术?

出现指数:五颗星主要考点:这是一道非常开放的面试题。博主遇到过好几家公司的面试官都问道了这个,博主觉得他们是想通过这个问题快速了解面试者的技术水平。此题只要结合你最近项目用到的技术谈谈就好了。参考答案:就拿我之前做过的一个项目为例来简单说明一下吧。项目分为客户端和服务端,客户端分 为BS客户端和CS客户端,BS客户端采用MVC 5.0的框架,CS客户端是Winform项目,服务端使用WebApi统一提供服务接口,考虑以后可能还要扩展手机端,所以服务接口的参数和返回值使用 通用的Json格式来传递
22
2020
11

MVC路由理解?(屡见不鲜)

出现指数:五颗星主要考点:此题主要考点是MVC路由的理解。参考答案:1、首先我们要理解MVC中路由的作用:url Routing的作用是将浏览器的URL请求映射到特定的MVC控制器动作。2、当我们访问http://localhost:8080/Home/Index 这个地址的时候,请求首先被UrlRoutingModule截获,截获请求后,从Routes中得到与当前请求URL相符合的RouteData对象, 将RouteData对象和当前URL封装成一个RequestContext对象,然后从R
22
2020
11

对于 Web 性能优化,您有哪些了解和经验吗?

出现指数:五颗星主要考点:这道题是博主在博客园的新闻里面看到的,回想之前几年的面试经历,发现此题出现概率还是比较高的。因为它的考面灰常广,可以让面试官很快了解你的技术涉及面以及这些技术面的深度。参考答案:这个问题可以分前端和后端来说。1、前端优化(1)减少 HTTP 请求的次数。我们知道每次发送http请求,建立连接和等待相应会花去相当一部分时间,所以在发送http请求的时候,尽量减少请求的次数,一次请求能取出的数据就不要分多次发送。(2)启用浏览器缓存,当确定请求的数据不会发生变化时,能够直接
22
2020
11

C# 的三大特性?

封装、继承、多态。
22
2020
11

什么是继承?

就是子类实现父类的属性和方法,并在此基础上进行相关的扩展。
22
2020
11

简述 private、 protected、 public、 internal 修饰符的访问权限。

private : 私有成员, 在类的内部才可以访问。protected : 保护成员,该类内部和继承类中可以访问。public : 公共成员,完全公开,没有访问限制。 internal: 当前程序集内可以访问。
22
2020
11

a=10,b=15,请在不使用第三方变量的情况下,把a、b的值互换

int a=a+b; int b=a-b;int a=a-b;
22
2020
11

session喜欢丢值且占内存,Cookis不安全,请问用什么办法代替这两种原始的方法

redis 或者 memcache。当然,微软也提供了解决方案。iis中由于有进程回收机制,系统繁忙的话Session会丢失,可以用Sate server或SQL Server数据库的方式。
22
2020
11

try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?

会执行,在return前执行。
22
2020
11

XML 与 HTML 的主要区别

1. XML是区分大小写字母的,HTML不区分。 2. 在HTML中,如果上下文清楚地显示出段落或者列表键在何处结尾,那么你可以省略</p>或者</li>之类的结束 标记。在XML中,绝对不能省略掉结束标记。 3. 在XML中,拥有单个标记而没有匹配的结束标记的元素必须用一个 / 字符作为结尾。这样分析器就知道不用 查找结束标记了。 4. 在XML中,属性值必须分装在引号中。在HTML中,引号是可用可不用的。 5. 在HTML中,可
22
2020
11

什么是DDD?什么是ATDD?什么是TDD?什么是BDD?

DDD:领域驱动开发(Domain Drive Design)ATDD:验收测试驱动开发(Acceptance Test Driven Development)TDD:测试驱动开发(Test-Driven Development)BDD:行为驱动开发(Behavior Driven Development)
22
2020
11

IOC容器?

1. IOC即控制反转,是一种设计思想,在之前的项目中,当我们需要一个对象时,需要new一个对象,而IOC的设计思想是我们将需要的对象注入到一个容器中,就会获得我们所需要的资源 。2. IOC和DI IOC是控制反转,DI是依赖注入,控制反转的解释有些模棱两可,而依赖注入就很明确,我们将需要的对象注入到容器中,获取所需要的资源。3. IOC控制反转:正常情况下程序开发是上端调用下端,依赖下端,依赖倒置原则告诉我们,上端不要依赖下端,要依赖抽象,上端只依赖抽象,细节交给第三方工厂(容器)来决定,这
22
2020
11

什么是切面?切面能实现什么?

1. AOP即面向切面编程,是OOP编程的有效补充。2. 使用AOP技术,可以将一些系统性相关的编程工作,独立提取出来,独立实现,然后通过切面切入进系统。从而避免了在业务逻辑的代码中混入很多的系统相关的逻辑——比如权限管理,事物管理,日志记录等等。这些系统性的编程工作都可以独立编码实现,然后通过AOP技术切入进系统即可。从而达到了 将不同的关注点分离出来的效果。
22
2020
11

什么是委托,事件是不是一种委托?

1. 委托可以把一个方法作为参数代入另一个方法。2. 委托可以理解为指向一个函数的引用。3. 事件是一种特殊的委托。delegate <函数返回类型> <委托名> (<函数参数>)
22
2020
11

c#多线程是什么?

多线程的优点:可以同时完成多个任务;可以使程序的响应速度更快;可以节省大量时间进行处理任务;可以随时停止任务;可以设置每个任务的优先级,以优化程序性能。
22
2020
11

WebApi概述

Web API是在.NET Framework之上构建的Web的API的框架,Web API是一个编程接口,用于操作可通过标准HTTP方法和标头访问的系统,Web API需要基于.NET 3.5或更高版本才可以进行开发
22
2020
11

什么是WebService

webservice是一种跨平台,跨语言的规范,用于不同平台,不同语言开发的应用之间的交互,是基于网络的、分布式的模块化组件,它执行特定的任务,遵守具体的技术规范。
22
2020
11

存储过程是什么?有什么用?有什么优点?用什么来调用?

存储过程是预编译,安全性高,也是大大提高了效率,存储过程可以重复使用以减少数据库开发人员的工作量,复杂的逻辑我们可以使用存储过程完成,在存储过程中我们可以使用临时表,还可以定义变量,拼接sql语句,调用时,只需执行这个存储过程名,传入我们所需要的参数即可。
22
2020
11

何为触发器?

触发器是一种特殊的存储过程,主要是通过事件触发而被执行。它可以强化约束来维护数据的完整性和一致性,可以跟踪数据库内的操作从而不允许未经许可的更新和变化。可以级联运算。常见的触发器有三种:分别应用于Insert , Update , Delete 事件。
22
2020
11

什么叫做泛型

只是为了去掉重复代码,应对不同类型的共同需求。
22
2020
11

C#中值类型和引用类型分别有哪些? 

值类型:结构体(数值类型,bool型,用户定义的结构体),枚举,可空类型。引用类型:数组,用户定义的类、接口、委托,object,字符串。
22
2020
11

列举ASP.NET页面之间传递值的几种方式。

1. session(viewstate)简单,但易丢失2. application 全局3. cookie 简单,但可能不支持,可能被伪造4. input type="hidden" 简单,可能被伪造5. url参数简单,显示于地址栏,长度有限6. 数据库稳定,安全,但性能相对弱
22
2020
11

.NET的错误处理机制是什么?

.net错误处理机制采用try->catch->finally结构,发生错误时,层层上抛,直到找到匹配的Catch为止。
22
2020
11

C#可否对内存进行直接的操作?

在.net下,.net引用了垃圾回收(GC)功能,它替代了程序员不过在C#中,不能直接实现Finalize方法,而是在析构函数中调用基类的Finalize()方法。
22
2020
11

ADO.NET相对于ADO等主要有什么改进?

1:ado.net不依赖于ole db提供程序,而是使用.net托管提供的程序,2:不使用com3:不在支持动态游标和服务器端游4:,可以断开connection而保留当前数据集可用5:强类型转换6:xml支持
22
2020
11

如果在一个B/S结构的系统中需要传递变量值,但是又不能使用Session、Cookie、Application,您有几种方法进行处理?

this.Server.Transfer、Response.Redirect()、QueryString
22
2020
11

.NET中读写数据库需要用到那些类?他们的作用?

Connection连接对象,Command执行命令和存储过程,DataReader向前只读的数据流,DataAdapter适配器,支持增删查询,DataSet数据级对象,相当与内存里的一张或多张表。
22
2020
11

简要谈一下您对微软.NET架构下remoting和webservice两项技术的理解以及实际中的应用。

WS主要是可利用HTTP,穿透防火墙。而Remoting可以利用TCP/IP,二进制传送提高效率。remoting是.net中用来跨越machine,process, appdomain进行方法调用的技术,对于三成结构的程序,就可以使用remoting技术来构建.它是分布应用的基础技术.相当于以前的DCOM。Web Service是一种构建应用程序的普通模型,并能在所有支持internet网通讯的操作系统上实施。Web Service令基于组件的开发和web的结合达到最佳,基于组件的对象模型。
22
2020
11

什么是反射?

动态获取程序集信息。
22
2020
11

override与重载的区别?

重载是方法的名称相同。参数或参数类型不同,进行多次重载以适应不同的需要。Override是子类对基类中函数的重写。为了适应需要。
22
2020
11

装箱和拆箱的概念和原理

装箱是将值类型转化为引用类型的过程;拆箱是将引用类型转化为值类型的过程
22
2020
11

Session有什么重大BUG,微软提出了什么方法加以解决?

是iis中由于有进程回收机制,系统繁忙的话Session会丢失,可以用Sate server或SQL Server数据库的方式存储Session不过这种方式比较慢,而且无法捕获Session的END事件。
22
2020
11

请编程实现一个冒泡排序算法?

int[] array = { 1, 3, 5, 7, 90, 2, 4, 6, 8, 10 };int temp = 0;for (int i = 0; i < array.Length-1; i++){  for (int j = i+1; j < array.Length; j++)  {    if (array[j] < array[i])    {      temp = array[i];      array[i] = array[j];      array[
22
2020
11

产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复?

List<int> list = new List<int>();Random r = new Random();while (true){  int temp2 = r.Next(1, 101);  if (list.Count == 100)  {    break;  }  //不存在则添加  if (!list.Contains(temp2))  {    list.Add(temp2);  }}for (int i = 0; i < list.Count;
22
2020
11

查出学生总的分数

SELECT TOP (200) stu_name, SUM(fenshu) AS zong FROM student GROUP BY stu_name
22
2020
11

SQL查询重复值

select * from xi a where (a.username) in (select username from xi group by username having count(*) > 1)
22
2020
11

删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录

delete from people where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1) and rowid not in (select min(rowid) from people group by peopleId having count(peopleId )>1)
22
2020
11

查找表中多余的重复记录(多个字段)

select * from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
22
2020
11

删除表中多余的重复记录(多个字段),只留有rowid最小的记录

delete from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1) and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1) 
22
2020
11

在单点登录中,如果cookie被禁用了怎么办?

单点登录的原理是后端生成一个sessionID,然后设置到cookie,后面的所有请求浏览器都会带上cookie,然后服务端从cookie里获取sessionID,再查询到用户信息。所以,保持登录的关键不是cookie,而是通过cookie保存和传输的sessionID,其本质是能获取用户信息的数据。除了cookie,还通常使用HTTP请求头来传输。但是这个请求头浏览器不会像cookie一样自动携带,需要手工处理。
22
2020
11

2.session共享怎么做的(分布式如何实现session共享)?

 问题描述:一个用户在登录成功以后会把用户信息存储在session当中,这时session所在服务器为server1,那么用户在session失效之前如果再次使用app,那么可能会被路由到 server2,这时问题来了,server2没有该用户的session,所以需要用户重新登录,这时的用户体验会非常不好,所以我们想如何实现多台server之间共享session,让用户状态得以保存。 ● 服务器实现的session复制或session共享,这类型的共享session是和服务
22
2020
11

Cookie 和 Session 的区别?

 Cookie是web服务器发送给浏览器的一块信息,浏览器会在本地一个文件中给每个web服务器存储Cookie。以后浏览器再给特定的web服务器发送请求时,同时会发送所有为该服务器存储的Cookie。 Session是存储在web服务器端的一块信息。Session对象存储特定用户会话所需的属性及配置信息。当用户在应用程序的Web页之间跳转时,存储在Session对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。
22
2020
11

http中重定向和请求转发的区别?

本质区别:转发是服务器行为,重定向是客户端行为。 重定向特点:两次请求,浏览器地址发生变化,可以访问自己web之外的资源,传输的数据会丢失。 请求转发特点:一次强求,浏览器地址不变,访问的是自己本身的web资源,传输的数据不会丢失。
22
2020
11

GET和POST的区别?

● GET请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以?分割URL和传输数据,参数之间以&相连,如:login.action?name=zhagnsan&password=123456。POST 把提交的数据则放置在是HTTP包的包体中。 ● GET方式提交的数据最多只能是1024字节,理论上POST没有限制,可传较大量的数据。其实这样说是错误的,不准确的:“GET方式提交的数据最多只能是1024字节",因为 GET 是通过URL提交数据
22
2020
11

http常见的状态码有哪些?

● 200 OK 客户端请求成功 ● 301Moved Permanently(永久移除),请求的URL已移走。Response中应该包含一个 Location URL,说明资源现在所处的位置 ● 302found 重定向 ● 400Bad Request 客户端请求有语法错误,不能被服务器所理解 ● 401Unauthorized 请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用 ● 403 Forbidden 服
22
2020
11

HTTP/1.1与HTTP/1.0的区别?

● 可扩展性 ● HTTP/1.1在消息中增加版本号,用于兼容性判断。 ● HTTP/1.1增加了OPTIONS方法,它允许客户端获取一个服务器支持的方法列表。 ● 为了与未来的协议规范兼容,HTTP/1.1在请求消息中包含了Upgrade头域,通过该头域,客户端可以让服务器知道它能够支持的其它备用通信协议,服务器可以据此进行协议切换,使用备用协议与客户端进行通信。 ● 缓存 在HTTP/1.0中,使用Expire头域来判断资源的fresh或st
22
2020
11

http的长连接和短连接区别?

 HTTP协议有HTTP/1.0版本和HTTP/1.1版本。HTTP1.1默认保持长连接(HTTP persistent connection,也翻译为持久连接),数据传输完成了保持TCP连接不断开(不发RST包、不四次握手),等待在同域名下继续用这个通道传输数据;相反的就是短连接。 在 HTTP/1.0 中,默认使用的是短连接。也就是说,浏览器和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。从HTTP/1.1起,默认使用的是长连接,用以保持连接特性。
22
2020
11

为什么要使用PreparedStatement?

PreparedStatement接口继承Statement,PreparedStatement实例包含已编译的SQL语句,所以其执行速度要快于Statement对象。 作为Statement的子类, PreparedStatement 继承了Statement的所有功能。三种方法execute、 executeQuery和executeUpdate已被更改以使之不再需要参数。 ● 在 JDBC 应用中,多数情况下使用PreparedStatement,原因如下: 
22
2020
11

说下原生JDBC操作数据库流程?

 ● 第一步:Class.forName()加载数据库连接驱动; ● 第二步:DriverManager.getConnection()获取数据连接对象; ● 第三步:根据SQL获取sql会话对象,有2种方式 Statement、PreparedStatement ; ● 第四步:执行SQL,执行SQL前如果有参数值就设置参数值setXXX(); ● 第五步:处理结果集; ● 第六步:关闭结果集、关闭会话、关闭连接。 
22
2020
11

jsonp原理是什么?

JavaScript是一种在Web开发中经常使用的前端动态脚本技术。在JavaScript中,有一个很重要的安全性限制,被称为“Same-OriginPolicy”(同源策略)。这一策略对于JavaScript代码能够访问的页面内容做了很重要的限制,即JavaScript只能访问与包含它的文档在同一域下的内容。 JavaScript这个安全策略在进行多iframe或多窗口编程、以及Ajax编程时显得尤为重要。根据这个策略,在baidu.com下的页面中包含的JavaScript代码,不
22
2020
11

什么是xml,使用xml的优缺点,xml的解析器有哪几种,分别有什么区别?

xml是一种可扩展性标记语言,支持自定义标签(使用前必须预定义)使用DTD和XMLSchema标准化XML结构。 优点:用于配置文件,格式统一,符合标准;用于在互不兼容的系统间交互数据,共享数据方便; 缺点:xml文件格式复杂,数据传输占流量,服务端和客户端解析xml文件占用大量资源且不易维护 xml常用解析器有2种,分别是:DOM和SAX。主要区别在于它们解析xml文档的方式不同。使用DOM解析,xml文档以DOM树形结构加载入内存,而SAX采用的是事件模型。
22
2020
11

谈谈你对ajax的认识?

Ajax是一种创建交互式网页应用的的网页开发技术;AsynchronousJavaScriptandXML的缩写。 Ajax的优势:通过异步模式,提升了用户体验。优化了浏览器和服务器之间的传输,减少不必要的数据往返,减少了带宽占用。Ajax引擎在客户端运行,承担了一部分本来由服务器承担的工作,从而减少了大用户量下的服务器负载。 Ajax的最大特点:可以实现局部刷新,在不更新整个页面的前提下维护数据,提升用户体验度。
22
2020
11

jsp有哪些域对象和内置对象及他们的作用?

四大域对象: ● pageContext page域-指当前页面,在当前jsp页面有效,跳到其它页面失效。 ● requestrequest域-指一次请求范围内有效,从http请求到服务器处理结束,返回响应的整个过程。在这个过程中使用forward(请求转发)方式跳转多个jsp,在这些页面里你都可以使用这个变量。 ● sessionsession域-指当前会话有效范围,浏览器从打开到关闭过程中,转发、重定向均可以使用。 ● applicationconte
22
2020
11

什么是jsp,什么是Servlet?jsp 和Servlet 有什么区别?

 jsp本质上就是一个Servlet,它是Servlet的一种特殊形式(由SUN公司推出),每个jsp页面都是一个servlet实例。Servlet是由Java提供用于开发web服务器应用程序的一个组件,运行在服务端,由servlet容器管理,用来生成动态内容。一个servlet实例是实现了特殊接口Servlet的Java类,所有自定义的servlet均必须实现Servlet接口。 ● 区别:jsp是html页面中内嵌的Java代码,侧重页面显示; Servlet是
22
2020
11

Linux怎么关闭进程?

通常用ps查看进程PID,用kill命令终止进程。ps命令用于查看当前正在运行的进程。grep是搜索;-aux显示所有状态; 例如: ps –ef | grep java表示查看所有进程里CMD是java的进程信息。 ps –aux | grep java kill命令用于终止进程。例如:kill -9 [PID]   -9表示强迫进程立即停止。
22
2020
11

Linux中如何查看日志?

动态打印日志信息:tail –f 日志文件
22
2020
11

说一下常用的Linux命令?

● 列出文件列表:ls【参数 -a -l】 ● 创建目录和移除目录:mkdir rmdir ● 用于显示文件后几行内容:tail打包:tar -xvf ● 打包并压缩:tar -zcvf ● 查找字符串:grep ● 显示当前所在目录:pwd创建空文件:touch ● 编辑器:vim vi  
16
2020
11

oracle的锁又几种,定义分别是什么;

1.  行共享锁 (ROW SHARE) 2.  行排他锁(ROW EXCLUSIVE) 3 . 共享锁(SHARE) 4.  共享行排他锁(SHARE ROW EXCLUSIVE) 5.  排他锁(EXCLUSIVE) 使用方法: SELECT * FROM order_master WHERE vencode="V002" FOR UPDATE WAIT 5;&n
16
2020
11

怎样创建一个一个索引,索引使用的原则,有什么优点和缺点

创建标准索引: CREATE  INDEX 索引名 ON 表名 (列名)  TABLESPACE 表空间名; 创建唯一索引: CREATE unique INDEX 索引名 ON 表名 (列名)  TABLESPACE 表空间名; 创建组合索引: CREATE INDEX 索引名 ON 表名 (列名1,列名2)  TABLESPACE 表空间名; 创建反向键索引: CREATE INDE
16
2020
11

简述oracle中 dml、ddl、dcl的使用

Dml 数据操纵语言,如select、update、delete,insert Ddl 数据定义语言,如create table 、drop table 等等 Dcl 数据控制语言, 如 commit、 rollback、grant、 invoke等 
16
2020
11

解释什么是死锁,如何解决Oracle中的死锁?

简言之就是存在加了锁而没有解锁,可能是使用锁没有提交或者回滚事务,如果是表级锁则不能操作表,客户端处于等在状态,如果是行级锁则不能操作锁定行 解决办法: 1). 查找出被锁的表 select b.owner,b.object_name,a.session_id,a.locked_mode from v$locked_object a,dba_objects b where b.object_id = a.object_id;  
16
2020
11

解释data block , extent 和 segment的区别?

data block 数据块,是oracle最小的逻辑单位,通常oracle从磁盘读写的就是块 extent 区,是由若干个相邻的block组成 segment段,是有一组区组成 tablespace表空间,数据库中数据逻辑存储的地方,一个tablespace可以包含多个数据文件  
16
2020
11

解释冷备份和热备份的不同点以及各自的优点?

冷备份发生在数据库已经正常关闭的情况下,将关键性文件拷贝到另外位置的一种说法 热备份是在数据库运行的情况下,采用归档方式备份数据的方法 冷备的优缺点: 1).是非常快速的备份方法(只需拷贝文件)  2).容易归档(简单拷贝即可)  3).容易恢复到某个时间点上(只需将文件再拷贝回去)  4).能与归档方法相结合,作数据库“最新状态”的恢复。  5).低度维护,高度安全。  冷备份不足:  1).单独使用时,
16
2020
11

Oracle的导入导出有几种方式,有何区别?

1). 使用oracle工具 exp/imp 2). 使用plsql相关工具 方法1. 导入/导出的是二进制的数据, 2.plsql导入/导出的是sql语句的文本文件 3) sqlloader4) dblink
16
2020
11

Oracle中function和procedure的区别?

1). 可以理解函数是存储过程的一种 2). 函数可以没有参数,但是一定需要一个返回值,存储过程可以没有参数,不需要返回值 3). 函数return返回值没有返回参数模式,存储过程通过out参数返回值, 如果需要返回多个参数则建议使用存储过程 4). 在sql数据操纵语句中只能调用函数而不能调用存储过程  
16
2020
11

Oracle跟SQL Server 2005的区别?

宏观上: 1). 最大的区别在于平台,oracle可以运行在不同的平台上,sql server只能运行在windows平台上,由于windows平台的稳定性和安全性影响了sql server的稳定性和安全性 2). oracle使用的脚本语言为PL-SQL,而sql server使用的脚本为T-SQL 微观上: 从数据类型,数据库的结构等等回答 
16
2020
11

Mysql数据库与Oracle 数据库有什么区别?

1,应用方面,Mysql 是中小型应用的数据库。一般用于个人和中小型企业。Oracle 属于大型数据库,一般用于具有相当规模的企业应用。2, 自动增长的数据类型方面: MySQL有自动增长的数据类型。Oracle 没有自动增长的数据类型。需要建立一个自增序列。3,group by 用法: Mysql 中group by 在SELECT 语句中可以随意使用,但在ORACLE 中如果查询语句中有组函数,那么其他列必须是组函数处理过的或者是group by子句中的列,否则会报错。4,引导方面: MyS
16
2020
11

事务的特性(ACID)是指什么?

1)原子性(Atomic): 事务中的各项操作,要么全做要么全不做,任何一项操作的失败都会导致整个事务的失败。2) 一致性(Consistent): 事务结束后系统状态是一样的。3)隔离性(Isolated): 并发执行的事务彼此无法看到对方的中间状态。4) 持久性(Durable):事务完成后,即使发生灾难性故障,通过日志和同步备份可以在故障发生后重建数据。
16
2020
11

数据库的三大范式是什么?

1) 第一范式:原子件,要求每一列的值不能再拆分了。2) 第二范式: 一张表只描述一个实体(若列中有冗余数据,则不满足)3)第三范式: 所有列与主键值直接相关。
16
2020
11

集合操作符

Union : 不包含重复值,默认按第一个查询的第一列升序排列。Union All : 完全并集包含重复值。不排序。Minus 不包含重复值,不排序。
15
2020
11

说一下AngularJS的认识?

AngularJS是google开发者设计的一个前端开发框架,它是由是由JavaScript编写的一个JS框架。通常它是用来在静态网页构建动态应用不足而设计的。 ● AngularJS特点如下:数据绑定:AngularJS是数据双向绑定。 MVVM(Model-View-ViewModel)模式:Model简单数据对象,View视图(如HTML,JSP等) ViewModel是用来提供数据和方法,和View进行交互。这种设计模式使得代码解耦合。 依赖注入:
15
2020
11

说一下Vue.js的认识?

Vue.js(读音/vjuː/,类似于view)是一套构建用户界面的渐进式框架。与其他重量级框架不同的是,Vue采用自底向上增量开发的设计。Vue的核心库只关注视图层,它不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与单文件组件和Vue生态系统支持的库结合使用时,Vue也完全能够为复杂的单页应用程序提供驱动。Vue.js起步: 引入相应文件: <script src="https://unpkg.com/vue"></scri
15
2020
11

说一下jQueryUI的认识?

jQueryUI是一套jQuery的页面UI插件,包含很多种常用的页面空间,例如Tabs(如本站首页右上角部分)、拉帘效果(本站首页左上角)、对话框、拖放效果、日期选择、颜色选择、数据排序、窗体大小调整等等非常多的内容。 ● 技术亮点: 简单易用:继承jQuery简易使用特性,提供高度抽象接口,短期改善网站易用性。 开源免费:采用MIT&GPL双协议授权,轻松满足自由产品至企业产品各种授权需求。 广泛兼容:兼容各主流桌面浏览器。包括IE6+、Fir
15
2020
11

说一下MiniUI的认识?

基于jquery的框架,开发的界面功能都很丰富。jQueryMiniUI-快速开发WebUI。它能缩短开发时间,减少代码量,使开发者更专注于业务和服务端,轻松实现界面开发,带来绝佳的用户体验。使用MiniUI,开发者可以快速创建Ajax无刷新、B/S快速录入数据、CRUD、Master-Detail、菜单工具栏、弹出面板、布局导航、数据验证、分页表格、树、树形表格等典型WEB应用系统界面。缺点:收费,没有源码,基于这个开发如果想对功能做扩展就需要找他们的团队进行升级! ● 提供以下几大
15
2020
11

说一下EasyUI的认识?

EasyUI是一种基于jQuery的用户界面插件集合。easyui为创建现代化,互动,JavaScript应用程序,提供必要的功能。使用easyui你不需要写很多代码,你只需要通过编写一些简单HTML标记,就可以定义用户界面。优势:开源免费,页面也还说的过去。接下来看easyUI入门: 页面引入必要的js和css样式文件,文件引入顺序为: <!-- 引入 JQuery --><script type="text/javascript" s
15
2020
11

MySQL触发器怎么写?

MySQL包含对触发器的支持。触发器是一种与表操作有关的数据库对象,当触发器所在表上出现指定事件时,将调用该对象,即表的操作事件触发表上的触发器的执行。 在MySQL中,创建触发器语法如下: CREATE TRIGGER trigger_name trigger_timetrigger_event ON tbl_name FOR EACH ROWtrigger_stmt 其中: trigger_name:标识触发器名称,用户自行指定; trigg
15
2020
11

MySQL怎么创建存储过程?

MySQL存储过程是从MySQL5.0开始增加的新功能。存储过程的优点有一箩筐。不过最主要的还是执行效率和SQL代码封装。特别是SQL代码封装功能,如果没有存储过程,在外部程序访问数据库时,要组织很多SQL语句。特别是业务逻辑复杂的时候,一大堆的SQL和条件夹杂在代码中,让人不寒而栗。现在有了MySQL存储过程,业务逻辑可以封装存储过程中,这样不仅容易维护,而且执行效率也高。 ● 创建MySQL存储过程 下面代码创建了一个叫pr_add的MySQL存储过程,这个MySQL存储
15
2020
11

MySQL中四种隔离级别分别是什么?

● 读未提交(READ UNCOMMITTED):未提交读隔离级别也叫读脏,就是事务可以读取其它事务未提交的数据。 ● 读已提交(READ COMMITTED):在其它数据库系统比如SQL Server默认的隔离级别就是提交读,已提交读隔离级别就是在事务未提交之前所做的修改其它事务是不可见的。 ● 可重复读(REPEATABLE READ):保证同一个事务中的多次相同的查询的结果是一致的,比如一个事务一开始查询了一条记录然后过了几秒钟又执行了相同的查询,保证两次查询的结果是相
15
2020
11

事务的四大特征是什么?

数据库事务transanction正确执行的四个基本要素。ACID,原子性(Atomicity)、一致性(Correspondence)、隔离性(Isolation)、持久性(Durability)。 ● 原子性:整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。 ● 一致性:在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。&nbs
15
2020
11

MySQL事务介绍?

 MySQL和其它的数据库产品有一个很大的不同就是事务由存储引擎所决定,例如MYISAM,MEMORY,ARCHIVE都不支持事务,事务就是为了解决一组查询要么全部执行成功,要么全部执行失败。MySQL事务默认是采取自动提交的模式,除非显示开始一个事务。 SHOW VARIABLES LIKE 'AUTOCOMMIT';  修改自动提交模式,0=OFF,1=ON,注意:修改自动提交对非事务类型的表是无效的,因为它们本身就没有提交和回滚的概念
15
2020
11

MySQL存储引擎有哪些?

● InnoDB存储引擎 InnoDB是事务型数据库的首选引擎,支持事务安全表(ACID),支持行锁定和外键,InnoDB是默认的MySQL引擎。 ● MyISAM存储引擎 MyISAM基于ISAM存储引擎,并对其进行扩展。它是在Web、数据仓储和其他应用环境下最常使用的存储引擎之一。MyISAM拥有较高的插入、查询速度,但不支持事务。 ● MEMORY存储引擎 MEMORY存储引擎将表中的数据存储到内存中,未查询和引用其他表数据提供快速访问。&
15
2020
11

MySQL架构器中各个模块都是什么?

● 连接管理与安全验证是什么 每个客户端都会建立一个与服务器连接的线程,服务器会有一个线程池来管理这些连接;如果客户端需要连接到MYSQL数据库还需要进行验证,包括用户名、密码、主机信息等。 ● 解析器是什么 解析器的作用主要是分析查询语句,最终生成解析树;首先解析器会对查询语句的语法进行分析,分析语法是否有问题。还有解析器会查询缓存,如果在缓存中有对应的语句,就返回查询结果不进行接下来的优化执行操作。前提是缓存中的数据没有被修改,当然如果被修改了也会被清出缓存。&
15
2020
11

MySQL 数据库架构图了解吗?

 MyISAM和InnoDB是最常见的两种存储引擎,特点如下。 ● MyISAM存储引擎 MyISAM是MySQL官方提供默认的存储引擎,其特点是不支持事务、表锁和全文索引,对于一些OLAP(联机分析处理)系统,操作速度快。 每个MyISAM在磁盘上存储成三个文件。文件名都和表名相同,扩展名分别是.frm(存储表定义)、.MYD(MYData,存储数据)、.MYI(MYIndex,存储索引)。这里特别要注意的是MyISAM不缓存数据文件,只缓存索引文件。&
15
2020
11

MySQL性能优化有哪些?

● 当只要一行数据时使用limit 1 查询时如果已知会得到一条数据,这种情况下加上limit 1会增加性能。因为MySQL数据库引擎会在找到一条结果停止搜索,而不是继续查询下一条是否符合标准直到所有记录查询完毕。 ● 选择正确的数据库引擎 MySQL中有两个引擎MyISAM和InnoDB,每个引擎有利有弊。MyISAM适用于一些大量查询的应用,但对于有大量写功能的应用不是很好。甚至你只需要update一个字段整个表都会被锁起来。而别的进程就算是读操作也不行要等到当
15
2020
11

SQL之sql注入是什么?

 通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。举例:当执行的sql为select * from user where username = “admin” or “a” = “a”时,sql语句恒成立,参数username毫无意义。 ● 防止sql注入的方式: 预编译语句:如,select * from user where username = ?,sql语句语义不会发生改变,sql语句中变量
15
2020
11

SQL之连接查询(左连接和右连接的区别)?

● 外连接: ● 左连接(左外连接):以左表作为基准进行查询,左表数据会全部显示出来,右表如果和左表匹配的数据则显示相应字段的数据,如果不匹配则显示为null。 ● 右连接(右外连接):以右表作为基准进行查询,右表数据会全部显示出来,左表如果和右表匹配的数据则显示相应字段的数据,如果不匹配则显示为null。 ● 全连接:先以左表进行左外连接,再以右表进行右外连接。 ● 内连接:显示表之间有连接匹配的所有行。  
15
2020
11

SQL中聚合函数有哪些?

聚合函数是对一组值进行计算并返回单一的值的函数,它经常与select语句中的group by子句一同使用。 ● avg():返回的是指定组中的平均值,空值被忽略。 ● count():返回的是指定组中的项目个数。 ● max():返回指定数据中的最大值。 ● min():返回指定数据中的最小值。 ● sum():返回指定数据的和,只能用于数字列,空值忽略。 
15
2020
11

limit的基数比较大时使用between场景有那些?

例如 select * from admin order by admin_id limit 100000,10 优化为 select * from admin where admin_time> '2014-01-01′ 
15
2020
11

select * from admin left join log on admin.admin_id = log.admin_id where log.admin_id>10 如何优化?

优 化 为 : select * from (select * from admin where admin_id>10) T1 left join log on T1.admin_id =log.admin_id。使用 JOIN 时候,应该用小的结果驱动大的结果(left join 左边表结果尽量小如果有条件应该放到左边先处理, right join同理反向),同时尽量把牵涉到多表联合的查询拆分多个 query(多个连表查询效率低,容易到之后锁表和阻塞)。
15
2020
11

where子句中可以对字段进行null值判断吗?

 可以,比如 select id from t where num is null 这样的sql也是可以的。但是最好不要给数据库留NULL,尽可能的使用NOT NULL填充数据库。不要以为NULL不需要空间,比如:char(100) 型,在字段建立时,空间就固定了,不管是否插入值(NULL 也包含在内),都是占用100个字符的空间的,如果是varchar 这样的变长字段,null 不占用空间。可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:select id
14
2020
11

在千万级的数据库查询中,如何提高效率?

● 数据库设计方面 1、对查询进行优化,应尽量避免全表扫描,首先应考虑在where及order by涉及的列上建立索引。 2、应尽量避免在where子句中对字段进行null值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:select id from t where num=0 3、并不是所有索引对查询都有效,SQL是根据
14
2020
11

触发器的作用有哪些?

● 触发器可通过数据库中的相关表实现级联更改;通过级联引用完整性约束可以更有效地执行这些更改。 ● 触发器可以强制比用CHECK约束定义的约束更为复杂的约束。与CHECK约束不同,触发器可以引用其它表中的列。例如,触发器可以使用另一个表中的SELECT比较插入或更新的数据,以及执行其它操作,如修改数据或显示用户定义错误信息。 ● 触发器还可以强制执行业务规则。 ● 触发器也可以评估数据修改前后的表状态,并根据其差异采取对策。
14
2020
11

你觉得存储过程和SQL语句该使用哪个?

● 在一些高效率或者规范性要求比较高的项目,建议采用存储过程。 ● 对于一般项目建议采用参数化命令方式,是存储过程与SQL语句一种折中的方式。 ● 对于一些算法要求比较高,涉及多条数据逻辑,建议采用存储过程。
14
2020
11

存储过程与SQL的对比?

● 优势: 1、提高性能 SQL语句在创建过程时进行分析和编译。存储过程是预编译的,在首次运行一个存储过程时,查询优化器对其进行分析、优化,并给出最终被存在系统表中的存储计划,这样,在执行过程时便可节省此开销。 2、降低网络开销 存储过程调用时只需用提供存储过程名和必要的参数信息,从而可降低网络的流量。 3、便于进行代码移植 数据库专业人员可以随时对存储过程进行修改,但对应用程序源代码却毫无影响,从而极大的提高了程序的可移植性。&nbs
14
2020
11

存储过程和存储函数的特点和区别?

 ● 特点: 1、一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。 2、对于存储过程来说可以返回参数,而函数只能返回值或者表对象。 3、存储过程一般是作为一个独立的部分来执行,而函数可以作为查询语句的一个部分来调用,由于函数可以返回一个表对象,因此它可以在查询语句中位于FROM关键字的后面。 ● 区别: 1、函数必须有返回值,而过程没有。 2、函数可以单独执行.而过程必须通过execute执行。&nbs
14
2020
11

Oracle中是如何进行分页查询的?

 Oracle中使用rownum来进行分页,这个是效率最好的分页方法,hibernate也是使用rownum来进行Oralce分页的。 
14
2020
11

Oracle中字符串用什么连接?

Oracle中使用||这个符号连接字符串如‘abc’||‘d’的结果是abcd。
14
2020
11

如何使用Oracle的游标?

● Oracle中的游标分为显示游标和隐式游标 ● 显示游标是用cursor...is命令定义的游标,它可以对查询语句(select)返回的多条记录进行处理; ● 隐式游标是在执行插入(insert)、删除(delete)、修改(update)和返回单条记录的查询(select)语句时由PL/SQL自动定义的。 ● 显式游标的操作:打开游标、操作游标、关闭游标;PL/SQL隐式地打开SQL游标,并在它内部处理SQL语句,然后关闭它。
14
2020
11

Oracle 存储过程怎么创建?

 存储过程创建语法: create or replace procedure 存储过程名(param1 in type,param2 out type)as变量 1 类型(值范围);变量 2 类型(值范围);beginselect count(*) into 变量 1 from 表 A where 列名=param1;If (判断条件) thenselect 列名 into 变量 2 from 表 A where 列名=param1;dbms_output.put_line(
14
2020
11

什么是存储过程,使用存储过程的好处?

存储过程(StoredProcedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。 ● 优点: 允许模块化程序设计,就是说只需要创建一次过程,以后在程序中就可以调用该过程任意次。 允许更快执行,如果某操作需要执行大量SQL语句或重复执行,存储过程比SQL语句执行的要快。 减少网络
14
2020
11

请描述一下Spring的事务?

声明式事务管理的定义:用在Spring配置文件中声明式的处理事务来代替代码式的处理事务。这样的好处是,事务管理不侵入开发的组件,具体来说,业务逻辑对象就不会意识到正在事务管理之中,事实上也应该如此,因为事务管理是属于系统层面的服务,而不是业务逻辑的一部分,如果想要改变事务管理策划的话,也只需要在定义文件中重新配置即可,这样维护起来极其方便。 基于TransactionInterceptor的声明式事务管理:两个次要的属性:transactionManager,用来指定一个事务治理器,并
14
2020
11

Spring能帮我们做什么?

● Spring能帮我们根据配置文件创建及组装对象之间的依赖关系。 ● Spring根据配置文件来进行创建及组装对象间依赖关系,只需要改配置文件即可 ● Spring面向切面编程能帮助我们无耦合的实现日志记录,性能统计,安全控制。 ● Spring面向切面编程能提供一种更好的方式来完成,一般通过配置方式,而且不需要在现有代码中添加任何额外代码,现有代码专注业务逻辑。 ● Spring能非常简单的帮我们管理数据库事务。 ● 采用Spring,我们只
14
2020
11

Spring结构图了解吗?

● 核心容器:包括Core、Beans、Context、EL模块。 1、Core模块:封装了框架依赖的最底层部分,包括资源访问、类型转换及一些常用工具类。 2、Beans模块:提供了框架的基础部分,包括反转控制和依赖注入。其中BeanFactory是容器核心,本质是“工厂设计模式”的实现,而且无需编程实现“单例设计模式”,单例完全由容器控制,而且提倡面向接口编程,而非面向实现编程;所有应用程序对象及对象间关系由框架管理,从而真正把你从程序逻辑中把维护对象之间的依赖关系提取出来
14
2020
11

简单介绍一下spring bean的生命周期?

 ● bean定义:在配置文件里面用<bean></bean>来进行定义。 ● bean初始化:有两种方式初始化: 1、在配置文件中通过指定init-method属性来完成。 2、实现org.springframwork.beans.factory.InitializingBean接口。 ● bean调用:有三种方式可以得到bean实例,并进行调用 ● bean销毁:销毁有两种方式: 1、使用配置文件指
14
2020
11

Spring的常用注解?

 Spring在2.5版本以后开始支持注解的方式来配置依赖注入。可以用注解的方式来代替xml中bean的描述。注解注入将会被容器在XML注入之前被处理,所以后者会覆盖掉前者对于同一个属性的处理结果。 注解装配在spring中默认是关闭的。所以需要在spring的核心配置文件中配置一下才能使用基于注解的装配模式。配置方式如下:<context:annotation-config/> ● 常用的注解: @Required:该注解应用于设值方法。&n
14
2020
11

Spring中的设计模式有哪些?

 ● 单例模式——spring中两种代理方式,若目标对象实现了若干接口,spring使用jdk的java.lang.reflect.Proxy类代理。若目标兑现没有实现任何接口,spring使用CGLIB库生成目标类的子类。单例模式——在spring的配置文件中设置bean默认为单例模式。 ● 模板方式模式——用来解决代码重复的问题。比如:RestTemplate、JmsTemplate、JpaTemplate ● 前端控制器模式——spring提供了前端控制器Di
14
2020
11

谈谈你对Spring的理解?

Spring是一个开源框架,为简化企业级应用开发而生。Spring可以是使简单的JavaBean实现以前只有EJB才能实现的功能。Spring是一个IOC和AOP容器框架。 ● Spring容器的主要核心是: 控制反转(IOC),传统的java开发模式中,当需要一个对象时,我们会自己使用new或者getInstance等直接或者间接调用构造方法创建一个对象。而在spring开发模式中,spring容器使用了工厂模式为我们创建了所需要的对象,不需要我们自己创建了,直接调用spr
14
2020
11

如何解决get和post乱码问题?

解决post请求乱码:我们可以在web.xml里边配置一个CharacterEncodingFilter过滤器。设置为utf-8.解决get请求的乱码:有两种方法。对于get请求中文参数出现乱码解决方法有两个: ● 修改tomcat配置文件添加编码与工程编码一致。 ● 另 外 一 种 方 法 对 参 数 进 行 重 新 编 码 String userName = new String(request.getParameter(“userName”).getBytes(“ISO
14
2020
11

如何开启注解处理器和适配器?

我们在项目中一般会在springmvc.xml中通过开启<mvc:annotation-driven>来实现注解处理器和适配器的开启。
14
2020
11

SpringMVC常用注解都有哪些?

 ● @RequestMapping用于请求url映射。 ● @RequestBody注解实现接收http请求的json数据,将json数据转换为java对象。 ● @ResponseBody注解实现将controller方法返回对象转化为json响应给客户。 
14
2020
11

SpringMVC的工作原理?

 ● 用户向服务器发送请求,请求被springMVC前端控制器DispatchServlet捕获; ● DispatcherServle对请求URL进行解析,得到请求资源标识符(URL),然后根据该URL调用HandlerMapping将请求映射到处理器HandlerExcutionChain; ● DispatchServlet根据获得Handler选择一个合适的HandlerAdapter适配器处理; ● Handler对数据处理完成以后将返回一个Mo
14
2020
11

RPC 原理?

1.调用客户端句柄;执行传送参数2.调用本地系统内核发送网络消息3. 消息传送到远程主机4. 服务器句柄得到消息并取得参数5. 执行远程过程6. 执行的过程将结果返回服务器句柄7. 服务器句柄返回结果,调用远程系统内核8. 消息传回本地主机9. 客户句柄由内核接收消息10. 客户接收句柄返回的数据
14
2020
11

HashMap、HashTable 的区别及其优缺点?

HashMap和HashTable:Hashtable的方法是同步的,而HashMap的方法不是,Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现。HashMap是一个线程不同步的,那么就意味着执行效率高,HashTable是一个线程同步的就意味着执行效率低,但是HashMap也可以将线程进行同步,这就意味着,我们以后再使用中,尽量使用HashMap这个类。
14
2020
11

ArrayList、Vector、LinkedList 的区别及其优缺点?

ArrayList 和Vector是采用数组方式存储数据, Vector由于使用了synchronized方法(线程安全)所以性能上比ArrayList要差,LinkedList使用双向链表实现存储,按序号索引数据需要进行向前或向后遍历,但是插入数据时只需要记录本项的前后项即可,所以插入数度较快!
14
2020
11

有可能使hadoop任务输出到多个目录中吗?如果可以,怎么做?

自定义outputformat或者用multioutputs工具
14
2020
11

谈谈你对反射机制的理解及其用途?

java中的反射,首先我们写好的类,经过编译之后就编程了.class文件,我们可以获取这个类的.class文件,获取之后,再来操作这个类。这个就是java的反射机制。
14
2020
11

MapReduce 2.0”与“YARN”是否等同,尝试解释说明

MapReduce 2.0  --à mapreduce + yarn
14
2020
11

如何为一个hadoop任务设置要创建reduder的数量?

可以通过代码设置具体设置多少个,应该根据硬件配置和业务处理的类型来决定
14
2020
11

如何为一个hadoop任务设置mappers的数量?

Split机制
14
2020
11

hadoop中通过拆分任务到多个节点运行来实现并行计算,但某些节点运行较慢会拖慢整个任务的运行,hadoop采用全程机制应对这个情况?

Speculate 推测执行
14
2020
11

Hadoop中job和tasks之间的区别是什么?

Job是我们对一个完整的mapreduce程序的抽象封装Task是job运行时,每一个处理阶段的具体实例,如map task,reduce task,maptask和reduce task都会有多个并发运行的实例
14
2020
11

分别举例什么情况要使用 combiner,什么情况不使用?

求平均数的时候就不需要用combiner,因为不会减少reduce执行数量。在其他的时候,可以依据情况,使用combiner,来减少map的输出数量,减少拷贝到reduce的文件,从而减轻reduce的压力,节省网络开销,提升执行效率
14
2020
11

如果没有自定义partitioner,那数据在被送达reducer前是如何被分区的?

hadoop有一个默认的分区类,HashPartioer类,通过对输入的k2去hash值来确认map输出的k2,v2送到哪一个reduce中去执行。
14
2020
11

参考下列M/R系统的场景:hdfs块大小为64MB,输入类为FileInputFormat,有3个文件的大小分别为64KB, 65MB, 127MB

会产生多少个maptask   4个    65M这个文件只有一个切片《原因参见笔记汇总TextInputformat源码分析部分》
14
2020
11

Hadoop框架中文件拆分是怎么调用的?

InputFormat  -->  TextInputFormat  --> RecordReader  --> LineRecordReader  --> LineReader
14
2020
11

在一个运行的hadoop任务中,什么是InputSplit?

InputSplit是InputFormat中的一个方法,主要是用来切割输入文件的,将输入文件切分成多个小文件,然后每个小文件对应一个map任务
14
2020
11

两个类TextInputFormat和KeyValueInputFormat的区别是什么?

TextInputFormat主要是用来格式化输入的文本文件的,KeyValueInputFormat则主要是用来指定输入输出的key,value类型的
14
2020
11

在hadoop中定义的主要公用InputFormat中,哪个是默认值?

FileInputFormat
14
2020
11

你们提交的 job 任务大概有多少个?这些 job 执行完大概用多少时间?(面试了三家,都问这个问题)

没统计过,加上测试的,会与很多Sca阶段,一小时运行一个job,处理时间约12分钟Etl阶段,有2千多个job,从凌晨12:00开始次第执行,到早上5点左右全部跑完
14
2020
11

把公钥追加到授权文件的命令?该命令是否在 root 用户下执行?

ssh-copy-id哪个用户需要做免密登陆就在哪个用户身份下执行
14
2020
11

zookeeper 优点,用在什么场合

极大方便分布式应用的开发;(轻量,成本低,性能好,稳定性和可靠性高)
14
2020
11

以你的实际经验,说下怎样预防全表扫描

1.应尽量避免在where 子句中对字段进行null 值判断,否则将导致引擎放弃使用索引而进行全表扫描2.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫3.描应尽量避免在 where 子句中使用or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描4.in 和 not  in,用具体的字段列表代替,不要返回用不到的任何字段。in 也要慎用,否则会导致全表扫描5.避免使用模糊查询6.任何地方都不要使用select * from t
14
2020
11

对 Hadoop 有没有调优经验,没有什么使用心得?(调优从参数调优讲起)

dfs.block.sizeMapredure:io.sort.mbio.sort.spill.percentmapred.local.dirmapred.map.tasks & mapred.tasktracker.map.tasks.maximummapred.reduce.tasks & mapred.tasktracker.reduce.tasks.maximummapred.reduce.max.attemptsmapred.reduce.parallel.copies
14
2020
11

文件大小默认为 64M,改为 128M 有啥影响?

更改文件的block块大小,需要根据我们的实际生产中来更改block的大小,如果block定义的太小,大的文件都会被切分成太多的小文件,减慢用户上传效率,如果block定义的太大,那么太多的小文件可能都会存到一个block块中,虽然不浪费硬盘资源,可是还是会增加namenode的管理内存压力。
14
2020
11

谈谈 hadoop1 和 hadoop2 的区别

hadoop1的主要结构是由HDFS和mapreduce组成的,HDFS主要是用来存储数据,mapreduce主要是用来计算的,那么HDFS的数据是由namenode来存储元数据信息,datanode来存储数据的。Jobtracker接收用户的操作请求之后去分配资源执行task任务在hadoop2中,首先避免了namenode单点故障的问题,使用两个namenode来组成namenode  feduration的机构,两个namenode使用相同的命名空间,一个是standby状态,一
14
2020
11

假设公司要建一个数据中心,你会如何处理?

先进行需求调查分析,设计功能划分,架构设计,吞吐量的估算,采用的技术类型,软硬件选型,成本效益的分析,项目管理,扩展性,安全性,稳定性
14
2020
11

HBase宕机如何处理

宕机分为HMaster宕机和HRegisoner宕机,如果是HRegisoner宕机,HMaster会将其所管理的region重新分布到其他活动的RegionServer上,由于数据和日志都持久在HDFS中,该操作不会导致数据丢失。所以数据的一致性和安全性是有保障的。如果是HMaster宕机,HMaster没有单点问题,HBase中可以启动多个HMaster,通过Zookeeper的Master Election机制保证总有一个Master运行。即ZooKeeper会保证总会有一个HMaster
14
2020
11

hive如何调优

hive最终都会转化为mapreduce的job来运行,要想hive调优,实际上就是mapreduce调优,可以有下面几个方面的调优。解决收据倾斜问题,减少job数量,设置合理的map和reduce个数,对小文件进行合并,优化时把握整体,单个task最优不如整体最优。按照一定规则分区。
14
2020
11

如何确认hadoop集群的健康状况

有完善的集群监控体系(ganglia,nagios)Hdfs dfsadmin –reportHdfs haadmin –getServiceState nn1
14
2020
11

HDFS存储机制

HDFS主要是一个分布式的文件存储系统,由namenode来接收用户的操作请求,然后根据文件大小,以及定义的block块的大小,将大的文件切分成多个block块来进行保存
14
2020
11

mapreduce的原理

mapreduce的原理就是将一个MapReduce框架由一个单独的master JobTracker和每个集群节点一个slave TaskTracker共同组成。master负责调度构成一个作业的所有任务,这些的slave上,master监控它们的执行,重新执行已经失败的任务。而slave仅负责执行由maste指派的任务。
14
2020
11

hadoop运行原理

hadoop的主要核心是由两部分组成,HDFS和mapreduce,首先HDFS的原理就是分布式的文件存储系统,将一个大的文件,分割成多个小的文件,进行存储在多台服务器上。Mapreduce的原理就是使用JobTracker和TaskTracker来进行作业的执行。Map就是将任务展开,reduce是汇总处理后的结果。
14
2020
11

搭建hadoop集群 , master和slaves都运行哪些服务

master主要是运行我们的主节点,slaves主要是运行我们的从节点。
14
2020
11

mapreduce的大致流程

主要分为八个步骤1、对文件进行切片规划2、启动相应数量的maptask进程3、调用FileInputFormat中的RecordReader,读一行数据并封装为k1v14、调用自定义的map函数,并将k1v1传给map5、收集map的输出,进行分区和排序6、reduce task任务启动,并从map端拉取数据7、reduce task调用自定义的reduce函数进行处理8、调用outputformat的recordwriter将结果数据输出
14
2020
11

请列举出曾经修改过的/etc/下面的文件,并说明修改要解决什么问题?

/etc/profile这个文件,主要是用来配置环境变量。让hadoop命令可以在任意目录下面执行。/etc/hosts  IP映射/etc/sysconfig/network /etc/sysconfig/network-scripts/ifcfg-eth0  静态IP,默认网关,网卡/etc/inittab/ect/sudoers
14
2020
11

MapReduce优化经验

设置合理的map和reduce的个数。合理设置blocksize避免出现数据倾斜combine函数对数据进行压缩小文件处理优化:事先合并成大文件,combineTextInputformat,在hdfs上用mapreduce将小文件合并成SequenceFile大文件(key:文件名,value:文件内容)参数优化
14
2020
11

描述一下hadoop中,有哪些地方使用到了缓存机制,作用分别是什么?

Shuffle中Hbase----客户端/regionserver
14
2020
11

sqoop在导入数据到mysql中,如何不重复导入数据,如果存在数据问题,sqoop如何处理?

FAILED java.util.NoSuchElementException此错误的原因为sqoop解析文件的字段与MySql数据库的表的字段对应不上造成的。因此需要在执行的时候给sqoop增加参数,告诉sqoop文件的分隔符,使它能够正确的解析文件字段。hive默认的字段分隔符为'\001'
14
2020
11

三个datanode中当有一个datanode出现错误时会怎样?

Namenode会通过心跳机制感知到datanode下线会将这个datanode上的block块在集群中重新复制一份,恢复文件的副本数量会引发运维团队快速响应,派出同事对下线datanode进行检测和修复,然后重新上线
10
2020
11

数据的三范式

第一范式(1NF):强调的是列的原子性,即列不能够再分成其他几列。第二范式(2NF):首先是 1NF,另外包含两部分内容,一是表必须有一个主键;二是没有包含在主键中的列必须完全依赖于主键,而不能只依赖于主键的一部分,第二范式(2NF)属性完全依赖于主键  [消除部分子函数依赖] 第三范式(3NF):首先是 2NF,另外非主键列必须直接依赖于主键,不能存在传递依赖。即不能存在:非主键列 A 依赖于非主键列 B,非主键列 B 依赖于主键的情况。第三范式(3NF)属性不依赖于其它非
10
2020
11

List与Set的区别

List和Set都是接口。他们各自有自己的实现类,有无顺序的实现类,也有有顺序的实现类。最大的不同就是List是可以重复的。而Set是不能重复的。List适合经常追加数据,插入,删除数据。但随即取数效率比较低。Set适合经常地随即储存,插入,删除。但是在遍历时效率比较低。
10
2020
11

什么是队列

是一种调度策略,机制是先进先出
10
2020
11

flush的过程

flush是在内存的基础上进行的,首先写入文件的时候,会先将文件写到内存中,当内存写满的时候,一次性的将文件全部都写到硬盘中去保存,并清空缓存中的文件。
10
2020
11

hdfs的体系结构

集群架构:  namenode   datanode  secondarynamenode (active namenode ,standby namenode) journalnode  zkfc内部工作机制:数据是分布式存储的对外提供一个统一的目录结构对外提供一个具体的响应者(namenode)数据的block机制,副本机制Namenode和datanode的工作职责和机制读写数据流程
10
2020
11

combine出现在哪个过程

shuffle过程中具体来说,是在maptask输出的数据从内存溢出到磁盘,可能会调多次Combiner使用时候要特别谨慎,不能影响最后的逻辑结果
10
2020
11

datanode在什么情况下不会备份数据

在客户端上传文件时指定文件副本数量为1
10
2020
11

reduce之后数据的输出量有多大(结合具体场景,比如pi)

Sca阶段的增强日志(1.5T---2T)过滤性质的mr程序,输出比输入少解析性质的mr程序,输出比输入多(找共同朋友)
10
2020
11

hbase过滤器实现原则

可以说一下过滤器的父类(比较过滤器,专用过滤器)过滤器有什么用途:增强hbase查询数据的功能减少服务端返回给客户端的数据量
10
2020
11

hive底层与数据库交互原理

Hive的查询功能是由hdfs + mapreduce结合起来实现的Hive与mysql的关系:只是借用mysql来存储hive中的表的元数据信息,称为metastore
10
2020
11

mapreduce的调度模式(题意模糊,可以理解为yarn的调度模式,也可以理解为mr的内部工作流程)

appmaster作为调度主管,管理maptask和reducetaskAppmaster负责启动、监控maptask和reducetaskMaptask处理完成之后,appmaster会监控到,然后将其输出结果通知给reducetask,然后reducetask从map端拉取文件,然后处理;当reduce阶段全部完成之后,appmaster还要向resourcemanager注销自己
10
2020
11

hadoop中常用的数据压缩算法

Lzo、Gzip、Default、Snapyy如果要对数据进行压缩,最好是将原始数据转为Sequence File  或者 Parquet File(spark)
10
2020
11

我们在开发分布式计算job的时候,是否可以去掉reduce阶段

可以,例如我们的集群就是为了存储文件而设计的,不涉及到数据的计算,就可以将mapReduce都省掉。比如,流量运营项目中的行为轨迹增强功能部分
09
2020
11

hbase内部机制是什么

Hbase是一个能适应联机业务的数据库系统物理存储:hbase的持久化数据是存放在hdfs上存储管理:一个表是划分为很多region的,这些region分布式地存放在很多regionserver上Region内部还可以划分为store,store内部有memstore和storefile版本管理:hbase中的数据更新本质上是不断追加新的版本,通过compact操作来做版本间的文件合并Region的split集群管理:zookeeper  +  hmaster(职责) &nb
09
2020
11

hadoop框架怎么来优化

可以从很多方面来进行:比如hdfs怎么优化,mapreduce程序怎么优化,yarn的job调度怎么优化,hbase优化,hive优化
09
2020
11

用mapreduce怎么处理数据倾斜问题

让各分区的数据分布均匀可以根据业务特点,设置合适的partition策略如果事先根本不知道数据的分布规律,利用随机抽样器抽样后生成partition策略再处理
09
2020
11

Hbase的rowKey怎么创建比较好?列簇怎么创建比较好?

rowKey最好要创建有规则的rowKey,即最好是有序的。经常需要批量读取的数据应该让他们的rowkey连续;将经常需要作为条件查询的关键词组织到rowkey中;列族的创建:按照业务特点,把数据归类,不同类别的放在不同列族
09
2020
11

hive内部表和外部表的区别

Hive 向内部表导入数据时,会将数据移动到数据仓库指向的路径;若是外部表,数据的具体存放目录由用户建表时指定在删除表的时候,内部表的元数据和数据会被一起删除, 而外部表只删除元数据,不删除数据。这样外部表相对来说更加安全些,数据组织也更加灵活,方便共享源数据。
09
2020
11

请简述mapreduce中的combine和partition的作用

combiner是发生在map的最后一个阶段,其原理也是一个小型的reducer,主要作用是减少输出到reduce的数据量,缓解网络传输瓶颈,提高reducer的执行效率。partition的主要作用将map阶段产生的所有kv对分配给不同的reducer task处理,可以将reduce阶段的处理负载进行分摊
09
2020
11

请简述hadoop怎样实现二级排序(就是对key和value双排序)

第一种方法是,Reducer将给定key的所有值都缓存起来,然后对它们再做一个Reducer内排序。但是,由于Reducer需要保存给定key的所有值,可能会导致出现内存耗尽的错误。第二种方法是,将值的一部分或整个值加入原始key,生成一个组合key。这两种方法各有优势,第一种方法编写简单,但并发度小,数据量大的情况下速度慢(有内存耗尽的危险),第二种方法则是将排序的任务交给MapReduce框架shuffle,更符合Hadoop/Reduce的设计思想。这篇文章里选择的是第二种。我们将编写一个
09
2020
11

你认为用java , streaming , pipe方式开发map/reduce , 各有哪些优点

就用过 java 和 hiveQL。Java 写 mapreduce 可以实现复杂的逻辑,如果需求简单,则显得繁琐。HiveQL 基本都是针对 hive 中的表数据进行编写,但对复杂的逻辑(杂)很难进行实现。写起来简单。
09
2020
11

请列出你所知道的hadoop调度器,并简要说明其工作方法

Fifo schedular :                    默认,先进先出的原则Capacity schedular :            计算能力调度器,选择占用最小、优先级高的先执行,依此类推。Fair schedular:              
09
2020
11

请写出以下的shell命令

杀死一个Job:hadoop job -list 得到job的id,然后执行hadoop job -kill jobId就可以杀死一个指定的JobId的job工作了删除hdfs上的/tmp/aaa目录hadoop fs -rmr /tmp/aaa加入一个新的存储节点和删除一个节点增加一个新的节点,在新的节点上执行:hadoop daemon.sh start datanodeHadooop  daemon.sh  start   tasktracker/nodema
09
2020
11

请列出正常的hadoop集群中hadoop都分别需要启动 哪些进程,他们的作用分别都是什么

NameNode:负责管理hdfs中文件块的元数据,响应客户端请求,管理datanode上文件block的均衡,维持副本数量SecondlyNameNode:主要负责checkpoint操作,也可以做冷备,对一定范围内数据做快照性备份。DataNode:存储数据块,负责客户端对数据块的io请求JobTracker:管理任务,并将任务分配给TaskTracter。TaskTracker:执行JobTracker分配的任务。
09
2020
11

简要描述如何安装配置Hadoop,只需描述,无需列出具体步骤

1、使用root账户登录。2、修改IP。3、修改Host主机名。4、配置SSH免密码登录。5、关闭防火墙。6、安装JDK。7、上传解压Hadoop安装包。8、配置Hadoop的核心配置文件hadoop-evn.sh,core-site.xml,mapred-site.xml,hdfs-site.xml9、配置hadoop环境变量10、格式化hadoop namenode-format11、启动节点start-all.sh
08
2020
11

如何将dict转换成url的格式:

#使用urlencode#from urllib.parse import urlencode#post_data={"k1":"v1","k2":"v2"}#ret=urlencode(post_data)#print(ret,type(ret))  #k1=v1&k2=v2 <class 'str'> 
08
2020
11

如何实现用户的登陆认证

#1.cookie session#2.token 登陆成功后生成加密字符串#3.JWT:json wed token缩写 它将用户信息加密到token中,服务器不保存任何用户信息#服务器通过使用保存的密钥来验证token的正确性 
08
2020
11

什么是跨域以及解决方法

#跨域:# 浏览器从一个域名的网页去请求另一个域名的资源时,浏览器处于安全的考虑,不允许不同源的请求#同源策略:#  协议相同#  域名相同#  端口相同#处理方法:# 1.通过JSONP跨域# JSON是一种数据交换格式# JSONP是一种非官方的跨域数据交互协议# jsonp是包含在函数调用中的json# script标签不受同源策略的影响,手动创建一个script标签,传递URL,同时传入一个回调函数的名字# 服务器得到名字后,返回数据时会用这个函数名来包裹住
08
2020
11

PV和UV

#1.pv:页面访问量,没打开一次页面PV计算+1,页面刷新也是#2.UV:独立访问数,一台电脑终端为一个访客
08
2020
11

给用户提供一个接口之前需要提前做什么

#1.跟前端进行和交互,确定前端要什么#2.把需求写个文档保存 
08
2020
11

rest_framework序列化组件的作用,以及一些外键关系的钩子方法

#作用:帮助我们序列化数据#1.choices  get_字段名_display#2.ForeignKey source=orm 操作#3.ManyToManyFiled  SerializerMethodField()#                    def get_字段名():#             &
08
2020
11

django rest framework如何实现的用户访问频率控制

#使用IP/用户账号作为键,每次的访问时间戳作为值,构造一个字典形式的数据,存起来,每次访问时对时间戳列表的元素进行判断,#把超时的删掉,再计算列表剩余的元素数就能做到频率限制了 #匿名用户:使用IP控制,但是无法完全控制,因为用户可以换代理IP登录用户:使用账号控制,但是如果有很多账号,也无法限制 
08
2020
11

简述 django rest framework框架的认证流程

#1.用户请求走进来后,走APIView,初始化了默认的认证方法#2.走到APIView的dispatch方法,initial方法调用了request.user#3.如果我们配置了认证类,走我们自己认证类中的authentication方法 
08
2020
11

django rest framework框架中的视图都可以继承哪些类?

#class View(object):#class APIView(View): 封装了view,并且重新封装了request,初始化了各种组件#class GenericAPIView(views.APIView):#1.增加了一些属性和方法,如get_queryset,get_serializer#class GenericViewSet(ViewSetMixin, generics.GenericAPIView)#父类ViewSetMixin 重写了as_view,返回return cs
08
2020
11

django rest framework框架中都有那些组件?

#1.序列化组件:serializers  对queryset序列化以及对请求数据格式校验#2.路由组件routers 进行路由分发#3.视图组件ModelViewSet  帮助开发者提供了一些类,并在类中提供了多个方法#4.认证组件 写一个类并注册到认证类(authentication_classes),在类的的authticate方法中编写认证逻#5.权限组件 写一个类并注册到权限类(permission_classes),在类的的has_permission方法中编写认
08
2020
11

为什么要使用API

#系统之间为了调用数据。#数据传输格式:#    1.json#     2.xml  
08
2020
11

什么是RPC?

#远程过程调用 (RPC) 是一种协议,程序可使用这种协议向网络中的另一台计算机上的程序请求服务#1.RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。#2.首先,客户机调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。#2.在服务器端,进程保持睡眠状态直到调用信息到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,#3.最后,客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行。 
08
2020
11

接口的幂等性是什么意思?

#1.是系统的接口对外一种承诺(而不是实现)#2.承诺只要调用接口成功,外部多次调用对系统的影响都是一致的,不会对资源重复操作 
08
2020
11

谈谈你对restful规范的认识?

#首先restful是一种软件架构风格或者说是一种设计风格,并不是标准,它只是提供了一组设计#原则和约束条件,主要用于客户端和服务器交互类的软件。     #就像设计模式一样,并不是一定要遵循这些原则,而是基于这个风格设计的软件可以更简洁,更#有层次,我们可以根据开发的实际情况,做相应的改变。#它里面提到了一些规范,例如:#1.restful 提倡面向资源编程,在url接口中尽量要使用名词,不要使用动词         &nb
08
2020
11

django的contenttype组件的作用?

#这个组件保存了项目中所有app和model的对应关系,每当我们创建了新的model并执行数据库迁移后,ContentType表中就会自动新增一条记录#当一张表和多个表FK关联,并且多个FK中只能选择其中一个或其中n个时,可以利用contenttypes 
08
2020
11

使用orm和原生sql的优缺点?

#1.orm的开发速度快,操作简单。使开发更加对象化#执行速度慢。处理多表联查等复杂操作时,ORM的语法会变得复杂#2.sql开发速度慢,执行速度快。性能强
08
2020
11

django中如何根据数据库表生成model中的类?

#1.在settings中设置要连接的数据库#2.生成model模型文件#python manage.py inspectdb#3.模型文件导入到models中#    python manage.py inspectdb > app/models.py 
08
2020
11

解释orm中 db first 和 code first的含义?

#数据持久化的方式:#db first基于已存在的数据库,生成模型#code first基于已存在的模型,生成数据库库 
08
2020
11

django-debug-toolbar的作用?

#1.是django的第三方工具包,给django扩展了调试功能#包括查看sql语句,db查询次数,request,headers等 
08
2020
11

django的模板中filter和simple_tag的区别?

# 自定义filter:{{ 参数1|filter函数名:参数2 }}#    1.可以与if标签来连用#    2.自定义时需要写两个形参# simple_tag:{% simple_tag函数名 参数1 参数2 %}#    1.可以传多个参数,没有限制#    2.不能与if标签来连用 
08
2020
11

django的缓存能使用redis吗?如果可以的话,如何配置?

#1.安装 pip install django-redis#2.在stting中配置CACHES,可以设置多个缓存,根据名字使用        CACHES = {            "default": {                "BACKEND": "
08
2020
11

django内置的缓存机制?

# 全站缓存MIDDLEWARE_CLASSES = (    ‘django.middleware.cache.UpdateCacheMiddleware’, #第一    'django.middleware.common.CommonMiddleware',    ‘django.middleware.cache.FetchFromCacheMiddleware’, #最后) # 视图缓存from dja
08
2020
11

django orm 中如何设置读写分离?

#1.手动读写分离:通过.using(db_name)来指定要使用的数据库#2.自动读写分离:#    1.定义类:如Router#    2.配置Router#        settings.py中指定DATABASE_ROUTERS#        DATABASE_ROUTERS = ['myrouter.Router',] #提高读的性能:多
08
2020
11

django如何实现websocket?

列举django orm中三种能写sql语句的方法。#1.使用execute执行自定义的SQL#2.使用extra方法 #3.使用raw方法#    1.执行原始sql并返回模型#    2.依赖model多用于查询 
08
2020
11

django的Model中的ForeignKey字段中的on_delete参数有什么作用?

#删除关联表中的数据时,当前表与其关联的field的操作#django2.0之后,表与表之间关联的时候,必须要写on_delete参数,否则会报异常 
08
2020
11

django的Form组件中,如果字段中包含choices参数,请使用两种方式实现数据源实时更新。

#1.重写构造函数def def __init__(self, *args, **kwargs):        super().__init__(*args, **kwargs)        self.fields["city"].widget.choices = models.City.objects.all().values_list("id", "name&
08
2020
11

django的Form和ModeForm的作用?

#Form作用:#    1.在前端生成HTML代码#    2.对数据作有效性校验#    3.返回校验信息并展示#ModeForm:根据模型类生成From组件,并且可以操作数据库 
08
2020
11

如何使用django orm批量创建数据?

#bulk_create()#objs=[models.Book(title="图书{}".format(i+15)) for i in range(100)]#models.Book.objects.bulk_create(objs) 
08
2020
11

values和values_list的区别?

#values : 取字典的queryset#values_list : 取元组的queryset 
08
2020
11

F和Q的作用?

#F:对数据本身的不同字段进行操作 如:比较和更新#Q:用于构造复杂的查询条件 如:& |操作 
08
2020
11

filter和exclude的区别?

#取到的值都是QuerySet对象,filter选择满足条件的,exclude:排除满足条件的. 
08
2020
11

select_related和prefetch_related的区别?

#有外键存在时,可以很好的减少数据库请求的次数,提高性能#select_related通过多表join关联查询,一次性获得所有数据,只执行一次SQL查询#prefetch_related分别查询每个表,然后根据它们之间的关系进行处理,执行两次查询 
08
2020
11

only和defer的区别?

#only:从数据库中只取指定字段的内容#defer:指定字段的内容不被检索 
08
2020
11

列举django orm 中所有的方法(QuerySet对象的所有方法)

#<1> all():                  查询所有结果 #<2> filter(**kwargs):       它包含了与所给筛选条件相匹配的对象。获取不到返回None#<3> get(**kwargs):          返回与所给筛选条件相匹配的对象,返回结果
08
2020
11

cookie和session的区别:

#1.cookie:#    cookie是保存在浏览器端的键值对,可以用来做用户认证#2.session:#   将用户的会话信息保存在服务端,key值是随机产生的自符串,value值时session的内容#    依赖于cookie将每个用户的随机字符串保存到用户浏览器上#Django中session默认保存在数据库中:django_session表#flask,session默认将加密的数据写在用户的cookie中 
08
2020
11

Django本身提供了runserver,为什么不能用来部署?(runserver与uWSGI的区别)

#1.runserver方法是调试 Django 时经常用到的运行方式,它使用Django自带的#WSGI Server 运行,主要在测试和开发中使用,并且 runserver 开启的方式也是单进程 。#2.uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http 等协议。注意uwsgi是一种通信协议,而uWSGI是实现uwsgi协议和WSGI协议的 Web 服务器。#uWSGI具有超快的性能、低内存占用和多app管理等优点,并且搭配着Nginx就是一个生产环境了,能够将用户访问
08
2020
11

基于django使用ajax发送post请求时,都可以使用哪种方法携带csrf token?

#1.后端将csrftoken传到前端,发送post请求时携带这个值发送data: {             csrfmiddlewaretoken: '{{ csrf_token }}'        },#2.获取form中隐藏标签的csrftoken值,加入到请求数据中传给后端 data: {        &nb
08
2020
11

django中csrf的实现机制

#第一步:django第一次响应来自某个客户端的请求时,后端随机产生一个token值,把这个token保存在SESSION状态中;同时,后端把这个token放到cookie中交给前端页面;#第二步:下次前端需要发起请求(比如发帖)的时候把这个token值加入到请求数据或者头信息中,一起传给后端;Cookies:{csrftoken:xxxxx}#第三步:后端校验前端请求带过来的token和SESSION里的token是否一致; 
08
2020
11

xxss攻击

#-- XSS攻击是向网页中注入恶意脚本,用在用户浏览网页时,在用户浏览器中执行恶意脚本的攻击。#    -- XSS分类,反射型xss ,存储型xss#    -- 反射型xss又称为非持久型xss,攻击者通过电子邮件等方式将包含注入脚本的链接发送给受害者,#        受害者通过点击链接,执行注入脚本,达到攻击目的。#    -- 持久型xss跟反射型的最大不同是攻击脚本将被永久的存放在目
08
2020
11

Django重定向是如何实现的?用的什么状态码?

#1.使用HttpResponseRedirect#from django.http import HttpResponseRedirect  #2.使用redirect和reverse#状态码:301和302#301和302的区别:#相同点:都表示重定向,浏览器在拿到服务器返回的这个状态码后会自动跳转到一个新的URL地址#不同点:#301比较常用的场景是使用域名跳转。比如,我们访问 http://www.baidu.com 会跳转到 https://www.baidu.com#表示旧
08
2020
11

django的request对象是在什么时候创建的?

#class WSGIHandler(base.BaseHandler):#    request = self.request_class(environ)#请求走到WSGIHandler类的时候,执行__cell__方法,将environ封装成了request 
08
2020
11

列举django中间件的5个方法?

#1.process_request : 请求进来时,权限认证#2.process_view : 路由匹配之后,能够得到视图函数#3.process_exception : 异常时执行#4.process_template_responseprocess : 模板渲染时执行#5.process_response : 请求有响应时执行 
08
2020
11

说一下Django,MIDDLEWARES中间件的作用和应用场景?

#中间件是介于request与response处理之间的一道处理过程,用于在全局范围内改变Django的输入和输出。#简单的来说中间件是帮助我们在视图函数执行之前和执行之后都可以做一些额外的操作#例如:#1.Django项目中默认启用了csrf保护,每次请求时通过CSRF中间件检查请求中是否有正确#token值#2.当用户在页面上发送请求时,通过自定义的认证中间件,判断用户是否已经登陆,未登陆就去登陆。#3.当有用户请求过来时,判断用户是否在白名单或者在黑名单里 
08
2020
11

列举django的内置组件?

#1.Admin是对model中对应的数据表进行增删改查提供的组件#2.model组件:负责操作数据库#3.form组件:1.生成HTML代码2.数据有效性校验3校验信息返回并展示#4.ModelForm组件即用于数据库操作,也可用于用户请求的验证 
08
2020
11

django路由系统中name的作用?

#用于反向解析路由,相当于给url取个别名,只要这个名字不变,即使对应的url改变#通过该名字也能找到该条url
08
2020
11

简述MVC和MTV

#MVC软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)#Model:负责业务对象与数据库的映射(ORM)#View:负责与用户的交互#Control:接受用户的输入调用模型和视图完成用户的请求#Django框架的MTV设计模式借鉴了MVC框架的思想,三部分为:Model、Template和View#Model(模型):负责业务对象与数据库的对象(ORM)#Template(模版):负责如何把页面展示给用户#View(视图):负责业务逻辑,并在适当的
08
2020
11

如何给CBV的程序添加装饰器?

#引入method_decorator模块#1.直接在类上加装饰器#@method_decorator(test,name='dispatch')#class Loginview(View):#    pass#2.直接在处理的函数前加装饰器#@method_decorator(test)#    def post(self,request,*args,**kwargs):pass 
08
2020
11

简述什么是FBV和CBV?

#FBV和CBV本质是一样的#基于函数的视图叫做FBV,基于类的视图叫做CBV#在python中使用CBV的优点:#1.提高了代码的复用性,可以使用面向对象的技术,比如Mixin(多继承)#2.可以用不同的函数针对不同的HTTP方法处理,而不是通过很多if判断,提高代码可读性 
08
2020
11

django请求的生命周期?

#1.wsgi,请求封装后交给web框架 (Flask、Django)     #2.中间件,对请求进行校验或在请求对象中添加其他相关数据,例如:csrf、request.session     - #3.路由匹配 根据浏览器发送的不同url去匹配不同的视图函数    #4.视图函数,在视图函数中进行业务逻辑的处理,可能涉及到:orm、templates => 渲染     - #
08
2020
11

什么是wsgi,uwsgi,uWSGI?

#WSGI:#    web服务器网关接口,是一套协议。用于接收用户请求并将请求进行初次封装,然后将请求交给web框架#    实现wsgi协议的模块:#        1.wsgiref,本质上就是编写一个socket服务端,用于接收用户请求(django)#        2.werkzeug,本质上就是编写一个socket服务端,用于接收用户请求(flask)#uwsgi
08
2020
11

Django 、Flask、Tornado的对比

#1.Django走的是大而全的方向,开发效率高。它的MTV框架,自带的ORM,admin后台管理,自带的sqlite数据库和开发测试用的服务器#给开发者提高了超高的开发效率#2.Flask是轻量级的框架,自由,灵活,可扩展性很强,核心基于Werkzeug WSGI工具和jinja2模板引擎#3.Tornado走的是少而精的方向,性能优越。它最出名的是异步非阻塞的设计方式#Tornado的两大核心模块:#    1.iostraem:对非阻塞式的socket进行简单的封装#
08
2020
11

对Django的认识?

#1.Django是走大而全的方向,它最出名的是其全自动化的管理后台:只需要使用起ORM,做简单的对象定义,它就能自动生成数据库结构、以及全功能的管理后台。#2.Django内置的ORM跟框架内的其他模块耦合程度高。#应用程序必须使用Django内置的ORM,否则就不能享受到框架内提供的种种基于其ORM的便利;#理论上可以切换掉其ORM模块,但这就相当于要把装修完毕的房子拆除重新装修,倒不如一开始就去毛胚房做全新的装修。#3.Django的卖点是超高的开发效率,其性能扩展有限;采用Django的
08
2020
11

什么是织入?什么是织入应用的不同点?

把切面(aspect)连接到其它的应用程序类型或者对象上,并创建一个被通知(advised)的对象,这样的行为叫做织入。织入可以在编译时,加载时,或运行时完成。
08
2020
11

什么是代理?

代理是通知目标对象后创建的对象。从客户端的角度看,代理对象和目标对象是一样的。
08
2020
11

什么是目标对象?

被一个或者多个切面所通知的对象。它通常是一个代理对象。也指被通知(advised)对象。
08
2020
11

什么是切入点?

切入点是一个或一组连接点,通知将在这些位置执行。可以通过表达式或匹配的方式指明切入点。
08
2020
11

Spring的通知是什么?有哪几种类型?

通知是个在方法执行前或执行后要做的动作,实际上是程序执行时要通过SpringAOP框架触发的代码段。 Spring切面可以应用五种类型的通知: ● before:前置通知,在一个方法执行前被调用。 ● after:在方法执行之后调用的通知,无论方法执行是否成功。 ● after-returning:仅当方法成功完成后执行的通知。 ● after-throwing:在方法抛出异常退出时执行的通知。 ● around:在方法执行之前和之后调
08
2020
11

什么是连接点?

被拦截到的点,因为Spring只支持方法类型的连接点,所以在Spring中连接点指的就是被拦截到的方法,实际上连接点还可以是字段或者构造器。
08
2020
11

在Spring AOP中,关注点和横切关注的区别是什么?

关注点是应用中一个模块的行为,一个关注点可能会被定义成一个我们想实现的一个功能。横切关注点是一个关注点,此关注点是整个应用都会使用的功能,并影响整个应用,比如日志,安全和数据传输,几乎应用的每个模块都需要的功能。因此这些都属于横切关注点。
08
2020
11

简单解释一下Spring的AOP?

AOP(Aspect Oriented Programming),即面向切面编程,可以说是OOP(Object Oriented Programming,面向对象编程)的补充和完善。OOP引入封装、继承、多态等概念来建立一种对象层次结构,用于模拟公共行为的一个集合。不过OOP允许开发者定义纵向的关系,但并不适合定义横向的关系,例如日志功能。日志代码往往横向地散布在所有对象层次中,而与它对应的对象的核心功能毫无关系。对于其他类型的代码,如安全性、异常处理和透明的持续性也都是如此。这种散布在各处的无
08
2020
11

Spring支持的ORM框架有哪些?

Spring支持以下ORM框架: ● Hibernate ● MyBatis ● JPA (Java Persistence API) ● TopLink ● JDO (Java Data Objects) ● OJB 
08
2020
11

使用Spring通过什么方式访问Hibernate?

在Spring中有两种方式访问Hibernate: ● 控制反转:HibernateTemplate和Callback。 ● 继承HibernateDAOSupport提供一个AOP拦截器。
08
2020
11

什么是基于Java的Spring注解配置?

 基于Java的配置,允许你在少量的Java注解的帮助下,进行你的大部分Spring配置而非通过XML文件。以@Configuration注解为例,它用来标记类可以当做一个bean的定义,被SpringIOC容器使用。另一个例子是@Bean注解,它表示此方法将要返回一个对象,作为一个bean注册进Spring应用上下文。 
08
2020
11

解释不同方式的自动装配?

有五种自动装配的方式,可以用来指导Spring容器用自动装配方式来进行依赖注入。 ● no:默认的方式是不进行自动装配,通过显式设置ref属性来进行装配。 ● byName:通过参数名自动装配,Spring容器在配置文件中发现bean的autowire属性被设置成byname,之后容器试图匹配、装配和该bean的属性具有相同名字的bean。 ● byType::通过参数类型自动装配,Spring容器在配置文件中发现bean的autowire属性被设置成byType,
08
2020
11

在Spring中如何注入一个java集合?

Spring提供以下几种集合的配置元素: ● <list>类型用于注入一列值,允许有相同的值。 ● <set>类型用于注入一组值,不允许有相同的值。 ● <map>类型用于注入一组键值对,键和值都可以为任意类型。 ● <props>类型用于注入一组键值对,键和值都只能为String类型。
08
2020
11

Spring支持bean的作用域有几种?

Spring框架支持以下五种bean的作用域: ● singleton:bean在每个Springioc容器中只有一个实例。 ● prototype:一个bean的定义可以有多个实例。 ● request:每次http请求都会创建一个bean,该作用域仅在基于web的SpringApplicationContext情形下有效。 ● session:在一个HTTPSession中,一个bean定义对应一个实例。该作用域仅在基于web的SpringApplic
08
2020
11

你怎样定义类的作用域?

当定义一个<bean>在Spring里,我们还能给这个bean声明一个作用域。它可以通过bean定义中的scope属性来定义。如,当Spring要在需要的时候每次生产一个新的bean实例,bean的scope属性被指定为prototype。另一方面,一个bean每次使用的时候必须返回同一个实例,这个bean的scope属性必须设为singleton。 
08
2020
11

一个SpringBeans的定义需要包含什么?

一个SpringBean的定义包含容器必知的所有配置元数据,包括如何创建一个bean,它的生命周期详情及它的依赖。
08
2020
11

什么是Springbeans?

Springbeans是那些形成Spring应用的主干的java对象。它们被SpringIOC容器初始化,装配,和管理。这些beans通过容器中配置的元数据创建。比如,以XML文件中<bean/>的形式定义。Spring框架定义的beans都是单例beans。
08
2020
11

BeanFactory与AppliacationContext有什么区别?

 ● BeanFactory 基础类型的IOC容器,提供完成的IOC服务支持。如果没有特殊指定,默认采用延迟初始化策略。相对来说,容器启动初期速度较快,所需资源有限。 ● ApplicationContext ApplicationContext是在BeanFactory的基础上构建,是相对比较高级的容器实现,除了BeanFactory的所有支持外,ApplicationContext还提供了事件发布、国际化支持等功能。ApplicationContext
08
2020
11

ApplicationContext的实现类有哪些?

FileSystemXmlApplicationContext:此容器从一个XML文件中加载beans的定义,XMLBean配置文件的全路径名必须提供给它的构造函数。 ClassPathXmlApplicationContext:此容器也从一个XML文件中加载beans的定义,这里,你需要正确设置classpath因为这个容器将在classpath里找bean配置。 WebXmlApplicationContext:此容器加载一个XML文件,此文件定义了一个WEB应用的所有b
08
2020
11

什么是SpringIOC容器?

IOC控制反转:SpringIOC负责创建对象,管理对象。通过依赖注入(DI),装配对象,配置对象,并且管理这些对象的整个生命周期。
08
2020
11

Spring配置文件有什么作用?

Spring配置文件是个XML文件,这个文件包含了类信息,描述了如何配置它们,以及如何相互调用。
08
2020
11

简单介绍一下SpringWEB模块?

Spring的WEB模块是构建在applicationcontext模块基础之上,提供一个适合web应用的上下文。这个模块也包括支持多种面向web的任务,如透明地处理多个文件上传请求和程序级请求参数的绑定到你的业务对象。它也有对JakartaStruts的支持。
08
2020
11

解释SpringJDBC、SpringDAO和SpringORM?

Spring-DAO并非Spring的一个模块,它实际上是指示你写DAO操作、写好DAO操作的一些规范。因此,对于访问你的数据它既没有提供接口也没有提供实现更没有提供模板。在写一个DAO的时候,你应该使用@Repository对其进行注解,这样底层技术(JDBC,Hibernate,JPA,等等)的相关异常才能一致性地翻译为相应的DataAccessException子类。 Spring-JDBC提供了Jdbc模板类,它移除了连接代码以帮你专注于SQL查询和相关参数。Spring-JD
08
2020
11

BeanFactory常用的实现类有哪些?

 Bean工厂是工厂模式的一个实现,提供了控制反转功能,用来把应用的配置和依赖从正真的应用代码中分离。常用的BeanFactory实现有DefaultListableBeanFactory、XmlBeanFactory、ApplicationContext等。XMLBeanFactory,最常用的就是org.springframework.beans.factory.xml.XmlBeanFactory,它根据XML文件中的定义加载beans。该容器从XML文件读取配置元数据并用它去创
08
2020
11

粗颗粒和细颗粒如何授权?

对于粗颗粒度的授权可以很容易做系统架构级别的功能,即系统功能操作使用统一的粗颗粒度的权限管理。对于细颗粒度的授权不建议做成系统架构级别的功能,因为对数据级别的控制是系统的业务需求,随着业务需求的变更业务功能变化的可能性很大,建议对数据级别的权限控制在业务层个性化开发,比如:用户只允许修改自己创建的商品信息可以在service接口添加校验实现,service接口需要传入当前操作人的标识,与商品信息创建人标识对比,不一致则不允许修改商品信息。 粗颗粒权限:可以使用过虑器统一拦截url。&n
08
2020
11

什么是粗颗粒和细颗粒权限?

对资源类型的管理称为粗颗粒度权限控制,即只控制到菜单、按钮、方法。粗粒度的例子比如:用户具有用户管理的权限,具有导出订单明细的权限。 对资源实例的控制称为细颗粒度权限管理,即控制到数据级别的权限,比如:用户只允许修改本部门的员工信息,用户只允许导出自己创建的订单明细。 ● 总结: 粗颗粒权限:针对url链接的控制。 细颗粒权限:针对数据级别的控制。 比如:卫生局可以查询所有用户,卫生室只可以查询本单位的用户。 
08
2020
11

Shiro的四种权限控制方式?

● url级别权限控制 ● 方法注解权限控制● 页面标签权限控制● 代码级别权限控制
08
2020
11

Shiro运行原理?

 ● Application Code:应用程序代码,就是我们自己的编码,如果在程序中需要进行权限控制,需要调用Subject的API。 ●Subject:主体代表了当前用户。所有的Subject都绑定到SecurityManager,与Subject的所有交互都会委托给SecurityManager,可以将Subject当成一个门面,而真正执行者是SecurityManager。 ● SecurityManage:安全管理器,所有与安全有关的操作都会与Securi
08
2020
11

Shiro主要的四个组件?

● SecurityManager 典型的Facade,Shiro通过它对外提供安全管理的各种服务。 ● Authenticator 对“Who are you?”进行核实。通常涉及用户名和密码。这个组件负责收集principals 和credentials,并将它们提交给应用系统。如果提交的credentials跟应用系统中提供的 credentials吻合,就能够继续访问,否则需要重新提交principals和credentials,或者直 接终止访问。&nbs
08
2020
11

简单介绍一下Shiro框架?

Apache Shiro是Java的一个安全框架。使用Shiro可以非常容易的开发出足够好的应用。其不仅可以用在JavaSE环境,也可以用在JavaEE环境。Shiro可以帮助我们完成功能:认证、授权、加密、会话管理、与Web集成、缓存等。 三个核心组件:Subject,SecurityManager和Realms。 ● Subject:即“当前操作用户”。但是在Shiro中Subject这一概念并不仅仅指人,也可以是第三方进程、后台帐户(Daemon Account)或其他
08
2020
11

MyBatis在insert插入操作时如何返回主键ID?

数据库为 MySql 时: <insert id="insert" parameterType="com.test.User" keyProperty="userId" useGeneratedKeys="true"> “keyProperty”表示返回的id要保存到对象的属性中,“useGeneratedKeys”表示主键id为自增长模式。 数据库为Oracle时:&nbs
08
2020
11

Mybatis中一级缓存与二级缓存?

● 一级缓存:基于PerpetualCache的HashMap本地缓存,其存储作用域为Session,当flush或close之后,该Session中的所有Cache就将清空。 ● 二级缓存与一级缓存其机制相同,默认也是采用PerpetualCache的HashMap存储,不同在于其存储作用域为Mapper(namespace),并且可自定义存储源,如Ehcache。作用域namespace是指对namespace所对应的配置文件中所有的select操作结果都缓存,这样不同线程之间就可
08
2020
11

Mybatis的编程步骤是什么样的?

● 创建SqlSessionFactory ● 通过SqlSessionFactory创建SqlSession ● 通过sqlsession执行数据库操作 ● 调用session.commit()提交事务 ● 调用session.close()关闭会话
08
2020
11

Mybatis中#和$的区别?

● #相当于对数据加上双引号,$相当于直接显示数据 ● #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。如:order by#user_id#,如果传入的值是111,那么解析成sql时的值为order by"111",如果传入的值是id,则解析成的sql为order by "id". ● $将传入的数据直接显示生成在sql中。如:order by$user_id$,如果传入的值是111,那么解析成sql时的值为order
08
2020
11

​​​​​​​Struts2中有哪些常用结果类型?

● dispatcher:默认的请求转发的结果类型,Action转发给JSP● chain:Action转发到另一个Action(同一次请求)● redirect:重定向,重定向到一个路径信息,路径信息没有限制(不在一个请求中),Action重定向到JSP 4)redirectAction:Action重定向到另一个Action● stream:将原始数据作为流传递回浏览器端,该结果类型对下载的内容和图片非常有用。● freemarker:呈现freemarker模板。● plaintext:返
08
2020
11

Struts2中的#和%分别是做什么的?******

 (1)使用#获取 context 里面数据 <s:iterator value= "list"  var="user">    <s:property value= "#user.username"></s:iterator> (2)向 request 域放值(获取 context 里面数据,写 ognl 时候,首先添加符号#context
08
2020
11

SpringMVC 和 Struts2 的区别?

● Struts2是类级别的拦截,一个类对应一个request上下文,SpringMVC是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应,所以说从架构本身上SpringMVC就容易实现Restful url,而Struts2的架构实现起来要费劲,因为Struts2中Action的一个方法可以对应一个url,而其类属性却被所有方法共享,这也就无法用注解或其他方式标识其所属方法了。● SpringMVC的方法之间基本上独立的,独享request response数
08
2020
11

简单介绍一下Struts2的值栈?

值栈是对应每一个请求对象的数据存储中心。Struts2的一个很重要的特点就是引入了值栈。之前我们通过缓存或者模型驱动在action和页面之间传递数据,数据混乱,并且难以管理,缓存还有时间和数量限制,使用起来非常的困难。值栈的引入解决了这个问题,它可以统一管理页面和action之间的数据,供action、result、interceptor等使用。我们大多数情况下不需要考虑值栈在哪里,里面有什么,只需要去获取自己需要的数据就可以了,大大的降低了开发人员的工作量和逻辑复杂性。
08
2020
11

Struts2的封装方式有哪些?

● 属性封装 在action中设置成员变量,变量名与表单中的name属性值相同 生成变量的set方法实例:获取用户输入的用户名和密码 ● jsp页面如下: <form action="hello" method="post">userName<input type="text" name="userName">userPwd<input type=
08
2020
11

拦截器和过滤器有哪些区别?

 ● 拦截器是基于java的反射机制的,而过滤器是基于函数回调● 拦截器不依赖与servlet容器,而过滤器依赖与servlet容器● 拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用● 拦截器可以访问action上下文、值栈里的对象,而过滤器不能● 在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次。
07
2020
11

Struts2中Action配置的注意事项有哪些?

● name包名称,在struts2的配置文件中,包名不能重复,name并不是真正包名,只是为了管理Action ● namespace和<action>的name属性,决定Action的访问路径(以/开始)● extends继承哪个包,通常开发中继承struts-default包(struts-default包在struts-default.xml中定义)
07
2020
11

Struts2的执行流程了解么?

 ● 关于图中的Key:Servlet Filters:过滤器链,客户端的所有请求都要经过Filter链的处理。 ● Struts Core:Struts2的核心部分 Interceptors:Struts2的拦截器。Struts2提供了很多默认的拦截器,可以完成日常开发的绝大部分工作;而我们自定义的拦截器,用来实现实际的客户业务需要的功能。 User Created:由开发人员创建的,包括struts.xml、Action、Template,这些是每个使
07
2020
11

简单介绍一下Struts2?

Struts2框架是一个按照MVC设计模式设计的WEB层框架,是在Struts 1和WebWork的技术基础上进行了合并的全新的框架。其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开。 我们可以把Struts2理解为一个大大的Servlet,而这个Servlet就是ActionServlet。Struts2在处理客户端请求时
07
2020
11

比较Hibernate三种检索策略的优缺点?

● 立即检索 ● 优点:对应用程序完全透明,不管对象处于持久化状态,还是游离状态,应用程序都可以方便的从一个对象导航到与它关联的对象; ● 缺点:1.select语句太多;2.可能会加载应用程序不需要访问的对象白白浪费许多内存空间; ● 延迟检索 ● 优点:由应用程序决定需要加载哪些对象,可以避免可执行多余的select语句,以及避免加载应用程序不需要访问的对象。因此能提高检索性能,并且能节省内存空间; ● 缺点:应用程序如果希望访问游离状态代理
07
2020
11

请简述Session的特点有哪些?

● 不是线程安全的,因此在设计软件架构时,应该避免多个线程共享同一个Session实例。 ● Session实例是轻量级的,所谓轻量级是指它的创建和销毁不需要消耗太多的资源。这意味着在程序中可以经常创建或销毁Session对象,例如为每个客户请求分配单独的Session实例,或者为每个工作单元分配单独的Session实例。 ● 在Session中,每个数据库操作都是在一个事务(transaction)中进行的,这样就可以隔离开不同的操作(甚至包括只读操作)。
07
2020
11

Session的清理和清空有什么区别?

 Session清理缓存是指按照缓存中对象的状态的变化来同步更新数据库;清空是Session的关闭;
07
2020
11

叙述Session的缓存的作用?

● 减少访问数据库的频率。应用程序从内存中读取持久化对象的速度显然比到数据库中查询数据的速度快多了,因此Session的缓存可以提高数据访问的性能。 ● 保证缓存中的对象与数据库中的相关记录保持同步。当缓存中持久化对象的状态发生了变换,Session并不会立即执行相关的SQL语句,这使得Session能够把几条相关的SQL语句合并为一条SQL语句,以便减少访问数据库的次数,从而提高应用程序的性能。
07
2020
11

Spring的两种代理JDK和CGLIB的区别浅谈?

Java动态代理是利用反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用InvokeHandler来处理。而cglib动态代理是利用asm开源包,对代理对象类的class文件加载进来,通过修改其字节码生成子类来处理。 ● 如果目标对象实现了接口,默认情况下会采用JDK的动态代理实现AOP,或者强制使用CGLIB实现AOP。 ● 如果目标对象没有实现了接口,必须采用CGLIB库,Spring会自动在JDK动态代理和CGLIB之间转换。 
07
2020
11

No Session问题原理及解决方法?

No session问题报错如下:  根据字面上的意思,是指代理不能被初始化,session已经关闭。 ● No session问题产生的原因: 当执行Session的load()方法时,Hibernate不会立即执行查询所查询对象关联的对象(在此我们统称被关联的对象类为A类),仅仅返回A类的代理类的实例,这个代理类具由以下特征: 由Hibernate在运行时动态生成,它扩展了A类,因此它继承了A类的所有属性和方法,但它的实现对于应用程序是透明的
07
2020
11

什么是Hibernate延迟加载?

延迟加载机制是为了避免一些无谓的性能开销而提出来的,所谓延迟加载就是当在真正需要数据的时候,才真正执行数据加载操作。在Hibernate中提供了对实体对象的延迟加载以及对集合的延迟加载,另外在Hibernate3中还提供了对属性的延迟加载。 延迟加载的过程:通过代理(Proxy)机制来实现延迟加载。Hibernate从数据库获取某一个对象数据时、获取某一个对象的集合属性值时,或获取某一个对象所关联的另一个对象时,由于没有使用该对象的数据(除标识符外),Hibernate并不从数据库加载
07
2020
11

如何进行Hibernate的优化?

 ● 数据库设计调整。 ● HQL优化。 ● API的正确使用(如根据不同的业务类型选用不同的集合及查询API)。 ● 主配置参数(日志,查询缓存,fetch_size,batch_size等)。 ● 映射文件优化(ID生成策略,二级缓存,延迟加载,关联优化)。 ● 一级缓存的管理。 ● 针对二级缓存,还有许多特有的策略。 ● 事务控制策略。 
07
2020
11

get和load的区别?

 ● get是立即加载,load是延时加载。 ● get会先查一级缓存,再查二级缓存,然后查数据库;load会先查一级缓存,如果没有找到就创建代理对象,等需要的时候去查询二级缓存和数据库。(这里就体现load的延迟加载的特性。) ● get如果没有找到会返回null,load如果没有找到会抛出异常。 ● 当我们使用session.load()方法来加载一个对象时,此时并不会发出sql语句,当前得到的这个对象其实是一个代理对象,这个代理对象只保存了实体对象的
07
2020
11

关于Hibernate的orm思想你了解多少?

ORM指的是对象关系型映射(Object RelationShip Mapping),指的就是我们通过创建实体类对象和数据库中的表关系进行一一对应,来实现通过操作实体类对象来更改数据库里边的数据信息。这里边起到关键作用的是通过Hibernate的映射文件+Hibernate的核心配置文件。
07
2020
11

Hibernate和JDBC优缺点对比?

● 相同点: 两者都是java数据库操作的中间件。 两者对数据库进行直接操作的对象都是线程不安全的,都需要及时关闭。 两者都可对数据库的更新操作进行显式的事务处理。 ● 不同点: JDBC是SUN公司提供一套操作数据库的规范,使用java代码操作数据库。Hibernate是一个基于jdbc的主流持久化框架,对JDBC访问数据库的代码做了封装。 使用的SQL语言不同:JDBC使用的是基于关系型数据库的标准SQL语言,Hibernate使用
07
2020
11

Hibernate和Mybatis的区别?

● 两者相同点: Hibernate与MyBatis都可以是通过SessionFactoryBuider由XML配置文件生成SessionFactory,然后由SessionFactory生成Session,最后由Session来开启执行事务和SQL语句。其中SessionFactoryBuider,SessionFactory,Session的生命周期都是差不多的。 Hibernate和MyBatis都支持JDBC和JTA事务处理。 ● Mybatis优势:&nb
07
2020
11

Hibernate的查询方式有哪些?

Hibernate的查询方式常见的主要分为三种:HQL,QBC(命名查询),以及使用原生SQL查询(SqlQuery)
07
2020
11

Hibernate二级缓存(SessionFactory的缓存)?

● 二级缓存是SessionFactory范围内的缓存,所有的Session共享同一个二级缓存。在二级缓存中保存持久化实例的散装形式的数据。 ● 持久化不同的数据需要不同的Cache策略,比如一些因素将影响Cache策略的选择:数据的读/写比例、数据表是否能被其他的应用程序所访问等。 ● 设置Hibernate二级缓存需要分两步:首先,确认使用什么数据并发策略。然后,配置缓存过期时间并设置Cache提供器。
07
2020
11

hibernate的一级缓存机制?

● Hibernate一级缓存(Session的缓存): Session实现了第一级Cache,属于事务级数据缓冲。一旦事务结束,缓存随之失效。一个Session的生命周期对应一个数据库事务或一个程序事务。 Session-Cache总是被打开并且不能被关闭的。 Session-Cache保证一个Session中两次请求同一个对象时,取得的对象是同一个Java实例,有时它可以避免不必要的数据冲突。 在对于同一个对象进行循环引用时,不至于产生堆栈溢出。&nb
07
2020
11

hibernate 中对象的三种状态?

瞬时态(临时态、自由态):不存在持久化标识OID,尚未与Hibernate Session关联对象,被认为处于瞬时态,失去引用将被JVM回收。 持久态:存在持久化标识OID,与当前session有关联,并且相关联的session没有关闭,并且事务未提交。 脱管态(离线态、游离态):存在持久化标识OID,但没有与当前session关联,脱管状态改变hibernate不能检测到。
07
2020
11

简述一下hibernate的开发流程?

● 第一步:加载hibernate的配置文件,读取配置文件的参数(jdbc连接参数,数据库方言,hbm表与对象关系映射文件) ● 第二步:创建SessionFactory会话工厂(内部有连接池) ● 第三步:打开session获取连接,构造session对象(一次会话维持一个数据连接,也是一级缓存) ● 第四步:开启事务 ● 第五步:进行操作 ● 第六步:提交事务 ● 第七步:关闭session(会话)将连接释放 ● 第八步:
07
2020
11

如何监控Quartz的job执行状态:运行中,暂停中,等待中?

通过往表(新建一个操作日志表)里插入日志的形式: ● 运行中:通过JobListener监听器来实现运行时更改表信息。 ● 暂停中:调用scheduler.pauseTrigger()方法时,更改表中job信息。 ● 等待中:新添加的job默认给其等待中的状态,也是更改表中的job信息但是上面这种形式的麻烦之处是得频繁的往表里插入数据。
07
2020
11

Cron表达式详解?

Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义。 ● Seconds(秒):可出现",-*/"四个字符,有效范围为0-59的整数。 ● Minutes(分钟):可出现",-*/"四个字符,有效范围为0-59的整数。 ● Hours(小时):可出现",-*/"四个字符,有效范围为0-23的整数。 ● DayofMonth(日of月):可出现",-
07
2020
11

配置文件applicationContext_job.xml各个属性作用?

● Job:表示一个任务(工作),要执行的具体内容。 ● JobDetail:表示一个具体的可执行的调度程序,Job是这个可执行程调度程序所要执行的内容,另外JobDetail还包含了这个任务调度的方案和策略。 ● Trigger:代表一个调度参数的配置,什么时候去调。 ● Scheduler:代表一个调度容器,一个调度容器中可以注册多个JobDetail和Trigger。当Trigger与JobDetail组合,就可以被Scheduler容器调度了。 &
07
2020
11

什么是Quartz框架?

Quartz是一个开源的作业调度框架,它完全由Java写成,并设计用于J2SE和J2EE应用中。它提供了巨大的灵活性而不牺牲简单性。你能够用它来为执行一个作业而创建简单的或复杂的调度。 
07
2020
11

AOF的优缺点?

● 优点: 使用AOF持久化会让Redis变得非常耐久(much more durable):你可以设置不同的fsync策略,比如无fsync,每秒钟一次fsync,或者每次执行写入命令时fsync。AOF的默认策略为每秒钟fsync一次,在这种配置下,Redis仍然可以保持良好的性能,并且就算发生故障停机,也最多只会丢失一秒钟的数据(fsync会在后台线程执行,所以主线程可以继续努力地处理命令请求)。AOF文件是一个只进行追加操作的日志文件(append onlylog),因此对AO
07
2020
11

RDB的优缺点?

 优点:RDB是一个非常紧凑(compact)的文件,它保存了Redis在某个时间点上的数据集。这种文件非常适合用于进行备份:比如说,你可以在最近的24小时内,每小时备份一次RDB文件,并且在每个月的每一天,也备份一个RDB文件。这样的话,即使遇上问题,也可以随时将数据集还原到不同的版本。RDB非常适用于灾难恢复(disaster recovery):它只有一个文件,并且内容都非常紧凑,可以(在加密后)将它传送到别的数据中心,或者亚马逊S3中。RDB可以最大化Redis的性能:父进程在
07
2020
11

Redis的持久化是什么?

RDB持久化:该机制可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot)。 AOF持久化:记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集。AOF文件中的命令全部以Redis协议的格式来保存,新命令会被追加到文件的末尾。Redis还可以在后台对AOF文件进行重写(rewrite),使得AOF文件的体积不会超出保存数据集状态所需的实际大小。 AOF和RDB的同时应用:当Redis重启时,它会优先使用AOF
07
2020
11

Redis的优缺点?

● 优点: 性能极高–Redis能支持超过100K+每秒的读写频率。 丰富的数据类型–Redis支持二进制案例的Strings,Lists,Hashes,Sets及Ordered Sets数据类型操作。 原子–Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。attention原子性定义:例如,A想要从自己的帐户中转1000块钱到B的帐户里。那个从A开始转帐,到转帐结束的这一个过程,称之为一个事务。如果在A的帐户已经减去了1000块
07
2020
11

Redis有哪几种数据结构?

● String——字符串 String数据结构是简单的key-value类型,value不仅可以是String,也可以是数字(当数字类型用Long可以表示的时候encoding就是整型,其他都存储在sdshdr当做字符串)。 ● Hash——字典 在Memcached中,我们经常将一些结构化的信息打包成hashmap,在客户端序列化后存储为一个字符串的值(一般是JSON格式),比如用户的昵称、年龄、性别、积分等。 ● List——列表 List
07
2020
11

Memcache与Redis的区别都有哪些?

 ● 存储方式不同,Memcache是把数据全部存在内存中,数据不能超过内存的大小,断电后数据库会挂掉。Redis有部分存在硬盘上,这样能保证数据的持久性。 ● 数据支持的类型不同memcahe对数据类型支持相对简单,redis有复杂的数据类型。 ● 使用底层模型不同 它们之间底层实现方式以及与客户端之间通信的应用协议不一样。Redis直接自己构建了VM机制,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求。 ● 支持的value大小不一样re
07
2020
11

Redis最适合的场景有哪些?

● 会话缓存(Session Cache) ● 全页缓存(FPC) ● 队列 ● 排行榜/计数器 ● 发布/订阅  
07
2020
11

Redis常见的性能问题都有哪些?如何解决?

 ● Master写内存快照,save命令调度rdbSave函数,会阻塞主线程的工作,当快照比较大时对性能影响是非常大的,会间断性暂停服务,所以Master最好不要写内存快照。 ● Master AOF持久化,如果不重写AOF文件,这个持久化方式对性能的影响是最小的,但是AOF文件会不断增大,AOF文件过大会影响Master重启的恢复速度。Master最好不要做任何持久化工作,包括内存快照和AOF日志文件,特别是不要启用内存快照做持久化,如果数据比较关键,某个Slave开启A
07
2020
11

Redis的特点?

Redis是由意大利人Salvatore Sanfilippo(网名:antirez)开发的一款内存高速缓存数据库。Redis全称为:Remote Dictionary Server(远程数据服务),该软件使用C语言编写,典型的NoSQL数据库服务器。Redis是一个key-value存储系统,它支持丰富的数据类型,如:string、list、set、zset(sorted set)、hash。 Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据
07
2020
11

ActiveMQ如果消息发送失败怎么办?

Activemq有两种通信方式,点到点形式和发布订阅模式。 如果是点到点模式的话,如果消息发送不成功,此消息默认会保存到activemq服务端知道有消费者将其消费,所以此时消息是不会丢失的。 如果是发布订阅模式的通信方式,默认情况下只通知一次,如果接收不到此消息就没有了。这种场景只适用于对消息送达率要求不高的情况。如果要求消息必须送达不可以丢失的话,需要配置持久订阅。每个订阅端定义一个id,在订阅是向activemq注册。发布消息和接收消息时需要配置发送模式为持久化。此时如果
07
2020
11

了解哪些消息队列?

ActiveMQ、RabbitMQ、kafka。 RabbitMQ是使用Erlang编写的一个开源的消息队列,本身支持很多的协议:AMQP,XMPP,SMTP,STOMP,也正因如此,它非常重量级,更适合于企业级的开发。同时实现了Broker构架,这意味着消息在发送给客户端时先在中心队列排队。对路由,负载均衡或者数据持久化都有很好的支持。 ActiveMQ是Apache下的一个子项目。类似于ZeroMQ,它能够以代理人和点对点的技术实现队列。同时类似于RabbitMQ,它少量
07
2020
11

如何防止消息重复发送?

解决方法很简单:增加消息状态表。通俗来说就是一个账本,用来记录消息的处理状态,每次处理消息之前,都去状态表中查询一次。如果已经有相同的消息存在,那么不处理,可以防止重复发送。
07
2020
11

如何使用ActiveMQ解决分布式事务?

在互联网应用中,基本都会有用户注册的功能。在注册的同时,我们会做出如下操作: ● 收集用户录入信息,保存到数据库 ● 向用户的手机或邮箱发送验证码 如果是传统的集中式架构,实现这个功能非常简单:开启一个本地事务,往本地数据库中插入一条用户数据,发送验证码,提交事物。但是在分布式架构中,用户和发送验证码是两个独立的服务,它们都有各自的数据库,那么就不能通过本地事物保证操作的原子性。这时我们就需要用到ActiveMQ(消息队列)来为我们实现这个需求。在用户进行注册操作的
30
2020
10

说明异步请求的get和post方法的区别

1.使用Get请求时,参数在URL中显示,而使用Post方式,则不会显示出来2.使用Get请求发送数据量小,Post请求发送数据量大get 请求:post 请求:
30
2020
10

如何转化成JSON字符串

JSON.stringify(json)
30
2020
10

JSON数据的解析方法

1.JSON.parse(json)2.new Function(“return ” + json) (); 3.eval(“(”+json+”)”)
30
2020
10

AJAX实现表单验证用户注册流程

用户触发ajax请求,后台接口返回json格式字符串
30
2020
10

AJAX能够处理哪些格式的文件

https://developer.mozilla.org/zh-CN/docs/Web/API/XMLHttpRequestXMLHttpRequest 2.0 新增了多种类型支持txt,json,js,图片,文档等等…
30
2020
10

AJAX如何调用JSON数据

答:xml.responseText
30
2020
10

AJAX的流程是什么?

1.客户端产生js的事件2.创建XMLHttpRequest对象3.对XMLHttpRequest进行配置4.通过AJAX引擎发送异步请求5.服务器端接收请求并且处理请求,返回html或者xml内容6.XML调用一个callback()处理响应回来的内容7.页面局部刷新
30
2020
10

AJAX中的跨域问题:什么是跨域?如何解决跨域问题?

答:域不一样的,即为跨域,包括(协议,域名,端口号)1.// 指定允许其他域名访问header(‘Access-Control-Allow-Origin:*’);2.使用jsonp
30
2020
10

除了AJAX还有什么模板可以与后台交互

jsonp
28
2020
10

什么是JSON,JSON的格式

答:JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。JSON 语法是 JavaScript 对象表示语法的子集。数据在键值对中数据由逗号分隔花括号保存对象方括号保存数组
28
2020
10

使用异步加载获取JS数据至少两种方法?

答:post,get
28
2020
10

什么是AJAX ,AJAX原理

答:AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML)通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。传统的网页(不使用 AJAX)如果需要更新内容,必须重载整个网页页面。原理:XMLHttpRequest
28
2020
10

如何实现局部内容和后台交互时的变化

答:使用ajax
28
2020
10

你使用过哪些Javascript库?

答:jQuery Zepto(注意了:面试官可能问你这2个库都什么区别)jQuery是在Web上应用很广泛的JavaScript库,它提供了大量的工具和API函数,使用它的人相当普遍,使用的门槛也比较低。Zepto最初是为移动端开发的库,是jQuery的轻量级替代品,因为它的API和jQuery相似,而文件更小,对任何项目都是个不错的选择,Zepto是不支持IE浏览器。针对移动端程序,Zepto还有一些基本的触摸事件可以用来做触摸屏交互,如:tap事件——tap,singleTap,double
28
2020
10

编写一个jQuery的扩展方法(插件),让调用的对象设置宽度为200像素

jQuery.fn.extend({setWidth:function() {$(this).width(200);return this;}})
28
2020
10

用jQuery获取标签

div内部的信息当中的内容的代码为______? 答:$(“#con”).text()
28
2020
10

举出不少于6种的jQuery中对动画的操作命令,并说明其含义:_________、_________、_________、_________、_________、_________

28
2020
10

jQuery中的两个合成事件是_________和__________

答:toggle、hover
28
2020
10

jQuery动画效果的实现

答:$ele().animate({top:100},500)
28
2020
10

jQuery中对于节点的操作有哪些(举出不少于8种)?写出含义以及用法。

28
2020
10

jQuery中获取相对文档的坐标的方法是什么?

答:offset(),获取匹配元素在当前视口的相对偏移。返回的对象包含两个整型属性:top 和 left,以像素计。此方法只对可见元素有效。position()获取匹配元素相对定位父级的偏移。没有定位父级即为文档坐标返回的对象包含两个整型属性:top 和 left。为精确计算结果,请在补白、边框和填充属性上使用像素单位。此方法只对可见元素有效。
28
2020
10

jQuery中绑定事件的方法是什么,尝试书写例子:为id名为con的div绑定一个事件,事件为弹出一个数字0。获取标签时不要使用原生javascript方法。

答:$(“#con”).click(function(){alert(0)})
27
2020
10

jQuery中对动画的操作命令有哪些?举出不少于8种,并说明含义

animate(),fadeIn(),fadeOut(),slideDown(),slideUp(),hide(),show(),toggle()
27
2020
10

使用jQuery中的链式书写方法书写如下代码

$(“#test”).css(“color”,”red”).width(20)
27
2020
10

jQuery中,使用nth-child(3n+2)所选中的是以下哪些

nth-child()匹配其父元素下的第N个子或奇偶元素‘:eq(index)’ 只匹配一个元素,而这个将为每一个父元素匹配子元素。:nth-child从1开始的,而:eq()是从0算起的2,5,8
27
2020
10

jQuery中 :odd :gt 这两种选择器的含义以及用法举例

:odd 匹配所有索引值为奇数的元素,从 0 开始计数 $(“div:odd”):gt(index) 匹配所有大于给定索引值的元素 $(“div:gt(2)”)
27
2020
10

列举jQuery的优势

答:兼容性处理,dom操作,获取元素简单,封装了ajax…
27
2020
10

(document).ready与window.onload有何区别?

答:(document).ready 对于支持DOMContentLoaded事件的浏览器,会使用该事件,所有的节点渲染完毕,就执行,可以调用多次,不支持的就使用 onload事件window.onload事件要等到所有的资源加载完毕,如图片,视频,js脚本等,只能绑定一次,后面绑定的覆盖前面所绑定的事件
27
2020
10

jQuery中,如何阻止事件冒泡和浏览器默认行为?

答:e.preventDefault();e.stopPropagation();
27
2020
10

用jQuery如何更换背景色

答:$(element).css({backgroundColor:”red”})
27
2020
10

用jQuery如何获取标签内容

答: ( e l e m e n t ) . t e x t ( ) / (element).text()/ (element).text()/(element).html();
27
2020
10

用jQuery如何获取标签

答:$(“div”)
27
2020
10

用jQuery如何获取标签的id

答:$(element).attr(“id”)
27
2020
10

JQuery链式写法原理

答:jQuery里的方法调用完毕返回return this
27
2020
10

jQuery如何获取元素?

答:$(selector)
27
2020
10

Js用过的插件

答:tween.js,swiper.js,touch.js,zepto.js
27
2020
10

jQuery对象和Dom对象相互转换

答:jQuery对象转原生Dom对象 $(“div”).get(0)原生Dom对象转jQuery对象 $(ele)
27
2020
10

jQuery绑定事件的方法书写至少两种?

答:bind(),on(),click()
27
2020
10

反向代理

答: 反向代理(Reverse Proxy),以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求的客户端,此时代理服务器对外表现为一个反向代理服务器。理解起来有些抽象,可以这么说:A向B借钱,B没有拿自己的钱,而是悄悄地向C借钱,拿到钱之后再交给A,A以为是B的钱,他并不知道C的存在。
27
2020
10

说一下什么是垃圾回收

(补充:JavaScript 中的内存管理是自动执行的,而且是不可见的。我们创建基本类型、对象、函数……所有这些都需要内存。当不再需要某样东西时会发生什么? JavaScript 引擎是如何发现并清理它?)答:(1)垃圾回收概述回答一: 垃圾回收机制(GC:Garbage Collection),执行环境负责管理代码执行过程中使用的内存。垃圾收集器会定期(周期性)找出那些不在继续使用的变量,然后释放其内存。但是这个过程不是实时的,因为其开销比较大,所以垃圾回收器会按照固定的时间间隔周期性的执行。
27
2020
10

es6面向对象

答:使用关键词class定义类来实现面向对象编程
27
2020
10

es5的面向对象

说出特点就好答:特点:抽象、封装、继承、多态继承的三种方式:(1)原型链继承;(2)call和play继承;(3)call和play组合继承
27
2020
10

解决跨域的方法

答:(1)通过jsop解决跨域(2)通过修改document.domain来跨子域(3)使用window.name来进行跨域(4)使用HTML5中新引进的window.postMessage方法来跨域
27
2020
10

事件委托

答:利用事件冒泡的原理,子元素的事件会冒泡到父元素,可以只给父元素添加事件,通过事件目标判断元素。优点:节省内存,动态添加的子元素也包含事件
27
2020
10

说一下事件冒泡、事件捕获的区别

这个问题和事件流回答一样即可先说下什么是事件流吧!!!事件流:事件流分为三个阶段(1)捕获阶段(2)目标阶段(3)冒泡阶段捕获过程:1.window——>2.document——>3.body——>4.div——>5.text目标过程:捕获过程的5冒泡过程:6.text——>7.div——>8.body——>9.document——>10.window事件捕获:首先window会捕获到事件,之后document、documentElement、bo
27
2020
10

描述一下对"异步"和"同步的理解"

答:异步:不按顺序执行,同一时刻只能执行一个事件同步:按顺序执行,同一时刻只能执行一个事件
27
2020
10

闭包

答:函数嵌套函数,内部函数使用外部函数的变量或者参数,使其长期驻扎在内存中,就形成了闭包!!!缺点:容易引起内存泄漏使用场景:(1)变量私有化(2)onclick(操作DOM元素是需要相应的索引值)
27
2020
10

说一下html5的离线储存

答:(主要问的是localStorage和sessionStorage)(1)localStorage长期储存在数据,浏览器关闭后数据不会丢失。(2)sessionStorage数据在浏览器关闭后自动删除。
27
2020
10

::before和:after中双冒号和单冒号有什么区别(这个不是常问的!!!)

先解释一下这两个伪元素,本质上并不支持伪元素的双冒号(::)写法,而是忽略掉了其中的一个冒号,仍以单引号来解释,所以等同变相支持了::before答:在before元素前面,after元素的后面插入内容(经典场景使用font-face小图标结合content:" ")
27
2020
10

position:fixed,在Android下无效怎么处理

答:使用JS处理判断当前设备是否是Android,如果是则添加监听当前页面滚动情况,设置position:absolute,不断改变top值。
27
2020
10

css定义的权重

答:标签权重为1、class权重为10、id权重为100、style权重为1000
27
2020
10

css优化、提高性能的方法有哪些

答:(1)加载性能(2)选择器性能(3)渲染性能(4)可维护性
27
2020
10

说一下怎么减少页面加载时间的方法

答:(1)压缩css、js文件(2)合并js、css文件,减少http请求(3)外部js、css文件放在最底下(4)减少dom操作,尽可能用变量替代不必要的dom操作
27
2020
10

描述一下cookies,sessionStorage和localStorage的区别

答:(1)cookies在浏览器和服务器间来回传递,sessionstorage和localStorage不会。(2)sessionStorage和localStorage的存储空间更大。(3)sessionStorage和localStorage有更多丰富易用的接口。(4)sessionStorage和localStorage各自独立的存储空间。
27
2020
10

rem,px,em之间的关系和区别

答:px实际上就是像素,用PX设置字体大小时,比较稳定和精确。但是px不支持用户进行浏览器缩放或者不同移动端的兼容,因为像素是固定的,屏幕大小是变化的。em是根据父元素来对应大小,是一种相对值;em值 = 1/父元素的font-size*需要转换的像素值。进行任何元素设置,都有可能需要知道他父元素的大小,这很不方便。rem是根据根元素html的font-size来对应大小,1rem = 16px,可以在根元素html中写固定像素也可以写百分比,然后在具体的标签上设置rem。
27
2020
10

说一下对css盒模型的理解

答:css盒子模型 又称框模型 (Box Model) ,包含了元素内容(content)、内边距(padding)、边框(border)、外边距(margin)几个要素。盒模型有两种:标准盒模型和IE盒模型。标准盒模型中width和height指的是内容区域的宽度和高度,增加内边距、边框和外边距不会影响内容区域的尺寸,但是会增加元素框的总尺寸;但在IE6浏览器的width不是内容的宽度,而是内容、内边距和边框的宽总和;IE的content部分包含了border和padding。
23
2020
10

什么是设计模式?你是否在你的代码里面使用过任何设计模式?

 设计模式是世界上各种各样程序员用来解决特定设计问题的尝试和测试的方法。设计模式是代码可用性的延伸。
23
2020
10

请列举出在JDK中几个常用的设计模式?

单例模式(Singleton pattern)用于Runtime,Calendar和其他的一些类中; 工厂模式(Factory pattern)被用于各种不可变的类如 Boolean,像Boolean.valueOf; 观察者模式(Observer pattern)被用于 Swing 和很多的事件监听中; 装饰器设计模式(Decorator design pattern)被用于多个 Java IO 类中。
23
2020
10

如何综合使用我们学过的设计模式来构建合理的应用程序结构

是采用接口进行隔离,然后同时暴露值对象和工厂类,如果是需要数据存储的功能,又会通过DAO 模式去与数据存储层交互。
23
2020
10

什么是替换法则(LSP)

 使用指向基类(超类)的引用的函数,必须能够在不知道具体派生类(子类)对象类型的情况下使用
23
2020
10

什么是开放-封闭法则(OCP)

 可扩展但是不可以更改已有的模块 对扩展是开放的 对修改是封闭
23
2020
10

代码示例:DAO模式的实现方法

public interface CustomerDAO {public int insertCustomer(...);public Collection selectCustomersVO(...);}
23
2020
10

简述什么是DAO模式,以及他解决的问题,应用的环境,解决的方案,模式的本质

 数据访问对象 解决问题:根据数据源不同,数据访问也不同。根据存储的类型(关系数据库、 面向对象数据库、纯文件等)和供应商实现不同,持久性存储(如数据库)的访问差别也很大。如何对存储层以外的模块屏蔽这些复杂性,以提供统一的调用存储实现。程序的分布式问题 解决方案:式将数据访问逻辑抽象为特殊的资源,也就是说将系统资源的接口从 其底层访问机制中隔离出来;通过将数据访问的调用打包,数据访问对象可以 促进对于不同数据库类型和模式的数据访问。 DAO的本质就是一层屏蔽一种变化 本质:分层,是系统
23
2020
10

代码示例:值对象模式的实现方法

public class UserModel{    private String userId;    private String userName;    public void setUserId(String id){        this.userId = id;    }    public String getUserId(){ 
23
2020
10

简述什么是值对象模式,以及他解决的问题,应用的环境,解决的方案,模式的本质

用来把一组数据封装成一个对象的模式 解决问题:在远程方法的调用次数增加的时候,相关的应用程序性能将会有很大的下降 解决方案:使用值对象的时候,可以通过仅仅一次方法调用来取得整个对象,而不是使用多次方法调用以得到对象中每个域的数值 本质:就是把需要传递的多个值封装成一个对象一次性传过去
23
2020
10

简述什么是工厂模式,以及他解决的问题,应用的环境,解决的方案,模式的本质

利用工厂来解决接口选择的问题的模式 应用环境:当一个类无法预料要创建哪种类的对象或是一个类需要由子类来指定 创建的对象时,就需要用到工厂模式 解决方案:定义一个创建对象的接口,让子类来决定具体实例化哪一个类 本质就是根据不同的情况来选择不同的接口