总结一些前端的面试题

天津/UI设计师/7年前/148浏览
总结一些前端的面试题
radarz

html+css+js

最近面试比较多,开始经常被一些概念性的问题问的目瞪口呆~

还有一些笔试题,直接就是百度上的~~

特此总结一下,顺便巩固一下自己的专业知识。

HTML面试题

1-XHTML和HTML有什么区别

HTML是一种基本的WEB网页设计语言,XHTML是一个基于XML的置标语言

XHTML 元素必须被正确地嵌套,元素必须被关闭,标签名必须用小写字母,必须有根元素。

2-前端页面有哪三层构成,分别是什么?作用是什么?

html-结构、css-表示、js-行为

3-这些浏览器的内核分别是什么?

Ie(Ie内核) 火狐(Gecko) 谷歌(webkit,Blink) opera(Presto),Safari(wbkit)

4-HTML5 为什么只需要写 !DOCTYPE HTML?

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

5-Doctype作用?标准模式与兼容模式各有什么区别?

  • !DOCTYPE声明位于位于HTML文档中的第一行,处于html 标签之前。告知浏览器的解析器用什么文档标准解析这个文档。DOCTYPE不存在或格式不正确会导致文档以兼容模式呈现。

  • 标准模式的排版 和JS运作模式都是以该浏览器支持的最高标准运行。在兼容模式中,页面以宽松的向后兼容的方式显示,模拟老式浏览器的行为以防止站点无法工作。

6-请描述一下 cookies,sessionStorage 和 localStorage 的区别?

  • cookie在浏览器和服务器间来回传递。 sessionStorage和localStorage不会

  • sessionStorage和localStorage的存储空间更大;

  • sessionStorage和localStorage有更多丰富易用的接口;

  • sessionStorage和localStorage各自独立的存储空间;

  • 本地离线存储 localStorage 长期存储数据,浏览器关闭后数据不丢失;

  • sessionStorage 的数据在浏览器关闭后自动删除

7-cookie 和session 的区别

  • cookie数据存放在客户的浏览器上,session数据放在服务器上。

  • cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,考虑到安全使用session

  • session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用COOKIE。

  • 单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。

  • 将登陆信息等重要信息存放为SESSION、其他信息如果需要保留,可以放在COOKIE中

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

调用localstorge、cookies等本地存储方式

CSS面试题

1-简要说一下CSS的元素分类

  • 块级元素:div,p,h1,form,ul,li;

  • 行内元素 : span>,a,label,input,img,strong,em;

2-CSS垂直居中

  • 使用position:absolute(fixed),设置left、top、margin-left、margin-top的属性;

  • 利用position:fixed(absolute)属性,margin:auto这个必须不要忘记了;

  • 利用display:table-cell属性使内容垂直居中;

  • 使用css3的新属性transform:translate(x,y)属性;

  • 使用:before元素;

3-使用link和@import有什么区别?

  • link属于XHTML标签,除了加载CSS外,还能用于定义RSS, 定义rel连接属性等作用;而@import是CSS提供的,只能用于加载CSS;

  • 页面被加载的时,link会同时被加载,而@import引用的CSS会等到页面被加载完再加载;

  • import是CSS2.1 提出的,只在IE5以上才能被识别,而link是XHTML标签,无兼容问题;

4-css优先级算法如何计算?

!important >  id > class > tag

important 比 内联优先级高

Javas cript面试题

1-javas cript的typeof返回哪些数据类型

object number function boolean underfind null

2-3种强制类型转换和2种隐式类型转换

强制(parseInt,parseFloat,number)

隐式(== ,===)

3-数组方法pop() push() unshift() shift()

  • Push()尾部添加 pop()尾部删除

  • Unshift()头部添加 shift()头部删除

4-ajax请求的时候get 和post方式的区别?

  •  GET:一般用于信息获取,使用URL传递参数,对所发送信息的数量也有限制,一般在2000个字符

  • POST:一般用于修改服务器上的资源,对所发送的信息没有限制。

  • GET方式需要使用Request.QueryString来取得变量的值,而POST方式通过Request.Form来获取变量的值,也就是说Get是通过地址栏来传值,而Post是通过提交表单来传值。

  • 然而,在以下情况中,请使用 POST 请求:无法使用缓存文件(更新服务器上的文件或数据库),向服务器发送大量数据(POST 没有数据量限制),发送包含未知字符的用户输入时,POST 比 GET 更稳定也更可靠。

5-call和apply的区别

  • Object.call(this,obj1,obj2,obj3)

  • Object.apply(this,arguments)

