前端面试题

    技术2022-07-12  61

    1.正则表达式字面完全一致也不相等

    var a = /123/, b = /123/; console.log(a==b) //false console.log(a===b) //false

    2.函数名称不可改变

    function test(){} var oldName = test.name; test.name = "huanhuan"; console.log(test.name) //test console.log(oldName) //test

    3.IOS手机浏览器字体齿轮

    修改-webkit-font-smoothing属性,结果是: -webkit-font-smothing: none 无抗锯齿 -webkit-font-smoothing: antialiased | subpixel-antialiased | default:灰度平滑

    4.$$("*")你知道是什么吗?

    $$函数等价于 document.querySelectorAll,就可以获得当前页面中所有匹配css的元素列表, 这个是在浏览器命令行可以测试到,在其他地方咱们就老老实实用document.querySelectorAll

    5.网站中,图片文件(jpg,png,gif),如何点击下载?而非点击预览?

    我们平时在网站中的图片,假如我们要下载,如下写:

    <a href="test.jpg">下载</a>

    我们点击下载按钮,只会预览test.jpg这张图片,并不会出现下载框,另存为那种。那么我们如何做呢?

    <a href="test.jpg" download>下载</a>

    我们还能指定文件名称

    <a href="test.jpg" download="test图片下载">下载</a>

    6.Math.min()比Math.max()大

    Math.min() < Math.max() //false Math.min() > Math.max() // true

    因为Math.min()返回Infinity,而Math.max()返回 -Infinity

    7.关于数字跟点号,下面的代码大家可以打印出来试一下

    3..toString() // 3 3.toString() // error 3...toString() // error

    8.局部变量和全局变量

    (function(){ var x = y = 1; })(); console.log(y); // 输出1 console.log(x); // error

    因为y是赋值到全局,x是局部变量,全局中获取不到,所以打印x的时候会报 ReferenceError引用错误

    9.cookie的弊端

    1.IE6更低版本最多20个cookie 2.IE7和之后的版本最多可以有50个cookie 3.Firefox最多50个cookie 4.Chrome和Safari没有硬性限制

    10.vue页面中定义一个定时器,在哪个阶段清除?

    在beforeDestroy中销毁定时器。 为什么销毁它? 比如在A页面中写了个定时器,比如每隔一秒钟打印一次1,当我点击按钮进入页面B的时候,会发现定时器依然在执行,这非常消耗性能 解决方法: $once这个事件侦听器在定义完成定时器之后的位置来清除定时器

    11.vue中父组件如何获取子组件的数据,子组件如何获取父组件的数据,父子组件如何传值?

    父获取子组件数据 $children $refs 子组件获取父组件中的数据? $parent

    父子组件通信除了以上三种,还有props和attrs

    12.XML和JSON的区别

    1.JSON相对XML来讲,数据的体积小,传递的速度更快些;

    2.JSON和JavaScript的交互更加方便,更容易解析处理,更好的数据交互;

    3.JSON对数据的描述性比XML差;

    4.JSON的传输速度圆远远快于XML。

    13.渐进增强和优雅降级

    渐进增强:针对低版本浏览器进行构建页面,保证最基本的功能,然后再针对高级浏览器进行效果,交互等改进和追加功能达到更好的用户体验

    优雅降级:

    一开始就构建完整的功能,然后再针对低版本浏览器进行兼容

    14.常见web安全及防护原理

    sql注入原理:

    就是通过SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令

    永远不要信任用户的输入,要对用户的输入进行校验,可以通过正则表达式,或限制长度,对单引号和双"-"进行转换等。永远不要使用动态拼装SQL,可以使用参数化的SQL或者直接使用存储过程进行数据查询存取永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接不要把机密信息明文存放,请加密或者hash掉密码和敏感的信息

     

     

    Processed: 0.012, SQL: 9