都说金九银十是一个面试的好季节,最近在
GitHub
上看到了一些关于前端的面试题,也比较基础,在这里整理了一下,由于内容较多,在这里分为HTML
、CSS
、JavaScript
三篇,但愿能够对你们有所帮助,趁着“好季节”,找到本身心仪的工做,固然也包括我本身在内,你们一块儿加油哈!前端
由于掘金的某条沸点,在这里先说明一下,本篇文章适合目前正在找工做或者以为本身的基础不太扎实的小伙伴,大神就跳过吧O(∩_∩)O。git
转发自 github.com/yangshun/fr…github
DOCTYPE是“document type”的缩写。它是 HTML 中用来区分标准模式和怪异模式的声明,用来告知浏览器使用标准模式渲染页面。 从中得到的启发:在页面开始处添加便可。面试
这个问题有点问得含糊其辞,我认为这是在询问最多见的状况:如何提供包含多种语言内容的页面,并保证页面内容语言的一致性。浏览器
当客户端向服务器发送 HTTP 请求时,一般会发送有关语言首选项的信息,好比使用Accept-Language请求头。若是替换语言存在,服务器能够利用该信息返回与之相匹配的 HTML 文档。返回的 HTML 文档还应在标签中声明lang属性,好比...bash
在后台中,HTML 将包含i18n占位符和待以替换的内容,这些按照不一样语言,以 YML 或 JSON 格式存储。而后,服务器将动态生成指定语言内容的 HTML 页面。整个过程一般须要借助后台框架实现。服务器
在 JavaScript 框架变得流行以前,前端开发者常用data-属性,把额外数据存储在 DOM 自身中。当时没有其余 Hack 手段(好比使用非标准属性或 DOM 上额外属性)。这样作是为了将自定义数据存储到页面或应用中,对此没有其余更适当的属性或元素。cookie
而如今,不鼓励使用data-属性。缘由之一是,用户能够经过在浏览器中利用检查元素,轻松地修改属性值,借此修改数据。数据模型最好存储在 JavaScript 自己中,并利用框架提供的数据绑定,使之与 DOM 保持更新。网络
1.语义 - 提供更准确地描述内容。
2.链接 - 提供新的方式与服务器通讯。
3.离线和存储 - 容许网页在本地存储数据并有效地离线运行。
4.多媒体 - 在 Open Web 中,视频和音频被视为一等公民(first-class citizens)。
5.2D/3D 图形和特效 - 提供更多种演示选项。
6.性能和集成 - 提供更快的访问速度和性能更好的计算机硬件。
7.设备访问 - 容许使用各类输入、输出设备。
8.外观 - 能够开发丰富的主题。
复制代码
cookie | localStorage | sessionStorage | |
---|---|---|---|
由谁初始化 | 客户端或服务器,服务器可使用Set-Cookie请求头 | 客户端 | 客户端 |
过时时间 | 手动设置 | 永不过时 | 当前页面关闭时 |
在当前浏览器会话(browser sessions)中是否保持不变 | 取决因而否设置了过时时间 | 是 | 否 |
是否随着每一个 HTTP 请求发送给服务器 | 是,Cookies 会经过Cookie请求头,自动发送给服务器 | 否 | 否 |
容量(每一个域名) | 4kb | 5MB | 5MB |
访问权限 | 任意窗口 | 任意窗口 | 当前页面窗口 |
<script>
、<script async>
和<script defer>
的区别<script>
- HTML 解析中断,脚本被提取并当即执行。执行结束后,HTML 解析继续。session
<script async>
- 脚本的提取、执行的过程与 HTML 解析过程并行,脚本执行完毕可能在 HTML 解析完毕以前。当脚本与页面上其余脚本独立时,可使用async,好比用做页面统计分析。
<script defer>
- 脚本仅提取过程与 HTML 解析过程并行,脚本的执行将在 HTML 解析完毕后进行。若是有多个含defer的脚本,脚本的执行顺序将按照在 document 中出现的位置,从上到下顺序执行。
注意:没有src属性的脚本,async和defer属性会被忽略。
<link>
标签放在<head></head>
之间?为何最好把 JS 的<script>
标签刚好放在</body>
以前,有例外状况吗?把<link>放在<head>中
把<link>标签放在<head></head>之间是规范要求的内容。此外,这种作法可让页面逐步呈现,提升了用户体验。将样式表放在文档底部附近,会使许多浏览器(包括 Internet Explorer)不能逐步呈现页面。一些浏览器会阻止渲染,以免在页面样式发生变化时,从新绘制页面中的元素。这种作法能够防止呈现给用户空白的页面或没有样式的内容。
把<script>标签刚好放在</body>以前
脚本在下载和执行期间会阻止 HTML 解析。把<script>标签放在底部,保证 HTML 首先完成解析,将页面尽早呈现给用户。
例外状况是当你的脚本里包含document.write()时。可是如今,document.write()不推荐使用。同时,将<script>标签放在底部,意味着浏览器不能开始下载脚本,直到整个文档(document)被解析。也许,对此比较好的作法是,<script>使用defer属性,放在<head>中。
复制代码
渐进式渲染是用于提升网页性能(尤为是提升用户感知的加载速度),以尽快呈现页面的技术。
在之前互联网带宽较小的时期,这种技术更为广泛。现在,移动终端的盛行,而移动网络每每不稳定,渐进式渲染在现代前端开发中仍然有用武之地。
一些举例:
图片懒加载——页面上的图片不会一次性所有加载。当用户滚动页面到图片部分时,JavaScript 将加载并显示图像。 肯定显示内容的优先级(分层次渲染)——为了尽快将页面呈现给用户,页面只包含基本的最少许的 CSS、脚本和内容,而后可使用延迟加载脚本或监听DOMContentLoaded/load事件加载其余资源和内容。 异步加载 HTML 片断——当页面经过后台渲染时,把 HTML 拆分,经过异步请求,分块发送给浏览器。更多相关细节能够在这里找到。
由于须要设计响应式图片。咱们可使用两个新的属性——srcset 和 sizes——来提供更多额外的资源图像和提示,帮助浏览器选择正确的一个资源。
srcset 定义了咱们容许浏览器选择的图像集,以及每一个图像的大小。
sizes 定义了一组媒体条件(例如屏幕宽度)而且指明当某些媒体条件为真时,什么样的图片尺寸是最佳选择。
因此,有了这些属性,浏览器会:
查看设备宽度 检查 sizes 列表中哪一个媒体条件是第一个为真 查看给予该媒体查询的槽大小 加载 srcset 列表中引用的最接近所选的槽大小的图像
文中若有错误,欢迎在评论区指正,若是这篇文章帮助到了你,欢迎点赞👍和关注,😀。