面试题:需要了解到的面试题

  1. 、一个页面(HTML)由哪几部分构成?分别是什么?作用是什么?
    由head和body构成。
    head里面放置一些配置信息,比如配置title、keyword、description、charset等等信息,不会显示在浏览器中。
    body是内容,会显示在浏览器的屏幕中。

  2. 变量提升?和 函数提升?
    js会将所有变量和函数声明移动到它的作用域最前面。这就是变量提升

  3. 浏览器上输入一个网址经历了哪些过程?
    1 输入网址
    2 缓存解析
    3 域名解析
    4 tcp连接,三次握手
    5 服务器收到请求
    6 页面渲染

  4. js 的运行机制?

  5. 解释事件冒泡、事件捕获、先进行什么?
    事件处理流程分为三个阶段:
    1 事件捕获阶段
    2 事件目标阶段
    3 事件冒泡阶段

  6. 继承的方法是什么?讲一下原型链?

  7. Vue Router 生命周期?

  8. computed和watch 区别?

  9. 网页怎么优化?

  10. 怎么判断数组? isArray instanceof

  11. css的预处理框架有什么作用?

  12. webpack原理

  • webpack 是一个打包集成工具
    webpack 需要基于node的环境 (因为我们要使用npm命令)

    webpack4 不建议全局安装
    
  1. 函数的This 什么含义 什么情况下怎么用?
  2. 怎么避免全局变量污染?

