中高级前端练习

1.行内元素有哪些?块级元素有哪些

2.请描述cookies,sessionStorage和localStorage的区别

3.Document的作用?严格模式和混杂模式如何区分?他们有何意义

4.介绍一下css盒子模型

5.css选择符有哪些?优先级算法如何计算

6.IE,火狐,Chrome浏览器内核分别是什么

7.img标签上title与alt属性的区别是什么

8.清除浮动的几种方式,各自的优缺点

9.javascript的typeof会返回哪些数据类型

10.列举三种强制类型转换和2中隐式类型转换

11.介绍js闭包

var str = “abc”;
str += 123;
console.log( str )
console.log( parseInt(str) + 2 )


function b(){
console.log( 1 )
}
var b;
console.log(typeof b);


if( !(“a” in window) ){
var a = 1;
}
console.log( a )


console.log( 4…toFixed(2) )

13.ajax请求的时候get和post方式的区别

14.从前端的角度回答,如何提升网站访问速度

15.说出javascript数组相关函数

16.JS中const,var ,let的区别
let和const都是es5,es6新版本的js语言规范出来的定义,在这以前定义一个变量只能用var。let和const都是为了弥补var的一些缺陷而新设计出来的。具体区别你可以看一些文章,比如:深入浅出ES6(十四):let和const 简单来说是: let是修复了var的作用域的一些bug,变的更加好用。let是更好的var。var的作用于是函数作用于,而let是块级别(大括号括起来的内容)const声明的变量只可以在声明时赋值,不可随意修改,这是最大的特点。
使用var声明的变量,其作用域为该语句所在的函数内,且存在变量提升现象;
使用let声明的变量,其作用域为该语句所在的代码块内,不存在变量提升;
使用const声明的是常量,在后面出现的代码中不能再修改该常量的值。

var a = {};var b = a;b.name=“mbj”;
console.log(a.name);//“mbj”,因为a,b指向同一个对象
a = null
console.log(typeof b)
//object ,a=null,只是a不再指向该对象,但是这个对象还是在堆中确确实实存在,b依然指向它

function fn(){
this.a = 0;
this.b = function(){
console.log(this.a)
}
}
fn.prototype = {
b:function{
this.a = 20;
console.log(this.a)
},
c: function(){
this.a = 30;
console.log(this.a)
}
}
var myfn = new fn();
myfn.b();
myfn.c();
0 30 undefined

19.javascript垃圾回收机制有哪几种,分别简述
和C#、Java一样JavaScript有自动垃圾回收机制,也就是说执行环境会负责管理代码执行过程中使用的内存,在开发过程中就无需考虑内存分配及无用内存的回收问题了。JavaScript垃圾回收的机制很简单:找出不再使用的变量,然后释放掉其占用的内存,但是这个过程不是时时的,因为其开销比较大,所以垃圾回收器会按照固定的时间间隔周期性的执行。
变量生命周期
有同学看了上面就会问了,什么叫不再使用的变量?不再使用的变量也就是生命周期结束的变量,当然只可能是局部变量,全局变量的生命周期直至浏览器卸载页面才会结束。局部变量只在函数的执行过程中存在,而在这个过程中会为局部变量在栈或堆上分配相应的空间,以存储它们的值,然后再函数中使用这些变量,直至函数结束(闭包中由于内部函数的原因,外部函数并不能算是结束,了解闭包可以看看 JavaScript作用域链,JavaScript 闭包究竟是什么)。
一旦函数结束,局部变量就没有存在必要了,可以释放它们占用的内存。貌似很简单的工作,为什么会有很大开销呢?这仅仅是垃圾回收的冰山一角,就像刚刚提到的闭包,貌似函数结束了,其实还没有,垃圾回收器必须知道哪个变量有用,哪个变量没用,对于不再有用的变量打上标记,以备将来回收。用于标记无用的策略有很多,常见的有两种方式
标记清除(mark and sweep)
这是JavaScript最常见的垃圾回收方式,当变量进入执行环境的时候,比如函数中声明一个变量,垃圾回收器将其标记为“进入环境”,当变量离开环境的时候(函数执行结束)将其标记为“离开环境”。至于怎么标记有很多种方式,比如特殊位的反转、维护一个列表等,这些并不重要,重要的是使用什么策略,原则上讲不能够释放进入环境的变量所占的内存,它们随时可能会被调用的到。

垃圾回收器会在运行的时候给存储在内存中的所有变量加上标记,然后去掉环境中的变量以及被环境中变量所引用的变量(闭包),在这些完成之后仍存在标记的就是要删除的变量了,因为环境中的变量已经无法访问到这些变量了,然后垃圾回收器相会这些带有标记的变量机器所占空间。

大部分浏览器都是使用这种方式进行垃圾回收,区别在于如何标记及垃圾回收间隔而已,只有低版本IE,不出所料,又是IE。。。

引用计数(reference counting)
在低版本IE中经常会出现内存泄露,很多时候就是因为其采用引用计数方式进行垃圾回收。引用计数的策略是跟踪记录每个值被使用的次数,当声明了一个变量并将一个引用类型赋值给该变量的时候这个值的引用次数就加1,如果该变量的值变成了另外一个,则这个值得引用次数减1,当这个值的引用次数变为0的时候,说明没有变量在使用,这个值没法被访问了,因此可以将其占用的空间回收,这样垃圾回收器会在运行的时候清理掉引用次数为0的值占用的空间。

看起来也不错的方式,为什么很少有浏览器采用,还会带来内存泄露问题呢?主要是因为这种方式没办法解决循环引用问题。比如对象A有一个属性指向对象B,而对象B也有有一个属性指向对象A,这样相互引用

20.什么是javascript同源策略
一段脚本只能读取来自同一来源的窗口和文档的属性,这里的同一来源指的是主机名,协议和端口号的组合

21.简述src和href的区别
href指向网络资源的位置,建立和当前元素(锚点)或当前文档(链接)之前的链接,用于超链接
src指向外部资源的位置,。。。。

22.行内元素,块级元素,空(void)元素有哪些

23.px和em的区别

24.一次完整的http请求

25.你所了解到的web攻击技术
(1)XSS(Cross-Site Scripting,跨站脚本攻击);指通过存在安全漏洞的Web网站注册用户的浏览器内运行非法的HTML标签或JavaScript的一种攻击
(2)SQL注入攻击
(3)CSRF(Cross-Site Request Forgeries,跨站点请求伪造);指攻击者通过设置好的陷阱,强制堆已完成的认证用户进行非预期的个人信息或设定信息等某些状态更新

26.行业业务理解

27.对前端工程师职位理解

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值