前端面试- basic interview questions

272 阅读6分钟

1.如何居中div?

Div{
Background:red;
Position:absulute;
Top:50%;
Left:50%;
Transform:translate(-50%,-50%);
}

2.居中一个浮动元素

.box{
position: relative;
left:50%;
float:left;
}
.item{
position: relative; 
left:-50%;
float:left;
background: red;
}

3.什么是盒子模型

Html每个元素都会被渲染成一个盒子,盒子具备content,padding,border,margin 四个属性

IE盒子模型将border、padding归属于content

4.Css选择器有哪些?哪些属性可以继承?

id选择器、类选择器、标签选择器、通配选择器、伪对象选择器

可以继承的有 font-size font-family color

5.浏览器的内核分别是什么?

IE内核: Trident Firefox内核:Gecko Safari内核:Webkit Opera内核:Presto——>Blink

Chrome内核:Blink/Chromium

6.html5有哪些新特性,移除了哪些元素?

绘画 canvas ,用于媒介回放的 video 和 audio 元素,本地离线存储 localStorage

长期存储数据内容元素,article、footer、header、nav、section。

表单控件,calendar、date、time、email、url、search。

控件元素,webworker, websockt, Geolocation。

移出的元素有下列这些:

显现层元素:basefont,big,center,font, s,strike,tt,u。

性能较差元素:frame,frameset,noframes。

7.行内元素有哪些?块级元素有哪些?空元素有哪些?

(1)行内元素有:a( 锚点) ,b(粗体(不推荐)) ,span(常用内联容器,定义文本内区块) img(图片) input(输入框) select(项目选择)

strong(粗体强调) label(表格标签) cite (引用)code(计算机代码)

(2)块级元素有:div ul(无序列表) ol(有序列表) dl(定义列表) table(表格)form(表单) h1 (一级标题))p(段落)pre(预格式化)

(3)常见的空元素: br\ hr\img\ input\ link\meta

8.html5的canvas有什么用

Canvas 元素用于在网页上绘制图形,该元素标签强大之处在于 可以直接在 HTML 上进行图形操作,

9.html5如何实现离线储存?有什么特点?

本地离线存储 localStorage 长期存储数据内容元素

在html标签里通过manifest属性引用一个cache.manifest文件,该文件里声明了浏览器需缓存的所有资源文件

配置服务器支持 cache.manifest 的Content-type: manifest

编写 cache.manifest 文件

html页面引用cache.manifest文件

离线浏览--用户可在离线时使用它们。

速度--已经缓存的资源加载得更快。

减少服务器负载--浏览器将只从服务器下载更改过的资源。

10.添加、移动、移除、复制、创建和查找节点?

(1)创建新节点

  createDocumentFragment()    //创建一个DOM片
  
  createElement()   //创建一个具体的元素
  
  createTextNode()   //创建一个文本节点

(2)添加、移除、替换、插入

  appendChild()
  removeChild()
  replaceChild()
  insertBefore()

(3)查找

  getElementsByTagName()    //通过标签名称
  getElementsByName()    //通过元素的Name属性的值
  getElementById()    //通过元素Id,唯一性

11.Document和innerHtml的区别?

document.write是直接写入到页面的内容流,如果在写之前没有调用document.open,

浏览器会自动调用open。每次写完关闭之后重新调用该函数,会导致页面被重写。

innerHTML则是DOM页面元素的一个属性,代表该元素的html内容。你可以精确到某一个具体的元素来进行更改。

如果想修改document的内容,则需要修改document.documentElement.innerElement。

innerHTML将内容写入某个DOM节点,不会导致页面全部重绘

innerHTML很多情况下都优于document.write,其原因在于其允许更精确的控制要刷新页面的那一个部分。

12.请求跨域资源的方法有哪些?

JSONP\ proxy [ˈprɑːksi]代理\ Cors \ xdr \中转服务器+ajax 1、 通过jsonp跨域

2、 document.domain + iframe跨域

3、 location.hash + iframe

4、 window.name + iframe跨域

5、 postMessage跨域

6、 跨域资源共享(CORS)

7、 nginx代理跨域

8、 nodejs中间件代理跨域

9、 WebSocket协议跨域

13.$(document).ready和window.onload的区别?

$(document).ready:是DOM结构绘制完毕后就执行,不必等到加载完毕。

意思就是DOM树加载完毕,就执行,不必等到页面中图片或其他外部文件都加载完毕。并且可以写多个.ready。

window.onload:是页面所有元素都加载完毕,包括图片等所有元素。只能执行一次。

14.jQuery中的选择器有哪些?

Id、类、*、元素、集合

15.简单实现$.ajax

$.ajax({
type:"get",
url:"http:/localhost:4002",
dataType:"json",
success:function(data){
show(data);
},
error: function(err){
console.log(err);
} 
})

16.jQuery添加元素的方法

1.append();    在所选元素的结尾添加

2.prepend();    在所选元素的开头添加

3.html();    在所选元素内添加,如果元素内之前有别的内容会覆盖掉

4.after();    在所选元素之后添加

5.before();   在所选元素之前添加

6.text();   在所选元素内添加文本内容

17.Active-class是哪个组件的属性?镶嵌路由怎么定义?

答:(active-class是vue-router模块的router-link组件中的属性,用来做选中样式的切换;)

嵌套路由是幻灯片的组件,router/index.js,我们把my,加了children,定义很多个子路由,子路由还可以继续嵌套路由。

定义方法:

细节,children注册,path不用斜杠,访问to:/my/login(组件里面写入children,path路径不用斜杠)

18.Vuex是什么怎么使用?使用场景?

vuex是vue框架中状态管理。在main.js引入store,注入。

新建了一个目录store,...export。应用场景有:单页应用中,组件之间的状态。

应用实例:音乐播放、登录状态、加入购物车等等

19.vue-cli中src目录下每个文件夹和文件的用法?

assets文件夹是放静态资源;

components是放组件;router是定义路由相关的配置;

view视图;

app.vue是一个应用主组件;

main.js是入口文件;

20.还用过哪些前端框架简介

React.js只是一个用于视图层的类库(lib)React.js并不是模板引擎

angular.js自带模板引擎,路由引擎,有健全的数据双向绑定机制,

内置Ajax请求功能,还能够定义Model。而React.js类库只能用于定义视图组件。

Vue.js相对于较轻量级、没有过多的插件、用什么装什么。

21.强缓存(Expires/max-age)和协商缓存(Last-Modified/E-tag)

强致缓存。在HTTP1.0中强缓存通过Expires响应头实现。 在HTTP1.1中,Cache-control响应头实现,其中max-age=xxx表示缓存资源将在xxx秒后过期。

协商缓存。在HTTP1.0中第一次请求资源时通过服务器设置Last-Modified响应头,填入最后修改时间。在之后的每次请求中都会在请求头中带上If-Modified-Since字段,如果未更新就返回304,指导浏览器从本地缓存中读取。 在HTTP1.1中,Etag设置响应头缓存标志。请求头附带If-None-Match。

区别: 强缓存只有首次请求会跟服务端通信,读取缓存资源时不用发送请求。返回200。 协商缓存总会与服务器交互,第一次是拿数据和E-tag的过程,之后每次凭E-tag询问是否更新。命中缓存返回304。 二者之间最大的区别就是:强缓存只通信一次;协商缓存每次都通信询问。