今天去了面试,实在太打击我了,不过而确实实实在在暴露除了自己的不足,很多东西都是一知半解,下面,总结一下问题和答案吧,我觉得自己答得不是很好的就会写的详细一点。
笔试题大多都是出自这里
https://blog.csdn.net/xm1037782843/article/details/80708533
面试也是从笔试题中抽问思路啊什么的,或者看着简历来问的,下面我详细的写一些自己答得不好的
绝对长度单位:彼此固定,不会因为其他元素的尺寸变化而变化。主要有cm mm Q in pc pt px
px:单位名称为像素,像素是固定大小的单元,用于屏幕媒体(即在电脑屏幕上读取)。一个像素等于电脑屏幕上的一个点 (是你屏幕分辨率的最小分割)。许多网页设计师在web文档使用像素单位以生产浏览器渲染的像素完美呈现的网站。像素单位的一个问题是在IE下无法用浏览器字体缩放的功能(影响不是很大)。
相对长度单位
指定相对于另一长度的长度。主要有em ex ch rem %和可视区百分比长度单位 vm vh vmin vmax
%: 百分比是一个相对长度单位,相对于包含块(containing block)的高宽或字体大小。关于包含块(containing block)的概念,不能简单地理解成是父元素。如果是静态定位和相对定位,包含块一般就是其父元素。如果是绝对定位的元素,包含块应该是离它最近的 position为非static属性的祖先元素。如果是固定定位的元素,它的包含块是视口(viewport)。
em:相对字体长度单位。如果用于font-size属性本身,则是相对于父元素的font-size。若用于其他属性(width,height),则是相对于本身元素的font-size。国外使用比较多;em单位有如下特点:
em的值并不是固定的;
em会继承父级元素的字体大小。
我们知道任意浏览器的默认字体大小都是16px。所有未经调整的浏览器都符合: 1em=16px。那么12px=0.75em,10px=0.625em。为了简化font-size的换算,需要在css中的body选择器中声明font-size=62.5%,这就使em值变为 16px*62.5%=10px, 这样12px=1.2em, 10px=1em, 也就是说只需要将你的原来的px数值除以10,然后换上em作为单位就行了。
rem:是CSS3新增的一个相对字体长度单位,只相对根元素即html元素字体大小所以我们只要在html标签上设置字体大小为标准,文档中的字体大小都会以此为参照,em是继承父元素的字体大小,可是当父元素字体大小改变时,又得重新计算了,这不怎么方便,还好rem解决了这个问题
display
文本属性:vertical-align、text-decoration、text-shadow、white-space、unicode-bidi
盒子模型属性
背景属性
定位属性:float、clear、position、top、right、bottom、left、min-height、min-width、max-width、max-height、overflow、clip、z-index
生成内容属性:content、counter-reset、counter-increment
轮廓样式属性:outline-style、outline-width、outline-color、outline
页面样式属性:size、page-break-before、page-break-after
声音样式属性:pause-before、pause-after、pause、cue-before、cue-after、cue、play-during
事件流:指从页面中接收事件的顺序,有冒泡流和捕获流。
事件冒泡即由最具体的元素(文档嵌套最深节点)接收,然后逐步上传至document
事件捕获会由最先接收到的元素然后传向最里边
DOM 2级事件包括:事件捕获阶段、处于目标阶段、事件冒泡阶段。
DOM 2级事件通过addEventListener和removeEventListenr管理
addEventListener(eventName,handlers,boolean);removeEventListener(),两个方法都一样接收三个参数,第一个参数为要处理的事件名,第二个参数为事件处理程序,第三个值为布尔值,false时表示事件在冒泡阶段调用事件处理程序,一般建议在冒泡阶段使用,特殊情况才在捕获阶段使用。
IE事件处理程序(IE和Opera支持):attachEvent(),detachEvent(),接收两个参数,事件名称和事件处理程序,通过attachEvent()添加的事件处理程序都会被添加到冒泡阶段,所以平时为了兼容更多的浏览器最好将事件添加到事件冒泡阶段,IE8及以前只支持事件冒泡
jsonp、 iframe、window.name、window.postMessage、服务器上设置代理页面
BFC全称叫做(Block Formatting Context)中文叫块级格式化上下文,是一个网页的概念。
BFC是W3C CSS2.1规范中的一个概念,它决定了元素如何对其内容进行定位,以及与其他元素的关系和相互作用、当涉及到可视化布局的时候,BFC提供了一个环境,HTML会在这个环境中按照一定的规则进行布局。一个环境中的元素不会影响到其他环境中的布局。比如浮动元素会形成BFC,浮动元素的内部子元素主要受改浮动元素影响,两个浮动元素之间是互不影响。也可以说BFC就是一个作用范围。
附一个讲解的链接:https://blog.csdn.net/return_js/article/details/81266131
因为我简历上写了主修课程有数据结构和算法,所以就问了我二叉树和冒泡排序,实现过程我还是会写的,但是要我说我真的不知道怎么说,可能我表达能力真的不行吧
function maoPaoPaiXun(arr) {
for(var i = 0; i < arr.length - 1; i++){
for(var j = 0; j < arr.length - 1 - i; j++){
if(arr[j] > arr[j+1]){
var temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
return arr;
}
// 静态props
父组件:
<button msg="hello"></button>
子组件
<template>
<div>{{msg}}</div> //输出 hello
</template>
<script>
props:['msg'] //子组件通过props选项接收父组件传参
</script>
// 动态props(要动态地绑定父组件的数据到子模板的props用 v-bind。每当父组件的数据变化时,该变化也会传导给子组件)
父组件: <button :msg="hello"></button>
// 子组件部分:
<template>
<input v-model="msg" @change="setMsg" />
</template>
<script>
export default{
data() {
return { msg: '' }
}
methods: {
setMsg() {
this.$emit('tansferUser',this.msg) //用 $emit 来遍历 transferUser 事件,并返回 this.msg
}
}
}
</script>
父组件部分:
<template>
<login @transferUser = "getMsg"></login>
</template>
//在父组件 App.vue 中,声明了一个方法 getMsg,用 transferUser 事件调用 getMsg 方法,获取到从子组件传递过来的参数 msg
<script>
import login from '子组件存放路径';
export default{
data() {
return { user:'' }
},
components:{
ligin
},
methods: {
getMsg(msg) { //msg就是从子组件传递过来的参数msg
this.user = msg;
}
}
}
</script>
// 发起异步请求
fetch('/api/todos')
.then(res => res.json())
.then(data => ({
data
}))
.catch(err => ({
err
}));
结束,祝我面试顺利。