1.定义全局变量做容器: 2.使用自执行函数:

  1. js 模块包装格式都用过哪些?定义一个js 模块代码

  2. js 怎么实现一个类 ? 怎么实例化这个类

  3. 闭包建议繁琐使用吗?

  4. ajax 跨域的方法有哪些,jsonp 的原理是什么?

  5. 你上个项目都用哪些方法优化js 的性能?
    避免with语句
    在性能非常重要的地方一定要避免witch语句。和函数相类似,with语句会创建自己的作用域,因此会增加执行的代码的作用域的长度。由于额外的作用域链查找,在with语句中执行的代码肯定会比外面的代码要慢。

  6. css盒子模型 绝对定位 相对定位 ?

  7. 清除浮动 什么时候需要清除浮动 清除浮动都有哪些方法?

  8. 如何保持浮层水平垂直居中?

  9. position 和 display 的意思和用法?

  10. 样式的层级关系 选择器优先级 样式冲突 以及抽离样式怎么写?

  11. css3 动画效果属性 canvas svg的区别 css3中新增伪类举例?

  12. px 和 em 和 rem 的区别 css中link 和@import 的区别是?

  13. javaScript 里有哪些数据类型? null 和 undefined 区别?

  14. 原始数据类型和引用数剧类型的区别是什么?

  15. 什么是作用域?
    JS中最常见的就是变量的作用域。 ‘ JS是没有块级作用域的。’
    变量的作用域分为两种:全局变量和局部变量。
    全局作用域: 最外层函数定义的变量拥有全局作用域。即对任何内部函数来说,都是可以访问的;
    局部作用域: 局部作用域一般只在固定的代码片段内可访问到。而对于函数外部是无法访问的,最常见的例如函数内部。

  16. 什么是预编译?
    预编译又称为预处理,是做些代码文本的替换工作。

  17. css 标准盒子模型和ie盒子模型的区别和各自的特点 ?
    相同点
    两个模型宽度和高度的计算(是一样的)
    w3c中的盒子模型的宽:都包括margin+border+padding+width;
    不同点
    标准盒子模型padding、margin外扩,
    IE 盒子模型padding、marign内减。

  18. CSS布局篇之左右布局
    左侧定宽,右侧自适应,
    float + margin, float + overflow:hidden, CSS3 float + calc , 弹性布局。 定位也可以…

  19. 圣杯布局和双飞翼布局的理解
    两侧宽度固定,中间宽度自适应的三栏布局。
    ①圣杯布局:

  20. header和footer占屏幕全部高度,高度固定

  21. 中间的contaier部分是一个三栏布局

  22. left和right宽度固定,middle自适应填满整个区域;高度为三栏中最大的高度;
    用浮动 或者 弹性盒子。
    ②双飞翼布局:
    和上面一样,区别在于这里middle中多了一个div main,用多了一个div的方式代替使用相对布局。

  23. 什么是媒体查询?
    通过查询当前属于哪种设备, 让网页能够在不同的设备下正常的预览

  24. css3增添的哪些属性??
    transform
    flex
    阴影
    border-radius: 圆角
    box-shadow: 盒阴影
    border-image: 边界图片
    文本溢出处理
    white-space: nowrap;
    text-overflew: ellipsis;
    overflow: hidden
    伪类选择器

  25. transform 属性 ?
    transform(变换),transition(过渡),animation(动画)。
    其中transform又分为2D变换和3D变换
    Css3中的 3d(给元素的父元素添加transform-style属性)和 2d(transform 属性)特效都是方法(函数)提供了四个方法
    Translate() 平移 两个参数 mpx npx
    rotate()旋转 参数是number deg(角度)
    scale()缩放 参数 2 是数字 1代表不变
    skew()拉伸 他们只是充当属性值的。Xdeg ydeg

  26. html中关于有序列表、无序列表和自定义列表之间的区别
    有序列表(ol-li),无序列表(ul-li),自定义列表(dl-dt-dd)
    记住无序列表ul 就可以了。

  27. 写一段CSS代码,让Chrome支持小于12px的文字。
    font-size:12px;
    -webkit-transform:scale(0.8);

  28. 什么是闭包?
    1、函数套函数。
    2、内部函数可以访问外部函数的变量。
    3、局部变量,垃圾回收机制无法收回。
    闭包就是指有权访问另一个函数作用域中的变量的函数。
    闭包的概念就是 外部函数调用之后其变量对象本应该被销毁,但闭包的存在使我们仍然可以访问外部函数的变量对象。

  29. 通过闭包来实现封装常量的方法
    用getContent

  30. 闭包的优点缺点?
    优点:可以把局部变量驻留在内存中,可以避免使用全局变量;在调用过后不会被垃圾机制回收;
    缺点:避免滥用闭包,占用更多内存的缺点,用完要及时让垃圾回收器回收应及时解除引用,否则会占用更多内存;

  31. 首行缩进2个字符的CSS代码是什么?
    text-indent:2em;

  32. IE如何让超出宽度的文字显示为省略号?
    width: 50px; /必须设置宽度/
    overflow: hidden; /溢出隐藏/
    text-overflow: ellipsis; /以省略号…显示/ (A 来普赛死)
    white-space: nowrap; /强制不换行/ (歪-斯贝斯):(纽瓦普)

  33. 网页设计采用div+css有什么好处?
    语义清晰,DIV负责结构,CSS负责样式。
    便于更改,缩减页面代码,对SEO有利。
    便于改版,便于控制和排班布局。表现和内容相分离。

  34. 定位 列举CSS中position的参数和作用?
    四种定位:absolute:绝对定位。relative:相对定位。fixed:固定定位。 static:元素框正常生成。

  35. 清除浮动和闭合浮动的不同点?
    设置高度的元素叫做闭合浮动。
    清除浮动:
    方法一:给父元素也设置高度
    方法二:使用CSS的overflow属性 overflow:hidden;或overflow:auto;
    方法三: 给父元素加伪元素
    ::after{
    content:“”;
    display:block;
    clear:both;
    }

     方法五:给父元素末尾加空标签,给空标签设置style=clear:both
    
  36. 给文字添加阴影用哪个属性?
    text-shadow:1px 1px 1px red;

  37. get post区别
    get数据添加在url中,而post参数添加在body实体中

  38. ES6新增常用方法
    (1) let和var 、const 的区别
    ①let定义的变量只能在代码块{ }里面使用,形成一个{}块级作用域 let不允许重复声明,
    ②var作用于函数作用域
    ③const用来定义常量,一旦定义了,后面就不能修改了

(2)箭头函数=>
this问题:
①function( )中 this 是指向调用这个函数的对象
②箭头函数中,this指向了window

arguments,不能使用
由于 this 在箭头函数中已经按照词法作用域绑定了,所以,用 call()或者apply()调用箭头函数时,无法对this进行绑定,即传入的第一个参数被忽略

(3)解构赋值