6-事件委托是什么

  • 让利用事件冒泡的原理,让自己的所触发的事件,让他的父元素代替执行!

// 获取父节点,并为它添加一个click事件
document.getElementById("parent-list").addEventListener("click",function(e) {
  // 检查事件源e.targe是否为Li
  if(e.target && e.target.nodeName.toUpperCase == "LI") {    
  // 真正的处理过程在这里
    console.log("List item ",e.target.id.replace("post-")," was clicked!");
  }
});

7-闭包

闭包就是能够读取其他函数内部变量的函数

function fun(n,o) {
  console.log(o);  
  return {
    fun:function(m){      
    return fun(m,n);
    }
  };
}
var a = fun(0);  a.fun(1);  a.fun(2);  a.fun(3);
var b = fun(0).fun(1).fun(2).fun(3);
var c = fun(0).fun(1);  c.fun(2);  c.fun(3);
//问:三行a,b,c的输出分别是什么?
//答案:
//a: undefined,0,0,0
//b: undefined,0,1,2
//c: undefined,0,1,1

8-谈谈This对象的理解

this是js的一个关键字,随着函数使用场合不同,this的值会发生变化。
但是有一个总原则,那就是this指的是调用函数的那个对象。
this一般情况下:是全局对象Global。 作为方法调用,那么this就是指这个对象

(箭头函数中this指向声明函数的对象)

9-创建ajax的过程

创建XMLHttpRequest对象,也就是创建一个异步调用对象.

创建一个新的HTTP请求,并指定该HTTP请求的方法、URL及验证信息.

设置响应HTTP请求状态变化的函数.

发送HTTP请求.

获取异步调用返回的数据.

使用Javas cript和DOM实现局部刷新.


其它

1-Node的使用场景都有哪些

高并发、聊天、实时消息推送

2-Node优缺点

(优点)
因为Node是基于事件驱动和无阻塞的,所以非常适合处理并发请求,
因此构建在Node上的代理服务器相比其他技术实现(如Ruby)的服务器表现要好得多。
此外,与Node代理服务器交互的客户端代码是由javas cript语言编写的,
因此客户端和服务器端都用同一种语言编写,这是非常美妙的事情。
(缺点)
Node是一个相对新的开源项目,所以不太稳定,它总是一直在变,
而且缺少足够多的第三方库支持。看起来,就像是Ruby/Rails当年的样子。

3-你有哪些性能优化的方法?

(1) 减少http请求次数:CSS Sprites, JS、CSS源码压缩、图片大小控制合适;网页Gzip,CDN托管,data缓存 ,图片服务器。
(2)前端模板 JS+数据,减少由于HTML标签导致的带宽浪费,前端用变量保存AJAX请求结果,每次操作本地变量,不用请求,减少请求次数
(3) 用innerHTML代替DOM操作,减少DOM操作次数,优化javas cript性能。
(4) 当需要设置的样式很多时设置className而不是直接操作style。
(5) 少用全局变量、缓存DOM节点查找的结果。减少IO读取操作。
(6) 避免使用CSS Expression(css表达式)又称Dynamic properties(动态属性)。
(7) 图片预加载,将样式表放在顶部,将脚本放在底部 加上时间戳。
(8) 避免在页面的主体布局中使用table,table要等其中的内容完全下载之后才会显示出来,显示div+css布局慢。对普通的网站有一个统一的思路,就是尽量向前端优化、减少数据库操作、减少磁盘IO。向前端优化指的是,在不影响功能和体验的情况下,能在浏览器执行的不要在服务端执行,能在缓存服务器上直接返回的不要到应用服务器,程序能直接取得的结果不要到外部取得,本机内能取得的数据不要到远程取,内存能取到的不要到磁盘取,缓存中有的不要去数据库查询。减少数据库操作指减少更新次数、缓存结果减少查询次数、将数据库执行的操作尽可能的让你的程序完成(例如join查询),减少磁盘IO指尽量不使用文件系统作为缓存、减少读写文件次数等。程序优化永远要优化慢的部分,换语言是无法“优化”的。

4-常用的开发工具

Sublime,Atom,Nodepad++

5-常去哪些网站(blog)

CSDN,Segmentfault,博客园,掘金,Stackoverflow,伯乐在线等



1
Report
|
1
Share
评论
in to comment
Add emoji
喜欢TA的作品吗?喜欢就快来夸夸TA吧!
推荐素材
You may like
LANHE工作总结
Homepage recommendation
大家都在看
Log in