• 几道前端的面试题


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

    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脚本;

  • 相关阅读:
    从零打造树莓派智能助手(一)——让树莓派说话
    以np.concatenate为主题,谈谈numpy数组按维度合并的问题
    树莓派apt报错:E: 'Release' 这个值对 APT::Default-Release 是无效的,因为在源里找不到这样的发行
    我遇到的一些Git问题汇编
    在Mac平台用Sublime编辑器使用Git并连接github
    LeetCode108——Convert Sorted Array to Binary Search Tree
    LeetCode122——Best Time to Buy and Sell Stock II
    LeetCode686——Repeated String Match
    Python爬虫 — 百度翻译
    HTTP 协议
  • 原文地址:https://www.cnblogs.com/ricoliu/p/6361001.html
Copyright © 2020-2023  润新知