撩课-Web大前端每天5道面试题-Day10

2018-12-17 10:47:21来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

1. px和em的区别?

px和em都是长度单位;

区别是: 
px的值是固定的,指定是多少就是多少,
计算比较容易。

em得值不是固定的,并且em会继承父级元素的字体大小。

浏览器的默认字体高都是16px;
所以未经调整的浏览器都符合: 1em=16px;
那么12px=0.75em, 10px=0.625em

 

2. CSS 去掉inline-block元素间隙的几种方法?

间隙是怎么来的:

间隙是由换行或者回车导致的;
只要把标签写成一行或者
标签直接没有空格,就不会出现间隙;

怎么去除?

方法1:
元素间的间隙出现的原因
是元素标签之间的空格,
把空格去掉间隙自然就会消失。

<div class="itlike">
  <span>撩课itlike</span><span>撩课itlike</span>
</div>

方法2:
利用HTML注释标签

<div class="demo">
    <span>撩课itlike</span><!-- 
    --><span>撩课itlike</span>
</div>

方法3:
取消标签闭合
<div class="demo">
    <span>撩课itlike
    <span>撩课itlike
    <span>撩课itlike
    <span>撩课itlike
</div>

方法4:
在父容器上使用font-size:0;可以消除间隙
<div class="demo">
    <span>撩课itlike</span>
    <span>撩课itlike</span>
    <span>撩课itlike</span>
    <span>撩课itlike</span>
</div>
.demo {font-size: 0;}

 

3. 在Javascript中什么是伪数组?如何将伪数组转化为标准数组?

伪数组(类数组):
无法直接调用数组方法,
 length属性有什么特殊的行为,
但仍可以对真正数组遍历方法来遍历它们。

典型的是函数的argument参数,还有像调
getElementsByTagName,
document.childNodes之类的,
它们都返回NodeList对象,  这些都属于伪数组。

可以使用Array.prototype.slice.call(fArray)将数组
转化为真正的Array对象。

 

4. 一次完整的HTTP事务是怎样的一个过程?

基本流程:
a. 域名解析;
b. 发起TCP的3次握手;
c. 建立TCP连接后发起http请求;
d. 服务器端响应http请求,浏览器得到html代码;
e. 浏览器解析html代码,并请求html代码中的资源;
f. 浏览器对页面进行渲染呈现给用户

 

5. 数组快速排序?

思路:
a)  在数据集之中,选择一个元素作为"基准"(pivot)。
b)  所有小于"基准"的元素,都移到"基准"的左边;
    所有大于"基准"的元素,都移到"基准"的右边。
c)  对"基准"左边和右边的两个子集,
    不断重复第一步和第二步,
    直到所有子集只剩下一个元素为止。

 var quickSort = function(arr) {
  if (arr.length <= 1) { return arr; }
  var pivotIndex = Math.floor(arr.length / 2);
  var pivot = arr.splice(pivotIndex, 1)[0];
  var left = [];
  var right = [];
  for (var i = 0; i < arr.length; i++){
    if (arr[i] < pivot) {
      left.push(arr[i]);
    } else {
      right.push(arr[i]);
    }
  }
  return quickSort(left).concat([pivot], quickSort(right));
};

 

6. 开发中有哪些常见的Web攻击技术?

a) XSS(Cross-Site Scripting,跨站脚本攻击):
指通过存在安全漏洞的Web网站注册用户的浏览器
内运行非法的HTML标签或者JavaScript进行的一种攻击。

b)SQL注入

c) CSRF(Cross-Site Request Forgeries,跨站点请求伪造):
指攻击者通过设置好的陷阱,强制对已完成的认证用户进行
非预期的个人信息或设定信息等某些状态更新。

 

7. 正则表达式验证邮箱格式?

var reg = /^(\w)+(\.\w+)*@(\w)+((\.\w{2,3}){1,3})$/;
var email = "yjh@itlike.com";
console.log(reg.test(email));  // true  

 

8. 正则表达式清除字符串前后的空格?

function trim(str) {
    if (str && typeof str === "string") {
        // 去除前后空白符
        return str.replace(/(^\s*)|(\s*)$/g,""); 
    }
}

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:深入解析React中的元素、组件、实例和节点

下一篇:《JavaScript高级程序设计》笔记:函数表达式(七)