博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
几道前端的面试题
阅读量:4706 次
发布时间:2019-06-10

本文共 2022 字,大约阅读时间需要 6 分钟。

前几天在豪情大大的前端群里,有个朋友发了几道前端的面试题,闲来无事,自己答了下。

css3动画和JS动画优劣?

1. css3动画只兼容Ie10+,js动画几乎兼容所有浏览器;
2.js动画更灵活,css3动画更简单
3.js动画复用性高
4.时间尺度上,css动画粒度比较粗,js动画可以更精细;
5.帧速不好的浏览器CSS动画可以做到优雅降级,js代码还需要写额外的代码
6.在某些条件下,css动画性能优于JS动画;(webkit内核的浏览器,js执行昂贵的任务,不引起layout和repaint情况下)
7.css3有天然的时间支持如(animationENd和transitionEnd)

 

假若你有 5 个不同的样式文件 (stylesheets), 整合进网站的最好方式是?
根据class命名规则写样式,这样样式不会冲突,提取公共的样式,进行合并,非公共的单独拎出来。然后打包压缩一下就行了,若每个文件都很大,就需要分模块加载。

 

请说出三种减少页面加载时间的方法。(加载时间指感知的时间或者实际加载时间)

1.减少HTTP请求;
2.合并压缩Js/css文件;
3.使用缓存manifest;
4.服务器端开启gzip;
5.使用CDN,用户可以就近获取所需要的资源,访问速度有保障,稳定性也有保障
6.外部JS和CSS放底下
7.尽可能少的操作DOM,某些需要重复操作的DOM可以放变量里

 

 

请描述伪元素 (pseudo-elements) 及其用途。

伪类用于选择那些DOM树中不存在的不容易被常规选择器找到的信息 :hover :active :focus :link
伪元素用于将某些特殊效果添加到选择器上; 如::before ::after
伪元素用于表现非正文、装饰性的东西,利于HTML语义化;

 

你有兼容 retina 屏幕的经历吗?如果有,在什么地方使用了何种技术?
淘宝的lib-flexible库;

 

请问为何要使用 translate() 而非 absolute position,或反之的理由?为什么?

从动画来讲,transform可以让GPU参与运算,FPS更高;absolute最小动画单位是1px,而transform可以更小,使动画更平滑,
从其他角度来讲,就是absolute必须有relative的父盒子;

 

你是如何组织自己的代码?是使用模块模式,还是使用经典继承的方法?(这个是百度后的答案)

对内:模块模式;
对外:继承

 

如何实现下列代码:
[1,2,3,4,5].duplicator(); // [1,2,3,4,5,1,2,3,4,5]

Array.prototype.duplicator = function (){

return this.concat(this)
}
var aaa = [1,2,3];
var aaa= aaa.duplicator();
console.log(aaa); //[1,2,3,1,2,3]

 

解释 function foo() {} 与 var foo = function() {} 用法的区别
1.函数声明必须有函数名字,2.可以在任何地方调用,即存在变量提升
3.函数表达式前后两个名称可以相同也可以不同;4.函数表达式后边那个名字可以省略;
5.表达式后面的名字只能在函数内部使用;6.函数只能在声明后才能调用

 

问题:如何实现以下函数?

add(2)(5); // 7
function add(a){
var c = function (b){
return a+b;
}
return c;
}
console.log(add(1)(2)); //3

 

请解释 JSONP 的工作原理,以及它为什么不是真正的 Ajax。
json是一种数据格式;jsonp是一种数据调用的方法;
1.利用script标签没有跨域限制的特性,在脚本里创建一个script标签,地址指向第三方API,如
<script src="http://www.example.net/api?param1=1&param2=2"></script> (src属性皆不受跨域限制)
2.提供一个回调函数来接收数据;第三方产生的数据为json数据的包装,形如callback({"name":"hax","gender":"Male"}) ,回调函数可通过URL参数传递callback=fn
3.这样浏览器会调用callback函数,并传递解析后的json对象作为参数。本站脚本可在callback函数里处理传入的数据;

ajax本质是通过XmlHttpRequest获取服务器信息,而JSONP核心则是动态添加script标签来调用服务器提供的JS脚本;

转载于:https://www.cnblogs.com/ricoliu/p/6361001.html

你可能感兴趣的文章
洛谷 P1101 单词方阵
查看>>
Swift DispatchQueue
查看>>
C#和JAVA 访问修饰符
查看>>
小甲鱼OD学习第1讲
查看>>
HDU-1085 Holding Bin-Laden Captive-母函数
查看>>
php提示undefined index的几种解决方法
查看>>
LRJ
查看>>
Struts2环境搭建
查看>>
Linux: Check version info
查看>>
stl学习之测试stlen,cout等的运行速度
查看>>
魔戒三曲,黑暗散去;人皇加冕,光明归来
查看>>
Error和Exception
查看>>
Python和Singleton (单件)模式[转载]
查看>>
httpclient设置proxy与proxyselector
查看>>
IT常用单词
查看>>
拓扑排序
查看>>
NYOJ--32--SEARCH--组合数
查看>>
gulpfile 压缩模板
查看>>
【34.14%】【BZOJ 3110】 [Zjoi2013]K大数查询
查看>>
【 henuacm2016级暑期训练-动态规划专题 A 】Cards
查看>>