前端常见面试题(二)————前端

小小的提一下,面试时,面试官很喜欢看你的项目实践,就看你做过什么项目,如果一个都不写,可能会跪,然后围着你的项目去问细节。(自己些项目很重要)

正文部分:

1.var,let,const的区别:

(1).var可以变量提升:啥是变量提升?

var a=10   //全局变量
function fn() {
  console.log(a);//输出undefined
  var a=20;//var会把a这个声明提到作用域的顶端,var a;
  console.log(a);//20
}
fn()
console.log(a);//10

//上面的代码与下面的等同!

var a=10   //全局变量
function fn() {
  var a;  //只是声明放在顶端,值还在原来的位置!!!!而且以声明就把a局部重置了!!!
  console.log(a);//输出undefined,a局部重置了,重置了还没有值!!!
  a=20;//var会把a这个声明提到作用域的顶端,var a;
  console.log(a);//20
}
fn()
console.log(a);//10

变量提升:只提声明,不提数值的!

注:class声明类时,不存在变量提升。

(2).let和const声明只在他声明的代码块里面有效果。

(3).const声明后不能修改,声明必赋值!

注:const声明一对象,可以使用Object.freeze()来锁死数值。

2.js的基本数据类型:

boolean,null,number,underfined,string,Object,symbol(es6新增)

那么symbol是啥呢?

  • 表示独一无二的值
  • 声明时可以加参数,用与描述
  • 作为key时不能被遍历

3.移动端如何实现自适应?

  1. bootstrap 等ui框架
  2. rem
  3. vw和vh

4.你是怎么学前端的,你是怎么学某某技术(vue)的?

一般这题应该是看看你是不是培训班出来的。其实我也不知道,他问这个的具体意义。

5.如何解决跨域问题:

跨域问题是每一个前后端分离都会遇到的。

无法跨域一般都会报错:。。。。cors。。。。

说明cors这就是问题所在。主要是通过设置,access-control-allow-origin来实现的。

我用的是node,通过安装cors依赖。

//cors跨域问题
const cors = require('cors');
app.use(cors({
    origin:['http://localhost:8080'],
    methods:['GET','POST'],
}));

//跨域问题解决方面
app.all('*',function (req, res, next) {
  res.header('Access-Control-Allow-Origin', 'http://localhost:8080');
  res.header('Access-Control-Allow-Headers', 'Content-Type');
  res.header('Access-Control-Allow-Methods', 'PUT, POST, GET, DELETE, OPTIONS');
 next(); 
});

两种都行,你不确定就一起用了吧。

6.xml与json的区别:

个人喜欢json,数据简洁明了,而且还好调用,小程序,web应用,网站用这数据很方便。

  • 体积:json相对于xml来说,体积更小,传递速度更快。
  • 交互:json与js的交互更加方便,更加容易解析处理,更好的数据交互。
  • 级别:xml是重量级的,json是轻量级的。
  • 描述:json对数据描述性比xml的差。
  • 解析:json可用jackson,gson等方法解析,xml可用dom,sax,demo4j等方式解析。

7.Vue 有哪些指令?

v-html,v-show,v-if(v-else-if,v-else),v-for,v-cloak,v-text,v-bind,v-model,v-pre

8.前端如何优化网站性能?

  1. 减少 HTTP 请求数量
    • CSS Sprites:国内俗称 CSS 精灵,这是将多张图片合并成一张图片达到减少 HTTP 请求的一种解决方案,可以通过 CSS background 属性来访问图片内容。这种方案同时还可以减少图片总字节数。
    • 合并 CSS 和 JS 文件:现在前端有很多工程化打包工具,如:grunt、gulp、webpack等。为了减少 HTTP 请求数量,可以通过这些工具再发布前将多个 CSS 或者 多个 JS 合并成一个文件。
    • 采用 lazyLoad:俗称懒加载,可以控制网页上的内容在一开始无需加载,不需要发请求,等到用户操作真正需要的时候立即加载出内容。这样就控制了网页资源一次性请求数量。
  2. 控制资源文件加载优先级
    • 浏览器在加载HTML内容时,是将HTML内容从上至下依次解析,解析到link或者script标签就会加载href或者src对应链接内容,为了第一时间展示页面给用户,就需要将CSS提前加载,不要受 JS 加载影响。
    • 一般情况下都是CSS在头部,JS在底部
  3. 减少DOM操作和图标使用iconfont代替。多利用浏览器缓存。

9.对以后自己的前端职业路线,怎么规划?

这东西都是自由发挥的,可能说好点能加印象分。

10.前端页面有哪三层构成, 分别是什么?作用是什么?

结构层 Html ,表示层 CSS ,行为层 js。

11.行内元素有哪些?块级元素有哪些?CSS 的盒模型?

块级元素: div p h1 h2 h3 h4 form ul
行内元素: a b br i span input select
Css 盒模型:内容, border ,margin, padding

12简介盒子模型:

CSS 的盒子模型有两种: IE 盒子模型、 标准的 W3C 盒子模型模型
盒模型: 内容、 内边距、 外边距( 一般不计入盒子实际宽度) 、 边框

13.Sass、 LESS 是什么? 大家为什么要使用他们?

他们是 CSS 预处理器。 他们是 CSS 上的一种抽象层。 他们是一种特殊的语法/语言编译成 CSS。
例如 Less 是一种动态样式语言. 将 CSS 赋予了动态语言的特性, 如变量, 继承, 运算, 函数. LESS 既可以在客户端上运行 (支持 IE 6+, Webkit, Firefox), 也可一在服务端运行(借助 Node.js)。
为什么要使用它们?
结构清晰, 便于扩展。
可以方便地屏蔽浏览器私有语法差异。 这个不用多说, 封装对浏览器语法差异的重复处理,减少无意义的机械劳动。可以轻松实现多重继承。

完全兼容 CSS 代码, 可以方便地应用到老项目中。 LESS 只是在 CSS 语法上做了扩展, 所以老的 CSS 代码也可以与 LESS 代码一同编译。

14.CSS 中 link 和@import 的区别是:

Link 属于 html 标签, 而@import 是 CSS 中提供的
在页面加载的时候, link 会同时被加载, 而@import 引用的 CSS 会在页面加载完成后才会加载引用的 CSS
@import 只有在 ie5 以上才可以被识别, 而 link 是 html 标签, 不存在浏览器兼容性问题
Link 引入样式的权重大于@import 的引用( @import 是将引用的样式导入到当前的页面中)

10-19 05:43