zoukankan      html  css  js  c++  java
  • 3.26前端面试题总结

    今天十道笔试,一个小时,然后面试五题。

    1.CSS中可以继承的属性。

    • font-size、font-family、color、cursor、list-style。

    2.画两条直角边距均为16px,背景色为#dadada的直角三角形。(可参考技术,HTML,css,svg)

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>画直角三角形</title>
        <style>
            .triangle {
                width: 0px;
                height: 0px;
                border-width: 16px;
                border-style: solid;
                border-color: transparent #dadada #dadada transparent;
            }
        </style>
    </head>
    <body>
        <div class="triangle">
    
        </div>
    </body>
    </html>

    3.如何实现元素的垂直居中?(请尽可能写出多种方法)

    1. 单行文本垂直居中,设置line-height的值等于height的值
    .way1 {
                 100%;
                height: 300px;
                line-height: 300px;
                background-color: aquamarine;//方便观察效果
            }

          2.已知块级子元素高度,使用绝对定位和top实现垂直居中(生成绝对定位的元素,相对于值不为 static的第一个父元素进行定位)

     .container {
                 100%;
                height: 300px;
                position: relative;
                background-color:blueviolet;
            }
            .way2 {
                height: 150px;
                position: absolute;
                top: 50%;      /* 父元素高度的50% */
                margin-top: -75px; /* 自身高度的一半 */
                background-color: aquamarine;
            }

           3.未知高度的块级父子元素居中,模拟表格布局

    • 缺点:IE67不兼容,父级 overflow:hidden 失效
    .fatherBox {
                display: table;
                height: 200px;
                background-color: brown;
            }
            .way3 {
                display: table-cell;
                vertical-align: middle;
                background-color: chocolate;
            }

           4.新增 inline-block 兄弟元素,设置 vertical-align

    • 缺点:需要增加额外标签,IE67不兼容
      • .container {
          height: 100%;/*定义父级高度,作为参考*/
        }
        .extra .vertical{
          display: inline-block;  /*行内块显示*/
          vertical-align: middle; /*垂直居中*/
        }
        .extra {
          height: 100%; /*设置新增元素高度为100%*/
        }

        5.绝对定位配合CSS3位移

    .div1 {
                height: 300px;
                position: relative;
                background-color: darkgoldenrod;
            }
            .way5 {
                position: absolute; 
                height: 100px;
                top: 50%;/* 父元素的50% */
                transform: translateY(-50%);
                background-color: crimson;
            }

              6.CSS弹性盒模型

    .coontainer {
                display: flex;
                justify-content: center;
                align-items: center;
                height: 200px;
                background-color: darkgray;
    }

    4.css中三种隐藏元素的方式:visibility:hidden,display:none和opacity:0的区别?

    5.下列代码输出结果是什么?

     function node() {
            this.element = document.createElement('div');
            this.textContent = 'content';
            this.element.innerHTML = 'innerHTML';
            this.element.addEventListener('click',this.func, true);
            this.element.onelick = this.func.bind(this.element);
            this.element.addEventListener('click',this.func.call(this));
        }
        node.prototype.render = function () {
            document.body.appendChild(this.element);
        }
        node.prototype.func = function () {
            console.log(this.textContent);
        }
        var obj = new node();
        obj.render();
        obj.func();
        obj.element.click();

    6.下列代码控制台的最终输出结果是多少?

    var length = 'ih5互动';
        var obj = {
            length:'H5游戏营销领导者',
            exec: function () {
                return(function (length) {
                    return function () {
                        console.log(this.length);
                        console.log(length);
                    }
                })(this.length)
            }
        }
        var exec = obj.exec();
        console.log(exec.length);
        console.log(exec());

    7.下列代码控制台的最终输出结果是多少?

      try{
            oh();
            wow();
            console.log(oh);
            console.log(wow);
        }catch (e){
            setTimeout(function () {
                console.log(wow);
                console.log(oh);
            });
        }
        function oh() {
            console.log('更好玩的H5');
        }
        var wow = function () {
            console.log('更酷的H5');
        }
        var oh = '疯狂的H5传单';
        var wow = '微传单';

    8.实现一个函数clone,可以对javascript中的5种主要函数类型(包括Number、String、Object、Array、Boolean)进行值复制。

    9.请按提示编写代码,要求代码尽量考虑容错性和安全性。

    (1)请实现一个函数,获取当前网页URL,并将其中的查询参数解析成字典对象,比如房钱URL为:http://www.baidu.com/helpCenter.html?a=1&b&c=&d=百度&e=<script>alert(0)</scritp>,则按形式拼成对象{a:“1”,b:"", c:“”,d=“百度”,e:"<script>alert(0)</script>"}

    (2)在实际开发中,列举几个常见的XSS攻击例子并且给出防御方案。

    10.请按提示编写代码,要求代码尽量考虑性能。

    (1)请实现一个函数,对字符串数组进行去重,尽量使用多种方法,并按性能排序,比如 [‘JS’,‘H5’,‘css’,‘JQ’,‘ES6’,‘JS’]去重为[‘JS’,‘H5’,‘css’,‘JQ’,‘ES6’]。

    (2)请实现一个函数,对元素数据类型不确定的数组进行去重,比如[1,2,2,3,[1,2],[1,2],[1,3],[a,1],{a:1,b:1},{a:1,b:1}]去重为[1,2,3,[1,2],[1,3],[a,1],{a:1,b:1}]

    11.请谈谈你对position的了解。

    12.谈谈你对变量提升的理解。

    13.给你一个动态生成的无序列表,要实现对列表中的某一对象进行操作绑定,你会使用什么办法?

    14.谈谈this对象的理解。

    15.描述 cookies、sessionStorage 和 localStorage 的区别?

    • 与服务器交互:
    1. cookie是网站为了标示用户身份而存储在用户本地终端上的数据(通常经过加密);
    2. cookie始终会在同源http中携带(即使不需要),在浏览器和服务器之间来回传递;
    3. sessionStorage和localStorage不会自动把数据发给服务器,仅在本地保存。
    • 存储大小:
    1. cookie数据根据不同浏览器限制,大小一般不超过4K;
    2. sessionStorage和localStorage虽然也有存储大小限制,但是比cookie大得多,可以达到5M或者更大。
    • 有期时间:
    1. localStorage存储持久数据,浏览器关闭后数据不丢失,除非主动删除;
    2. sessionStorage在当前浏览器窗口关闭后数据自动删除。
    3. cookie设置的cookie过期时间前一直有效,与浏览器关闭无关。

    4.2

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

    • 尽量减少重复的http请求数量;
    • 压缩javascript、css代码;
    • Ajax采用缓存调用;

    其他参考:https://blog.csdn.net/gongzhuxiaoxin/article/details/52454213;

    2、iframe有那些缺点?如何解决跨域问题?

    • 会产生很多页面,不容易管理;
    • 不容易打印;
    • 浏览器的后退按钮无效;
    • 代码复杂,无法被一些搜索引擎索引到,这一点很关键,现在的搜索引擎爬虫还不能很好的处理iframe中的内容,所以使用iframe会不利于搜索引擎优化;
    • 多数小型的移动设备(PDA 手机)无法完全显示框架,设备兼容性差;
    • 多框架的页面会增加服务器的http请求,对于大型网站是不可取的;

    解决跨域问题:

    • 同一个 origin 下,父页面可以通过 iframe.contentWindow 直接访问 iframe 的全局变量、DOM 树等,iframe 可以也通过 parent/top 对父页面做同样的事情。
    • 不同 origin 下,标准的方法是通过 .postMessage() 互相通信,不标准的方法是利用 location.hash 等奇技淫巧。
    协议、域名、端口号,共同决定一个 origin 。

    3、事件是什么?IE与火狐的事件机制有什么区别? 如何阻止冒泡? 

    • 事件是指用户在网页中的某些操作;
    • IE是事件冒泡,火狐是事件捕获;
    • e.stopPropagation阻止冒泡;

    4、谈谈This对象的理解。 

    5、翻转一个字符串 let a =’hello word’ 

    先用split()将字符串转换为字符数组,然后用reverse()颠倒数组中数组,然后使用jion(),将数组字符转换为字符串;

    let a = 'hello world';
    let b = a.split("");
    console.log(b.reverse().join(""));

    6、请解释CSS动画和JavaScript动画的优缺点。requestAnimationFrame是什么? *

    7、移动端rem布局 line-height在Android机中渲染相差几px解决办法

    8、font,background 简写规则,举例说明 

  • 相关阅读:
    JS OOP -03 JS类的实现
    python 配置文件__ConfigParser
    1103_ddt 数据处理
    1101_数据处理优化
    了解 ptyhon垃圾回收机制
    10_30_unittest
    10_27_unittest
    10_27_requests模块
    知识积累 哈。。。
    Python练习
  • 原文地址:https://www.cnblogs.com/kido050313/p/8653030.html
Copyright © 2011-2022 走看看