面试题思考 --九号公司 转载用户自由的电脑

174 阅读5分钟
面试题:

1.自我介绍
...

2.介绍盒模型
从概念入手:页面的每一个元素都可以看成是一个盒子来进行布局,浏览器在渲染的时候也会将网页中的元素看成一个个的盒子进行渲染。

这个问题一开始不需要回答有什么盒模型,应该先介绍一下盒子的组成。那么盒子的组成是那些东西呢?
content内容 padding内边距 border边框  marging外边距 
这些东西分别进行介绍
首先内容可以设置宽高,padding可以设置内容与边框四个方向的距离  边框可以设置粗细 样式 颜色 margin可以设置外边距也是四个方向

盒子类型:
1.内容盒子 content-box 设置的宽高就是内容的宽高 如何再设置paddingborder margin的话 那么盒子的大小就要由这些距离进行累加
### content-box盒子的宽高计算公式

**css中widthheight是设置内容区域的宽高,**  
盒子的宽高需要加上内间距和边框,外边距不算在内

**盒子宽度=内容的宽度+左右内间距+左右边框的宽度  
盒子高度=内容的高度+上下内间距+上下边框的宽度**
2.border-box 边框盒子(也叫怪异盒模型)
设置的widthheight是盒子最终的宽高
width/height = 内容宽 + padding + border 


那么  项目中通常使用border-box 怪异盒模型,这样就不需要再反复计算和改变盒子的大小,方便开发。


3.css高度塌陷
这就是那个例子 ul 里面li 背景没有撑开,li的元素都在盒子外面。
触发条件包含结构,所有的子元素浮动,且父元素没有设置高度,就会触发父元素[高度塌陷]

bfc 一下就能解决问题。常见的bfc 的方式 : 进行思考。 
清除浮动 overflow-hidden
设置高度 不适合
添加空标签并设置clear:both样式
伪元素before或者after 设置display:block;clear:both;visbility:hidden

4.垂直水平居中
那么
display:flex;
just-content:center;
algin-item:center;
等待验证。
margin: 50% 50% ;
transform:translateX(-50%)translateY(-50%) 偏移自身一半

5.基础类型和引用类型的区别
## 1.基本类型

基本的数据类型有:`undefined,[boolean](https://so.csdn.net/so/search?q=boolean&spm=1001.2101.3001.7020),number,string,null.基本类型的访问是按值访问的,就是说你可以操作保存在变量中的实际的值。 基本类型有以下几个特点:

**1.基本类型的值是不可变得:**

任何方法都无法改变一个基本类型的值
**2.基本类型的比较是值的比较:**

只有在它们的值相等的时候它们才相等。
## 2.引用类型



javascript中除了上面的基本类型(number,string,boolean,null,undefined)之外就是引用类型了,也可以说是就是对象了。对象是属性和方法的集合。

**3.引用类型的比较是引用的比较**

6.普通函数和箭头函数的this区别
普通函数的this指向本身,即调用者。箭头函数的this指向函数所在的上一级,如果没有就是指向window

7.改变函数this指向的方式
call apply bind

8.EventLoop
因为`js`是单线程的,如果某段程序需要等待一会再执行,后面的程序都会被阻塞,这样也就带来了一些问题。为了解决这个问题,`js`出现了**同步和异步**两种任务,两种任务的差异就在于执行的优先级不同。`event loop`就是对任务的执行顺序做了详细的规范。
事件循环(event loop)就是 任务在主线程不断进栈出栈的一个循环过程。任务会在将要执行时进入主线程,在执行完毕后会退出主线程。
 宏任务 微任务
## 任务的执行顺序

先到后:同步任务 -> 微任务 -> 宏任务。
常见的微任务有:`Promise.then()`,`.then`中的逻辑是微任务;`process.nextTick(node环境)`。  
常见的宏任务有:`setTimeout、setInterval`、`setImmediate(node环境)`、`xhr(发送网络请求)`,`callback`。

9.C接口的参数依赖于AB两个接口的结果应该怎么做
promise.all[A,B].then(C)

10.HTTP是哪一层的协议?与HTTPS的区别
http是服务层 https 是安全的加密协议

11.get和post的区别
1、get是从服务器上获取数据。

2、post是向服务器传送数据。
二、过程不zhi同

1、get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。

2、post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。

三、获取值不同

1、对于get方式,服务器端用Request.QueryString获取变量的值。

2、对于post方式,服务器端用Request.Form获取提交的数据。

四、传送数据量不同

1、get传送的数据量较小,不能大于2KB。

2、post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。

五、安全性不同
1、get安全性非常低。

2、post安全性较高。

12.ts和js的区别
ts强类型语言 js弱类型语言 

13.vue3和vue2的区别
响应式的方法发生了改变。