(4) 字符串模板 ``
(5) Map(数据结构)
(6) map(数组)“映射–原数组映射成新数组,一个对应一个”
forEach(数组)“循环–迭代”
filter (数组)“过滤器”
reduce (数组)“汇总–求和–多个变成一个”
(7) for of循环
(8)面向对象class
1. 使用了class关键字,现在构造函数和类分开了
2. class里面直接加方法
(9)模块化开发
exprot default // 导出
import XXXXXX from ’ XXXX.js ’ // 引入模块
(10)promise是什么?
1、主要用于异步计算
2、可以将异步操作队列化,按照期望的顺序执行,返回符合预期的结果
3、可以在对象之间传递和操作promise,帮助我们处理队列
promise有三个状态:
1、pending[待定]初始状态
2、fulfilled[实现]操作成功
3、rejected[被否决]操作失败

resolve作用是,将Promise对象的状态从“未完成”变为“成功”
resject作用是,将Promise对象的状态从“未完成”变为“失败”
.then()
1、接收两个函数作为参数,分别代表fulfilled(成功)和rejected(失败)
2、.then()返回一个新的Promise实例,所以它可以链式调用

  1. . 移动 点透问题
    引入 fastclick js 或者zepto 的top事件, 或者设置 300ms+

  2. 什么是 Event Loop?
    指的是计算机系统的一种运行机制。来解决单线程运行带来的一些问题。
    一般情况下,一个进程一次只能执行一个任务。

     (1)排队。因为一个进程一次只能执行一个任务,只好等前面的任务执行完了,再执行后面的任务。
     (2)新建进程。使用fork命令,为每个任务新建一个进程。
    
  3. 宏列队 微列队?
    1.js中为了防止线程阻塞,阻止全局代码的执行当全局队列执行完毕后,开始循环从 微队列->宏队列->微队列->宏队列…这种执行顺序执行下去。
    2、当一个宏观队列执行完毕,立刻执行最近添加的微观队列。

  4. 什么是跨域?
    (跨域就是两个页面的 协议 域名 端口 子域名 不同,会产生跨域)
    跨域是指a页面想获取b页面资源,如果a、b页面的协议、域名、端口、子域名不同,或是a页面为ip地址,b页面为域名地址,所进行的访问行动都是跨域的,而浏览器为了安全问题一般都限制了跨域访问,也就是不允许跨域请求资源。

  5. 为什么会存在跨域?
    因为浏览器的同源策略。

  6. 什么是同源策略?
    它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,浏览器很容易受到XSS、CSFR等攻击。
    所谓同源是指”协议+域名+端口”三者相同,即便两个不同的域名指向同一个ip地址,也不是同源。
    同源策略限制以下几种行为:
    1.) Cookie、LocalStorage 和 IndexDB 无法读取
    2.) DOM 和 Js对象无法获得
    3.) AJAX 请求不能发送

  7. 常见的跨域场景?
    http://www.domain.com/a.js
    http://www.domain.com/b.js 同一域名,不同文件或路径 允许
    http://www.domain.com/lab/c.js
    同一域名,不同端口 不允许
    同一域名,不同协议 不允许
    域名和域名对应相同ip 不允许
    主域相同,子域不同 不允许
    不同域名 不允许

  8. 解决跨域方案?
    1、 通过jsonp跨域
    2、 document.domain + iframe跨域
    3、 location.hash + iframe
    4、 window.name + iframe跨域
    5、 postMessage跨域
    6、 跨域资源共享(CORS)
    7、 nginx代理跨域
    8、 nodejs中间件代理跨域
    9、 WebSocket协议跨域

  9. XSS、CSFR安全问题,如何防御?
    XSS防御 :对内容进行转义和过滤 。html 实体 使用 XSS Filter JavaScript编码 ttp Only cookie
    XSS特点:能注入恶意的HTML/JavaScript代码到用户浏览的网页上,从而达到Cookie资料窃取、会话劫持、钓鱼欺骗等攻击。
    出现 XSS 原因:
    a:Web浏览器本身的设计不安全。浏览器能解析和执行JS等代码,但是不会判断该数据和程序代码是否恶意。
    b:输入和输出是Web应用程序最基本的交互,而且网站的交互功能越来越丰富。如果在这过程中没有做好安全防护,很容易会出现XSS漏洞。
    c:程序员水平参差不齐,而且大都没有过正规的安全培训,没有相关的安全意识。
    d:XSS攻击手段灵活多变。
    防御CSRF攻击
    防御方法:
    验证 HTTP Referer 字段;在请求地址中添加 token 并验证;在 HTTP 头中自定义属性并验证。

  10. 本地存储分为?
    html5中的Web Storage包括了两种存储方式:sessionStorage (塞申死陶制)和localStorage。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前前前端端端

你的打赏将是我创作的最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值