1、简述下src和href的区别?
src用于替换当前元素,href用于在当前文档和引用资源之间确立联系。
src:指向的内容会嵌入到文档中当前标签的所在位置,在请求src资源时会将指向的资源下载并应用到文档内
href:指向网络资源的所在位置,建立和当前元素(锚点)或当前文档(链接)之间的链接
2、什么是CSS Hack?
css Hack是 通过在css样式中加入一些特殊符号,已达到被不同浏览器识别并应用到不同css样式的目的。
.bdw{300px;_200px;} _width只有ie6能识别,所以其他浏览器识别width,ie6会执行_200px;
3、简述下你了解到的Web攻击技术?
sql入注:把SQL命令插入到web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意sql命令。
XSS:它允许恶意web用户将代码植入到提供给其它用户使用的页面中(在论坛博客中加入恶意链接,当用户点击链接时,就会把隐私信息发送到攻击者的电脑,导致被窃取信息)
4、浏览器是如何渲染界面的?
DNS域名解析-建立TCP连接-发起http请求-接受响应结果-浏览器解析html-浏览器布局渲染
附带浏览器中输入url发生了什么?
解析域名-建立tcp连接-发起http请求-接收响应结果-浏览器解析html-浏览器布局渲染
400:Bad Request 请求报文中存在语法错误
5、讲述下对MVC、MVVM的理解?
MVC是一种架构模式,M表示Model,V表示视图View,C表示控制器Controller
MVVM是一种设计思想,M表示Model,V表示视图View,VM表示数据与模型(区别MVC中,C是用于跳转至哪个页面,而VM只是将数据进行转换或者封装)
6、写一个function,清除字符串前后的空格 兼容所有浏览器
function myTrim(x) { return x.replace(/^s+|s+$/gm,''); } function myFunction() { var str = myTrim(" Hello World11! "); console.log(str); } myFunction(); Jquery: trim()
7、简述同步和异步的区别?
同步任务指的是,在主线程上排队执行的任务,只有前一个任务执行完毕,才能执行后一个任务;
异步任务指的是,不进入主线程、而进入"任务队列"(task queue)的任务,只有等主线程任务执行完毕,"任务队列"开始通知主线程,请求执行任务,该任务才会进入主线程执行。
8、怎样添加 创建 移除、赋值、移动、查找节点?
var para=document.createElement("p"); //创建新的 <p> 元素 var node=document.createTextNode("这是新段落。"); //创建了一个文本节点 para.appendChild(node); //向 <p> 元素追加这个文本节点 var element=document.getElementById("div1");//向一个已有的元素追加这个新元素 element.appendChild(para); //向这个已有的元素追加新元素
(2)添加、移除、替换、之前插入、之后插入、复制 appendChild() removeChild() replaceChild() insertBefore() insertAfter() cloneNode() (3)查找 document.getElementsByTagName("") //通过标签名称 document.getElementsByName("") //通过元素的Name属性的值 document.getElementById("") //通过元素Id,唯一性 document.getElementsByClassName(""); //通过类查找 document.querySelector("")
9、清除数组中重复的元素?
function unique(arr){ var result = []; for(var i=0;i<arr.length;i++){ if(result.indexOf(arr[i])==-1){ result.push(arr[i]) } } return result; }
10、说说px、em、rem和各自的使用场景?
px就是css中最基本的长度单位,
em是相对单位 ,相对的基准点是浏览器字体大小(若浏览器默认字体大小是16px,那1em = 16px), 用来解决,鼠标缩放浏览器大小导致的界面错乱,字体大小相对于父元素 html{font-size: 62.5%} 16*62.5% = 10px
rem 也是相对单位,只相对<html>计算,这就是说只要在根节点设定好参考值,那么全篇的1rem都相等
rem用来响应式开发
11、$(document).find(“div>p”).html();语句的作用?
整个界面搜索所有div后面的所有p标签下的html代码
element element 选取div内部包含的所有p
12、ajax beforeSend() async:true dataType
beforeSend方法用于在向服务器发送请求前添加一些处理函数,
常见的一种效果,在用ajax请求时,没有返回前会出现前出现一个转动的loading小图标或者“内容加载中..”,用来告知用户正在请求数据。这个就可以用beforeSend方法来实现。
dataType:服务器返回的数据类型
async:true 是否异步,默认异步
13、给string添加一个方法,然后将每个字符之间添加空格返回
var str = "hello world"; var str1 = str.split("").join(" "); console.log(str1);
14、请简述promise的编程模式,和应用场景
基于上面的应用场景发现promise
可以有三种状态,分别是pedding
、Fulfilled
、 Rejected
Pending Promise
对象实例创建时候的初始状态Fulfilled
可以理解为成功的状态Rejected
可以理解为失败的状态
所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。从语法上说,Promise 是一个对象,从它可以获取异步操作的消息
var promise = new Promise(function(resolve, reject) { // ... some code if (/* 异步操作成功 */){ resolve(value); } else { reject(error); } });
15、display:none;和visible:hidden;区别
display:none ---不为被隐藏的对象保留其物理空间,即该对象在页面上彻底消失,通俗来说就是看不见也摸不到。
visible:hidden--- 使对象在网页上不可见,但该对象在网页上所占的空间没有改变,通俗来说就是看不见但摸得到。
16、描述下间歇调用和超时调用?
超时调用——setTimeOut
间歇调用——setInterval
- 按照指定的时间重复执行代码,直至间歇调用被取消或者页面被卸载。接受参数与setTimeOut相同。
-
var num = 0; var max = 10; var intervalId = null; function incrementNumber() { num++; if (num == max) { clearInterval(intervalId); alert("Done"); } } intervalId = setInterval(incrementNumber, 500);
17、兼容模式和怪异模式下的盒模型的区别?
-
在标准模式下,一个块的总宽度= width + margin(左右) + padding(左右) + border(左右)
-
在怪异模式下,一个块的总宽度= width + margin(左右)(即width已经包含了padding和border值)
18、选择器有哪些?优先级怎样?
1.标签选择器(如:body,div,p,ul,li)
2.类选择器(如:class="head",class="head_logo")
3.ID选择器(如:id="name",id="name_txt")
4.全局选择器(如:*号)
5.组合选择器(如:.head .head_logo,注意两选择器用空格键分开)
6.后代选择器 (如:#head .nav ul li 从父集到子孙集的选择器)
7.群组选择器 div,span,img {color:Red} 即具有相同样式的标签分组显示
8.继承选择器(如:div p,注意两选择器用空格键分开)
9.伪类选择器(如:就是链接样式,a元素的伪类,4种不同的状态:link、visited、active、hover。)
10.字符串匹配的属性选择符(^ $ *三种,分别对应开始、结尾、包含)
11.子选择器 (如:div>p ,带大于号>)
12.CSS 相邻兄弟选择器器 (如:h1+p,带加号+)
!important > 行内样式>ID选择器 > 类选择器 > 标签 > 通配符 > 继承 > 浏览器默认属性