互联网公司面试总结
1、HTML语义化的含义
指的是要根据网页内容选择合适的标签,便于开发者阅读和写出更优雅的代码,同时也有助于搜索引擎更容易理解
好处:1、即使在没有css的情况下,页面也能呈现很好的内容结构和代码结构
2、用户体验的上升
3、有利于SEO
4.有利于其他设备解析
2、盒子模型,行内元素,块级元素
盒子模型:遵循w3c标准的盒子模型和IE盒子模型
块级元素:div,p,h1~h6,caption,form, hr,ol, ul,li,table,fieldset。。。
行内元素:span,a,em,img,input,label,select,textarea
区别:块级元素会独占一行,其宽度会自动填满其父元素宽度,行内元素不会独占一行,其宽度随元素的内容而变化
行内元素设置width,height无效
3、常见的几种浏览器兼容问题及解决方案
答:1、随便写几个标签,不加样式控制的情况下,各自的margin 和padding差异较大
CSS里 *{margin:0;padding:0;}
2、图片默认又间距
使用float为img布局
4、css选择器优先级
!important > 行内样式>ID选择器 > 类选择器 > 标签 > 通配符 > 继承 > 浏览器默认属性
优先级相同时,则采用就近原则,选择最后出现的样式;
继承得来的属性,其优先级最低;
5、input类型,readyonly 与 disable的区别
input类型:button、text、checkbox、radio、submit、password、email。image、file、reset
Readonly和Disabled它们都能够做到使用户不能够更改表单域中的内容
区别:1、在某个表单中为用户预填了某个唯一识别代码,不允许用户改动,但是在提交时需要传递该值,此时应该将它的属性设置为readonly 。
2、如果一个输入项的disabled设为true,左右操作无效,最重要一点是这个表单输入项不会被提交
3、表单提交后,按钮disabled掉
4、readonly只是针对文本输入框这类可以输入文本的输入项,如果设为true,用户只是不能编辑对应的文本,但是仍然可以聚焦焦点,并且在提交表单的时候,该输入项会作为form的一项提交。
6、ajax的基本流程
步骤:
//创建XMLHttpRequest对象 var xmlHttpReq=null; if(window.ActiveXObject){ xmlHttpReq=new ActiveXObject("Microsoft.XMLHTTP"); }else if(window.XMLHttpRequest){ xmlHttpReq= new XMLHttpRequest(); } //创建http请求 xmlHttpReq.open("GET","test.php",true) //设置响应http请求状态变化的函数 xmlHttpReq.onreadystatechange=function(){ if(xmlHttpReq.readyState===4){ if(xmlHttpReq.status===200){ document.write(xmlHttpReq.responseText) } } } //发送http请求 xmlHttpReq.send(null); //局部更新
7、css sprites的优缺点
优点:1、减少http请求 2、不需要对每一个小图片命名 3、减少图片的字节
缺点:1、图片合并的时候要留好足够的空间 2、维护性差 3、在移动端夜间模式下,不清晰
div顶点不变,图片移动,向右向下为正
8、节点操作
//创建元素节点 document.createElement('div') //创建文本节点 document.createTextNode("javascript") //插入节点,在指定节点的最后一个子节点列表之后添加一个新的子节点 parentNode.appendChild(newNode) //插入节点,在已知节点前插入一个新节点 parentNode.insertBefore(newNode,node) //删除节点,返回被删除的节点 parentNode.removeChild(parentNode.childNodes[1]) //替换节点元素 oldNode.parentNode.replaceChild(newNode,oldNode) //查找节点 document.getElementById()
9、jquery插件的基本格式
//添加一个新的全局函数 jQuery.foo=function(){ alert("") } //增加多个全局函数 jQuery.foo=function(){ } jQuery.bar=function(){ } //使用jQuery.extend(object) jQuery.extend({ foo:function(){ }, bar:function(){ } }) //使用命名空间 jQuery.myPlugin={ foo:function(){ }, bar:function(){ } } $.myPlugin.foo() //对象级别的开发 ;(functions($){ $.fn.extend({ methodName:function(){ } }) })(jQuery)
10、
var a=10; say(); function say(){ a=a+10; console.log(a); return a; } console.log(a); console.log(say()+10) VM634:5 20 VM634:8 20 VM634:5 30 VM634:9 40