zoukankan      html  css  js  c++  java
  • 二十家公司前端面试题(一)

    题目1:CSS实现垂直水平居中

    1.弹性盒子方法

    给父容器设置dispaly: flex; justify-content: center; align-items: center

    2.绝对定位居中

     1 .box2 {
     2     position: relative;
     3   }
     4 .con2 {
     5      margin: auto;
     6      position: absolute;
     7      top: 0;
     8      right: 0;
     9      bottom: 0;
    10      left: 0;
    11    }

    3负边距居中

    设外盒子100px宽高,内盒子50px宽高

     1 .box3 {
     2   position: relative;
     3 }
     4 .con3 {
     5   position: absolute;
     6   top: 50%;
     7   left: 50%;
     8   margin-left: -25px;
     9   margin-top: -25px;
    10 }

    4变形

    原理同3,把margin换成transform: translate(-50%, -50%)

    题目2.写出原生js 或者 JQ框架循环出下面的li内容

    1 <ul>
    2     <li>text1</li>
    3     <li>text2</li>
    4     <li>text3</li>
    5     <li>text4</li>
    6     <li>text5</li>
    7     <li>text6</li>
    8 </ul>
     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     6     <meta http-equiv="X-UA-Compatible" content="ie=edge">
     7     <title>题目2.写出原生js 或者 JQ框架循环出下面的li内容</title>
     8 </head>
     9 <body>
    10     <h3>题目2. 写出原生js 或者 JQ框架循环出下面的li内容</h3>
    11     <ul></ul>
    12     <script type="text/javascript">
    13          var oUl = document.querySelector('ul');
    14              for (var i = 0; i < 5; i++) {
    15                var oLi = document.createElement('li');
    16                oLi.innerHTML = 'test' + (i+1);
    17               oUl.appendChild(oLi);
    18             }
    19     </script>
    20 </body>
    21 </html>

    题目3.get和post请求区别

    1.GET请求将参数跟在url后进行传递, 而POST请求则是作为HTTP消息的实体内容发送给web服务器。当然在ajax请求中,这种区别对用户不可见;

    2.GET方式对传输的数据大小有限制,通常不能大于2KB, 而POST方式传递的数据量要比GET方式大得多,理论上不受限制

    3.GET方式请求的数据会被浏览器缓存起来,因此其他人就可以从浏览器的历史记录中读取到这些数据,例如账号和密码等。在某种情况下get会带来严重的安全问题,而post方式相对来说可以避免这些问题。

    4.GET方式和POST方式传递的数据在服务器端的获取也不同

    题目4.js中的函数 split() join() 的区别

    1.split方法能把字符串反序列化为数组

    2.split两个参数 以第一个参数进行分割,第2个参数用来限制数组的大小

    3.join方法能把数组序列化为字符串, join方法后面可以跟match方法进行模式匹配

    题目5.dom结点的深度优先遍历和广度优先搜索

    1、深度优先遍历的递归写法

     1 function deepTraversal(node) {
     2     var nodes = [];
     3     if (node != null) {  
     4             nodes.push(node);  
     5             var children = node.children;  
     6             for (var i = 0; i < children.length; i++)  
     7                    deepTraversal(children[i]);  
     8         }  
     9     return nodes;
    10 }

    2、深度优先遍历的非递归写法

     1 function deepTraversal(node) {
     2     var nodes = [];
     3     if (node != null) {
     4         var stack = [];
     5         stack.push(node);
     6         while (stack.length != 0) {
     7             var item = stack.pop();
     8             nodes.push(item);
     9             var children = item.children;
    10             for (var i = children.length - 1; i >= 0; i--)
    11                 stack.push(children[i]);
    12         }
    13     }  
    14     return nodes;
    15 }

    3、广度优先遍历的递归写法:

     1 function wideTraversal(node) {
     2     var nodes = [];
     3     var i = 0;
     4     if (!(node == null)) {
     5         nodes.push(node);
     6         wideTraversal(node.nextElementSibling);
     7         node = nodes[i++];
     8         wideTraversal(node.firstElementChild);
     9     }
    10     return nodes;
    11 }

    4、广度优先遍历的非递归写法

     1 function wideTraversal(selectNode) {
     2     var nodes = [];
     3     if (selectNode != null) {
     4         var queue = [];
     5         queue.unshift(selectNode);
     6         while (queue.length != 0) {
     7             var item = queue.shift();
     8             nodes.push(item);
     9             var children = item.children;
    10             for (var i = 0; i < children.length; i++)
    11                 queue.push(children[i]);
    12         }
    13     }
    14     return nodes;
    15 }
  • 相关阅读:
    ThreadLocal Thread ThreadLocalMap 之间的关系
    组合注解(Annotation)
    Halo 开源项目使用jsdelivr进行CDN加速.
    如何正确认知和提升自己的“格局”“视野”“高度”?
    格局如何提高?站在未来看今天。
    Cookie 的技术学习笔记
    JVM垃圾收集器与内存分配策略
    java内存区域与内存溢出异常
    JAVA中的BIO,NIO与多路复用(select,poll,epoll)
    Hexo yilia主题搭建自己的github个人博客(一)
  • 原文地址:https://www.cnblogs.com/bhan/p/6733298.html
Copyright © 2011-2022 走看看