CSS类
1.解释浮动及其工作原理
浮动的元素可以向左或者向右移动,直到它的外边缘碰到包含元素(父元素)或另一个浮动元素的边框为止。要想使元素浮动,必须为元素设置一个宽度。虽然浮动的元素已不在文档流中, 但是它浮动后所处的位置依然在浮动之前的水平方向上。因为浮动元素不在文档流中,所以文档流中的块元素表现的就像浮动元素不存在一样,下面的元素会填补原来的位置。有些元素会在浮动元素的下方,但是这些内容的元素不一定会被浮动元素遮盖,当定位内联元素时,要考虑浮动元素的边界,围绕浮动元素放置内联元素。也可以把浮动元素想象成被块元素忽略的元素,而内联元素会关注的元素。
2.position:absolute和float属性的异同
共同点是对内联元素设置float和absolute属性,可以让元素脱离文档流,并且可以设置其宽高。 不同点是float仍可占据位置,不会覆盖在另一个BFC区域上,浮动的框可以向左或向右移动,直到其外边缘碰到包含框或另一个浮动框的边框为止。absolute覆盖文档流中的其他元素,即遮盖现象。。
3.说说你知道的css3新特性。
圆角(birder-radius),阴影(box-shadow)、对文字加特效(text-shadow),线性渐变(gradient),变换(transform)等等。
4.rgba()和opacity的透明效果有什么不同?
rbga()和opacity都能实现透明效果,但是最大的不同在于opacity是作用于元素,并且可以设置元素内所有内容的透明度;而rgba()只作用于元素的颜色或其背景色---设置rgba透明的元素的子元素不会继承透明的效果。
JavaScript
1.说说你对闭包的理解。
使用闭包只要是为了设计私有变量和方法。闭包的优点是可以避免全局变量的污染;缺点是闭包会常驻内存中,增加内存使用量,使用不当很容易造成内存泄漏,在JavaScript中,函数即闭包,只有函数才会产生作用域。 闭包有3个特性:
- 函数嵌套函数
- 在函数内部可以引用函数外部的参数和变量
- 函数和变量不会以垃圾回收机制回收
2.简单说说new操作符的作用。
作用如下: - 创建一个空对象
- 由this变量引用该对象
- 该对象继承该函数的原型(更改原型链的指向)
- 把属性和方法加入到this引用的对象中。
- 新创建的对象由this引用,最后隐式地返回this,过程可以了解一下:
var obj={}; obj.__proto__ =Base.prototype; Base.call(obj);
3. 说说你知道的那些操作会造成内存泄露。
内存泄露指不再拥有或需要任何对象(数据)之后,他们仍然存在于内存中。 提示:垃圾回收器定期扫描对象,并计算引用了每个对象的其他对象的数量。如果一个对象的引用数量为0,或该对象的唯一引用是循环,那么该对象占用的内存立即被回收。 如果setTimeout的第一个参数使用字符串而非函数,会引发内存泄漏。 闭包,控制台日志,循环(在两个对象彼此引用且彼此保留时,就会产生一个循环)等会造成内存泄露。
Vue
1.vue-router是什么?它有哪些参数?
导航钩子又称导航守卫,又分为全局钩子,单独酷游独享钩子和组件级钩子。 全局钩子有beforeEach,beforeResolve,afterEach 单个路由独享钩子有beforeEnter 组件级钩子有beforeRouterEnter,beforeRouterUpdate,beforeRouterLeave.它们有以下参数:
- to 即将要进入的路由目标对象
- from 当前导航正要离开的路由
- next 一定要用这个函数才能到达下一个路由,若不用就会遭到拦截。
2. 你是怎么认识vuex的?
vuex可以理解为是一种开发模式或框架,它是对Vue.js框架数据层面的扩展,通过状态(数据源)集中管理驱动组件的变化,应用的状态集中放在store中,改变状态的方式是提交mutations,这是个同步的事务,异步逻辑封装在action中。
3.描述Vue.js的特点。
- 简洁--页面由HTML模板+JSON数据+Vue.js实例化对象组成。
- 数据驱动--自动计算属性和追踪依赖的模板表达式
- 组件化--用可复用,解耦的组件来构造页面
- 轻量--代码量小,不依赖其他库
- 快速--精确而有效地批量实现DOM更新
- 易获取--精确而有效地批量实现DOM更新
其他
1.XSS 攻击是什么?如何防护?
:xss( Cros Site Seripting)攻击指码是攻击者向 Web 页面里插入恶意 HTML标签或者 JavaScript代码,比如,攻击者在论坛中放一个看似安全的链接,骗取用户单击并窃取 cookie 中的用户私密信息;或者攻击者在论坛中加一个恶意表单,当用户提交表单的时候,却把信息传送到攻击者的服务器中,而不是用户原本以为的信任站点。 要防范 XSS攻击,首先,在代码里对用户输入的地方和变量都需要仔细检查长度和对“<”“>”";"","等字符做过滤。其次,在把任何内容写到页面之前都必须进行编码,避免泄露 htmltag。在这一个层面做好,至少可以防止超过一半的 XSS 攻击。
2.说说 Git 中 merge 和 rebase 的区别。
在Git中,merge 和rebase 从最终效果来看没有任何区别,都是将不同分支的码融合在一起,但是生成的代码树稍有不同。rebase 操作不会生成新的节点,而是两个分支融合成一个线性的提交。而merge 操作生成的代码树会显得比较乱。