这是一个让老前端叹息的时代,已经没几个人能搞懂CSS了。
我在35岁卡进阿里前端P7,从毕业后一直从事前端工作。先说结论,CSS在目前的前端面试中确实问得不多。主要原因是 CSS 现今的应用较少,知识点零散,面试中专门问CSS性价比很低。
往深处挖,CSS上手简单,精通却很难,还有不少遗留问题,大多数前端开发者抱着够用就行的心态,因此CSS的地位也在不断降低,进入了恶 性 循 环。
前两年我在美国的Apple做全栈工程师,由于对前端很感兴趣,又转回国内,几经辗转拿了阿里前端P7(踏上了不归路)。现在前前后后也面试了100+人。
接下来分享一些关于CSS的高频题。
CSS 中 link 和@import 的区别是?
(1) link 属于 HTML 标签,而@import 是 CSS 提供的
(2) 页面被加载的时,link 会同时被加载,而@import 被引用的 CSS 会等到引用
它的 CSS 文件被加载完再加载;
(3) import 只在 IE5 以上才能识别,而 link 是 HTML 标签,无兼容问题;
(4) link 方式的样式的权重 高于@import 的权重.
position:absolute 和 float 属性的异同
§ 共同点:对内联元素设置 float 和 absolute 属性,可以让元素脱离文档流,并且可以设置其宽高。
§ 不同点:float 仍会占据位置,absolute 会覆盖文档流中的其他元素。
CSS 选择符有哪些?哪些属性可以继承?优先级算法如何计算? CSS3 新增伪类 有那些?
1.id 选择器( # myid)
2.类选择器(.myclassname)
3.标签选择器(div, h1, p)
4.相邻选择器(h1 + p)
5.子选择器(ul > li)
6.后代选择器(lia)
7.通配符选择器( * )
8.属性选择器(a[rel = "external"])
9.伪类选择器(a: hover, li:nth-child)
优先级为:
!important > id > class > tag
important 比 内联优先级高,但内联比 id 要高
CSS3 新增伪类举例:
p:first-of-type 选择属于其父元素的首个
元素的每个
元素。
p:last-of-type 选择属于其父元素的最后
元素的每个
元素。
p:only-of-type 选择属于其父元素唯一的
元素的每个
元素。
p:only-child 选择属于其父元素的唯一子元素的每个
元素。
p:nth-child(2) 选择属于其父元素的第二个子元素的每个
元素。
:enabled :disabled 控制表单控件的禁用状态。
:checked 单选框或复选框被选中。
此外,还有:
CSS盒模型与弹性盒布局
CSS Module 的使用
什么是CSS modules?
接下来聊聊目前前端面试的高频题,以及学习路线。
JavaScript 再讲回来,JavaScript也属于编程基础知识,重点需要掌握的有:
类型:字符串值,数值,布尔值,数组,对象。
原型链:JavaScript继承的方法之一
作用域:作用域链的作用是保证执行环境里有权访问的变量和函数是有序的,作用域链的变量只能向上访问,变量访问到 window 对象即被终止,作用域链向下访问变量是不被允许的。
闭包:使用闭包主要是为了设计私有的方法和变量。闭包的优点是可以避免全局变量的污染,缺点是闭包会常驻内存,会增大内存使用量,使用不当很容易造成内存泄露。
在 js 中,函数即闭包,只有函数才会产生作用域的概念。
事件:HTML 事件是发生在 HTML 元素上的事情。当在HTML 页面中使用 JavaScript 时, JavaScript 可以触发这些事件。
异步:在函数返回的时候,调用者还不能够得到预期结果,而是将来通过一定的手段得到结果(例如回调函数)。
正则表达式:检索、替换那些符合某个模式(规则)的文本。
框架
其中,React、Vue、Angular重点掌握一款就好。
一、Angular
必须使用它的模块机制 ,必须使用它的依赖注入 ,必须使用它的特殊形式定义组件。Angular带有比较强的排他性,约束多,擅长复杂中后台场景和多人协作。
二、Vue
具有轻量级的框架,学习成本低,运行速度快,但社区可能没有Angular和React那么丰富,很缺乏高阶教程与文档,不利于seo优化。
三、Angular
可以学习模块化编程和如何测试模块,简化开发流程,随着google的大力支持和逐渐流行,有些岗位需要有angular的知识才能工作。