ZiuChen.github.io/assets/article_【2023】青训营 - 前端练习题汇总解析.md.4eb34c9d.js

295 lines
90 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import{_ as s,o as n,c as a,a as l}from"./app.6cf9e426.js";const A=JSON.parse('{"title":"【2023】青训营 - 前端练习题汇总解析","description":"","frontmatter":{},"headers":[{"level":2,"title":"选择题","slug":"选择题","link":"#选择题","children":[{"level":3,"title":"DAY 1","slug":"day-1","link":"#day-1","children":[]},{"level":3,"title":"DAY 2","slug":"day-2","link":"#day-2","children":[]},{"level":3,"title":"DAY 3","slug":"day-3","link":"#day-3","children":[]},{"level":3,"title":"DAY 4","slug":"day-4","link":"#day-4","children":[]},{"level":3,"title":"DAY 5","slug":"day-5","link":"#day-5","children":[]},{"level":3,"title":"DAY 6","slug":"day-6","link":"#day-6","children":[]},{"level":3,"title":"DAY 7","slug":"day-7","link":"#day-7","children":[]},{"level":3,"title":"DAY 8","slug":"day-8","link":"#day-8","children":[]},{"level":3,"title":"DAY 9","slug":"day-9","link":"#day-9","children":[]}]},{"level":2,"title":"编程题","slug":"编程题","link":"#编程题","children":[{"level":3,"title":"题目 1","slug":"题目-1","link":"#题目-1","children":[]},{"level":3,"title":"题目 2","slug":"题目-2","link":"#题目-2","children":[]},{"level":3,"title":"题目 3","slug":"题目-3","link":"#题目-3","children":[]}]}],"relativePath":"article/【2023】青训营 - 前端练习题汇总解析.md","lastUpdated":1676469217000}'),p={name:"article/【2023】青训营 - 前端练习题汇总解析.md"},e=l(`<h1 id="【2023】青训营-前端练习题汇总解析" tabindex="-1">【2023】青训营 - 前端练习题汇总解析 <a class="header-anchor" href="#【2023】青训营-前端练习题汇总解析" aria-hidden="true">#</a></h1><p>汇总了青训营官方账号每天发布的练习题,并且给出了答案、做了简单解析与知识扩充,有不足之处欢迎一起交流学习。</p><p>每天的选择题不同而编程题是一样的直接去Leetcode刷题即可。</p><h2 id="选择题" tabindex="-1">选择题 <a class="header-anchor" href="#选择题" aria-hidden="true">#</a></h2><h3 id="day-1" tabindex="-1">DAY 1 <a class="header-anchor" href="#day-1" aria-hidden="true">#</a></h3><h4 id="题目描述" tabindex="-1">题目描述 <a class="header-anchor" href="#题目描述" aria-hidden="true">#</a></h4><div class="language- line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">选择题 1 </span></span>
<span class="line"><span style="color:#A6ACCD;">下列哪些是 HTML5 的新特性? </span></span>
<span class="line"><span style="color:#A6ACCD;">A. 语义标签 </span></span>
<span class="line"><span style="color:#A6ACCD;">B. Canvas 绘图 </span></span>
<span class="line"><span style="color:#A6ACCD;">C. &lt;audio&gt;元素 </span></span>
<span class="line"><span style="color:#A6ACCD;">D. 增强型表单 </span></span>
<span class="line"><span style="color:#A6ACCD;"> </span></span>
<span class="line"><span style="color:#A6ACCD;">选择题 2 </span></span>
<span class="line"><span style="color:#A6ACCD;">下面可以继承的属性有哪些? </span></span>
<span class="line"><span style="color:#A6ACCD;">A. font-size </span></span>
<span class="line"><span style="color:#A6ACCD;">B. background </span></span>
<span class="line"><span style="color:#A6ACCD;">C. color </span></span>
<span class="line"><span style="color:#A6ACCD;">D. cursor</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br></div></div><h4 id="答案与解析" tabindex="-1">答案与解析 <a class="header-anchor" href="#答案与解析" aria-hidden="true">#</a></h4><div class="language- line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">1. ABCD</span></span>
<span class="line"><span style="color:#A6ACCD;">2. ACD</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br></div></div><h4 id="html5新增内容" tabindex="-1">HTML5新增内容 <a class="header-anchor" href="#html5新增内容" aria-hidden="true">#</a></h4><ul><li>语义化标签 <ul><li><code>header</code> <code>nav</code> <code>section</code> <code>article</code> <code>aside</code> <code>footer</code></li><li>使用语义化标签有利于SEO与无障碍</li></ul></li><li><code>&lt;video&gt;</code>与<code>&lt;audio&gt;</code>标签 <ul><li>支持引入外部视频/音频资源</li><li>可以搭配<code>&lt;source&gt;</code>标签实现fallback</li></ul></li><li><code>&lt;canvas&gt;</code>画布</li><li><code>&lt;input&gt; &lt;form&gt;</code>元素属性扩展 <ul><li><code>type</code>属性支持了更多的值 内置了更多的样式</li></ul></li><li>全局新增属性<code>data-*</code><ul><li>在JavaScript中可以通过DOM元素引用的<code>.dataset</code>直接获取到元素上的<code>data-*</code>属性的值</li><li>Vue的<code>Scoped Style</code>Github的贡献墙颜色都是基于<code>[data-*]</code>选择器</li></ul></li></ul><h4 id="css属性可继承性" tabindex="-1">CSS属性可继承性 <a class="header-anchor" href="#css属性可继承性" aria-hidden="true">#</a></h4><p>常见的CSS属性都支持继承不必特别记忆</p><ul><li>如果一个属性具备继承性,那么在该元素上设置后,它的后代元素都可以继承这个属性</li><li>如果后代元素自己设置有该属性,则会优先使用自己的属性</li><li>需要注意的是:子元素从父元素继承来的<code>font-size: 2em;</code>继承的是计算值,而不是原始值</li><li>如果父元素设置了<code>font-size: 2em;</code>,此时子元素再设置<code>font-size: 2em;</code>达到的效果实际上是在父元素的基础上的<code>2em</code>,实质上是<code>font-size: 4em;</code></li></ul><h4 id="强制继承" tabindex="-1">强制继承 <a class="header-anchor" href="#强制继承" aria-hidden="true">#</a></h4><p>如果某些属性不具备可继承性,我们希望子元素能够继承,则可以使用强制继承:</p><div class="language-css line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">css</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">.</span><span style="color:#FFCB6B;">father</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">{</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#B2CCD6;">border</span><span style="color:#89DDFF;">:</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">2px</span><span style="color:#A6ACCD;"> soild red</span><span style="color:#89DDFF;">;</span></span>
<span class="line"><span style="color:#89DDFF;">}</span></span>
<span class="line"><span style="color:#89DDFF;">.</span><span style="color:#FFCB6B;">child</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">{</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#B2CCD6;">border</span><span style="color:#89DDFF;">:</span><span style="color:#A6ACCD;"> inherit</span><span style="color:#89DDFF;">;</span></span>
<span class="line"><span style="color:#89DDFF;">}</span></span>
<span class="line"></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br></div></div><h3 id="day-2" tabindex="-1">DAY 2 <a class="header-anchor" href="#day-2" aria-hidden="true">#</a></h3><h4 id="题目描述-1" tabindex="-1">题目描述 <a class="header-anchor" href="#题目描述-1" aria-hidden="true">#</a></h4><div class="language- line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">选择题 1 </span></span>
<span class="line"><span style="color:#A6ACCD;">对于一条100M的宽带理论下载速度上限是多少 </span></span>
<span class="line"><span style="color:#A6ACCD;">A. 12.5MB/s </span></span>
<span class="line"><span style="color:#A6ACCD;">B. 100MB/s </span></span>
<span class="line"><span style="color:#A6ACCD;">C. 10MB/s </span></span>
<span class="line"><span style="color:#A6ACCD;">D. 10Mb/s </span></span>
<span class="line"><span style="color:#A6ACCD;"> </span></span>
<span class="line"><span style="color:#A6ACCD;">选择题 2 </span></span>
<span class="line"><span style="color:#A6ACCD;">关于 for of 和 for in 的描述,正确的是? </span></span>
<span class="line"><span style="color:#A6ACCD;">A. for in 可以循环普通对象 </span></span>
<span class="line"><span style="color:#A6ACCD;">B. for of 可以循环普通对象</span></span>
<span class="line"><span style="color:#A6ACCD;">C. 都不可以循环数组</span></span>
<span class="line"><span style="color:#A6ACCD;">D. 都可以循环数组</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br></div></div><h4 id="答案与解析-1" tabindex="-1">答案与解析 <a class="header-anchor" href="#答案与解析-1" aria-hidden="true">#</a></h4><div class="language- line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">1. A</span></span>
<span class="line"><span style="color:#A6ACCD;">2. AD</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br></div></div><h4 id="字节与比特" tabindex="-1">字节与比特 <a class="header-anchor" href="#字节与比特" aria-hidden="true">#</a></h4><p>运营商的100M指的是100Mb单位是<code>bit</code>,而日常使用中的网速单位是<code>Byte</code></p><p>换算公式是<code>1Byte = 8bit</code>,故<code>100 / 8 = 12.5MB/s</code></p><h4 id="for-in与for-of" tabindex="-1">for-in与for-of <a class="header-anchor" href="#for-in与for-of" aria-hidden="true">#</a></h4><ul><li><code>for-in</code>可以遍历数组与对象 得到的是索引/key</li><li><code>for-of</code>可以遍历数组但不能遍历对象 遍历数组得到的是值</li></ul><div class="language-js line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#C792EA;">const</span><span style="color:#A6ACCD;"> arr </span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;"> [</span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">abc</span><span style="color:#89DDFF;">&#39;</span><span style="color:#89DDFF;">,</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">cba</span><span style="color:#89DDFF;">&#39;</span><span style="color:#89DDFF;">,</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">nba</span><span style="color:#89DDFF;">&#39;</span><span style="color:#A6ACCD;">]</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#C792EA;">const</span><span style="color:#A6ACCD;"> obj </span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">{</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#F07178;">name</span><span style="color:#89DDFF;">:</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">Ziu</span><span style="color:#89DDFF;">&#39;</span><span style="color:#89DDFF;">,</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#F07178;">age</span><span style="color:#89DDFF;">:</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">18</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">}</span></span>
<span class="line"></span>
<span class="line"><span style="color:#89DDFF;"> </span><span style="color:#676E95;font-style:italic;">// for-in可以遍历数组</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;font-style:italic;">for</span><span style="color:#A6ACCD;"> (</span><span style="color:#C792EA;">const</span><span style="color:#A6ACCD;"> i </span><span style="color:#89DDFF;">in</span><span style="color:#A6ACCD;"> arr) </span><span style="color:#89DDFF;">{</span></span>
<span class="line"><span style="color:#F07178;"> </span><span style="color:#A6ACCD;">console</span><span style="color:#89DDFF;">.</span><span style="color:#82AAFF;">log</span><span style="color:#F07178;">(</span><span style="color:#A6ACCD;">i</span><span style="color:#F07178;">) </span><span style="color:#676E95;font-style:italic;">// 0 1 2</span></span>
<span class="line"><span style="color:#F07178;"> </span><span style="color:#89DDFF;">}</span></span>
<span class="line"></span>
<span class="line"><span style="color:#89DDFF;"> </span><span style="color:#676E95;font-style:italic;">// for-of可以遍历数组</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;font-style:italic;">for</span><span style="color:#A6ACCD;"> (</span><span style="color:#C792EA;">const</span><span style="color:#A6ACCD;"> i </span><span style="color:#89DDFF;">of</span><span style="color:#A6ACCD;"> arr) </span><span style="color:#89DDFF;">{</span></span>
<span class="line"><span style="color:#F07178;"> </span><span style="color:#A6ACCD;">console</span><span style="color:#89DDFF;">.</span><span style="color:#82AAFF;">log</span><span style="color:#F07178;">(</span><span style="color:#A6ACCD;">i</span><span style="color:#F07178;">) </span><span style="color:#676E95;font-style:italic;">// abc cba nba</span></span>
<span class="line"><span style="color:#F07178;"> </span><span style="color:#89DDFF;">}</span></span>
<span class="line"></span>
<span class="line"><span style="color:#89DDFF;"> </span><span style="color:#676E95;font-style:italic;">// for-in可以遍历对象的key值</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;font-style:italic;">for</span><span style="color:#A6ACCD;"> (</span><span style="color:#C792EA;">const</span><span style="color:#A6ACCD;"> i </span><span style="color:#89DDFF;">in</span><span style="color:#A6ACCD;"> obj) </span><span style="color:#89DDFF;">{</span></span>
<span class="line"><span style="color:#F07178;"> </span><span style="color:#A6ACCD;">console</span><span style="color:#89DDFF;">.</span><span style="color:#82AAFF;">log</span><span style="color:#F07178;">(</span><span style="color:#A6ACCD;">i</span><span style="color:#F07178;">) </span><span style="color:#676E95;font-style:italic;">// name age</span></span>
<span class="line"><span style="color:#F07178;"> </span><span style="color:#89DDFF;">}</span></span>
<span class="line"></span>
<span class="line"><span style="color:#89DDFF;"> </span><span style="color:#676E95;font-style:italic;">// for-of不能遍历对象 会报错</span></span>
<span class="line"><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;font-style:italic;">for</span><span style="color:#A6ACCD;"> (</span><span style="color:#C792EA;">const</span><span style="color:#A6ACCD;"> i </span><span style="color:#89DDFF;">of</span><span style="color:#A6ACCD;"> obj) </span><span style="color:#89DDFF;">{</span></span>
<span class="line"><span style="color:#F07178;"> </span><span style="color:#A6ACCD;">console</span><span style="color:#89DDFF;">.</span><span style="color:#82AAFF;">log</span><span style="color:#F07178;">(</span><span style="color:#A6ACCD;">i</span><span style="color:#F07178;">) </span><span style="color:#676E95;font-style:italic;">// Error</span></span>
<span class="line"><span style="color:#F07178;"> </span><span style="color:#89DDFF;">}</span></span>
<span class="line"></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br><span class="line-number">18</span><br><span class="line-number">19</span><br><span class="line-number">20</span><br><span class="line-number">21</span><br><span class="line-number">22</span><br><span class="line-number">23</span><br><span class="line-number">24</span><br><span class="line-number">25</span><br></div></div><h3 id="day-3" tabindex="-1">DAY 3 <a class="header-anchor" href="#day-3" aria-hidden="true">#</a></h3><h4 id="题目描述-2" tabindex="-1">题目描述 <a class="header-anchor" href="#题目描述-2" aria-hidden="true">#</a></h4><div class="language- line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">选择题 1 </span></span>
<span class="line"><span style="color:#A6ACCD;">关于事件冒泡描述正确的是? </span></span>
<span class="line"><span style="color:#A6ACCD;">A. 从目标元素向 document 冒泡 </span></span>
<span class="line"><span style="color:#A6ACCD;">B. 从 document 向目标元素冒泡 </span></span>
<span class="line"><span style="color:#A6ACCD;">C. 从 document 向目标元素冒泡,再从目标元素向 document 冒泡 </span></span>
<span class="line"><span style="color:#A6ACCD;">D. 以上都不是 </span></span>
<span class="line"><span style="color:#A6ACCD;"> </span></span>
<span class="line"><span style="color:#A6ACCD;">选择题 2 </span></span>
<span class="line"><span style="color:#A6ACCD;">以下哪些 script 标签属性会使脚本有可能在 DOMContentLoaded 事件之后加载? </span></span>
<span class="line"><span style="color:#A6ACCD;">A. &lt;script async&gt; </span></span>
<span class="line"><span style="color:#A6ACCD;">B. &lt;script defer&gt; </span></span>
<span class="line"><span style="color:#A6ACCD;">C. &lt;script type=&quot;module&quot;&gt; </span></span>
<span class="line"><span style="color:#A6ACCD;">D. &lt;script type=&quot;module&quot; async&gt;</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br></div></div><h4 id="答案与解析-2" tabindex="-1">答案与解析 <a class="header-anchor" href="#答案与解析-2" aria-hidden="true">#</a></h4><div class="language- line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">1. A</span></span>
<span class="line"><span style="color:#A6ACCD;">2. AD</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br></div></div><h4 id="冒泡与捕获" tabindex="-1">冒泡与捕获 <a class="header-anchor" href="#冒泡与捕获" aria-hidden="true">#</a></h4><p>事件冒泡:浏览器从触发事件的目标元素开始向上检查其祖先元素是否注册了此事件的监听器,如果其祖先元素注册了此事件监听回调,则触发回调。此操作会层层向上,直到<code>&lt;html&gt;</code>元素</p><p><a href="https://juejin.cn/post/7093018681621512222" target="_blank" rel="noreferrer">一文读懂事件冒泡与事件捕获</a></p><h4 id="script的defer-async属性" tabindex="-1">script的defer async属性 <a class="header-anchor" href="#script的defer-async属性" aria-hidden="true">#</a></h4><ul><li>defer 延迟加载 <ul><li>不会阻塞DOM Tree的构建过程</li><li>下载完成后 总会等待DOM Tree构建完成后执行</li><li>一定在<code>DOMContentLoaded</code>事件之前触发</li></ul></li><li>async 异步加载 <ul><li>不保证执行顺序 独立下载、独立运行</li><li>只要下载完成就立即执行 不保证在<code>DOMContentLoaded</code>之前或之后被执行</li></ul></li></ul><p>被标记为<code>type=&quot;module&quot;</code>的<code>&lt;script&gt;</code>会被浏览器识别为ES6 Module当浏览器解析到此<code>&lt;script&gt;</code>时将异步下载此脚本,不会造成堵塞浏览器,其本质上与<code>defer</code>是一致的:</p><div class="language-html line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">html</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">script</span><span style="color:#89DDFF;"> </span><span style="color:#C792EA;">type</span><span style="color:#89DDFF;">=</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">module</span><span style="color:#89DDFF;">&quot;</span><span style="color:#89DDFF;"> </span><span style="color:#C792EA;">src</span><span style="color:#89DDFF;">=</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">./foo.js</span><span style="color:#89DDFF;">&quot;</span><span style="color:#89DDFF;">&gt;&lt;/</span><span style="color:#F07178;">script</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;">&lt;!-- 等同于 --&gt;</span></span>
<span class="line"><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;">script</span><span style="color:#89DDFF;"> </span><span style="color:#C792EA;">type</span><span style="color:#89DDFF;">=</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">module</span><span style="color:#89DDFF;">&quot;</span><span style="color:#89DDFF;"> </span><span style="color:#C792EA;">src</span><span style="color:#89DDFF;">=</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">./foo.js</span><span style="color:#89DDFF;">&quot;</span><span style="color:#89DDFF;"> </span><span style="color:#C792EA;">defer</span><span style="color:#89DDFF;">&gt;&lt;/</span><span style="color:#F07178;">script</span><span style="color:#89DDFF;">&gt;</span></span>
<span class="line"></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br></div></div><p>当然,如果额外添加了<code>async</code>标记,此脚本将在被下载完成后中断渲染,立即执行</p><p><a href="https://es6.ruanyifeng.com/#docs/module-loader" target="_blank" rel="noreferrer">Module 的加载实现</a></p><h3 id="day-4" tabindex="-1">DAY 4 <a class="header-anchor" href="#day-4" aria-hidden="true">#</a></h3><h4 id="题目描述-3" tabindex="-1">题目描述 <a class="header-anchor" href="#题目描述-3" aria-hidden="true">#</a></h4><div class="language- line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">选择题 1 </span></span>
<span class="line"><span style="color:#A6ACCD;">以下哪些是 CSS 块级元素的特性? </span></span>
<span class="line"><span style="color:#A6ACCD;">A. 宽度默认由其中的内容决定 </span></span>
<span class="line"><span style="color:#A6ACCD;">B. 高度默认由其中的内容决定 </span></span>
<span class="line"><span style="color:#A6ACCD;">C. 可以被分拆到多行 </span></span>
<span class="line"><span style="color:#A6ACCD;">D. 可以通过 height 属性指定高度 </span></span>
<span class="line"><span style="color:#A6ACCD;"> </span></span>
<span class="line"><span style="color:#A6ACCD;">选择题 2 </span></span>
<span class="line"><span style="color:#A6ACCD;">以下关于跨域说法错误的是? </span></span>
<span class="line"><span style="color:#A6ACCD;">A. http://example.com和https://example.com是相同的域名属于同源 </span></span>
<span class="line"><span style="color:#A6ACCD;">B. 跨域资源共享规范中规定了除了 GET 之外的 HTTP 请求,或者搭配某些 MINE 类型的 POST 请求,浏览器都需要先发一个 OPTIONS 请求。 </span></span>
<span class="line"><span style="color:#A6ACCD;">C. CSS 中通过 @font-face 使用字体也会有跨域问题 </span></span>
<span class="line"><span style="color:#A6ACCD;">D. CookieLocalStorage 和 IndexedDB 都会受到同源策略的限制</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br></div></div><h4 id="答案与解析-3" tabindex="-1">答案与解析 <a class="header-anchor" href="#答案与解析-3" aria-hidden="true">#</a></h4><div class="language- line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">1. BD</span></span>
<span class="line"><span style="color:#A6ACCD;">2. A</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br></div></div><h4 id="块级元素、行内级元素、行内块级元素" tabindex="-1">块级元素、行内级元素、行内块级元素 <a class="header-anchor" href="#块级元素、行内级元素、行内块级元素" aria-hidden="true">#</a></h4><p>块级元素在BFC中布局行内级元素在IFC中布局二者具有不同的特性</p><p>常见的块级(block)元素:<code>div</code> <code>h1</code> <code>p</code> 等</p><ul><li>每个块级元素都是独自占一行</li><li>元素的宽度如果不设置的话默认为父元素的宽度父元素宽度100%</li><li>高度、行高、外边距margin以及内边距padding都可以控制</li><li>多个块状元素从上至下排列</li></ul><p>常见的行内级(inline-level)元素:<code>a</code> <code>span</code> 等</p><ul><li>不能设置宽高,默认宽度就是它本身内容的宽度,不独占一行</li><li>高度、行高、外边距以及内边距都可以控制</li><li>但是之间会有空白缝隙,设置它上一级的 <code>font-size: 0;</code> 才能消除间隙</li></ul><p>常见的行内块级(inline-block)元素:<code>img</code> <code>button</code> <code>input</code> 等</p><ul><li>同时具有块级与行内级元素的特性</li><li>可以设置宽高,其默认宽高由其内容决定</li></ul><h4 id="跨域资源共享-cors" tabindex="-1">跨域资源共享 CORS <a class="header-anchor" href="#跨域资源共享-cors" aria-hidden="true">#</a></h4><p>CORS是常用的跨域解决办法之一下面简单列出纲要详细解析请见 <a href="https://developer.mozilla.org/zh-CN/docs/Web/HTTP/CORS" target="_blank" rel="noreferrer">跨域资源共享CORS</a></p><ul><li>什么是CORS可以解决哪些场景下的跨域问题</li><li>满足哪些条件的请求可以被识别为<code>简单请求</code></li><li>什么是预检请求?</li><li>附带身份凭证的跨域请求需要注意什么?</li></ul><p>简单介绍一下跨域的内容:</p><ul><li>跨域的概念 <ul><li>域名由<code>协议://域名:端口号</code>组成</li><li>三个部分有任一不同即被浏览器视为跨域</li><li>是浏览器的安全行为,跨域请求会被真实发出和处理,但响应会被浏览器拦截</li></ul></li><li>跨域的影响 <ul><li>不同域之间的资源不能共享(<code>Cookie LocalStorage IndexedDB</code>等)</li><li>无法接触非同源网页的DOM和js对象</li><li>无法向非同源地址发送Ajax请求</li></ul></li><li>跨域的解决方案 <ul><li>JSONP</li><li>CORS</li><li>代理服务器</li></ul></li></ul><p><a href="https://segmentfault.com/a/1190000040485198" target="_blank" rel="noreferrer">什么是跨域?出现原因及解决方法</a></p><h3 id="day-5" tabindex="-1">DAY 5 <a class="header-anchor" href="#day-5" aria-hidden="true">#</a></h3><h4 id="题目描述-4" tabindex="-1">题目描述 <a class="header-anchor" href="#题目描述-4" aria-hidden="true">#</a></h4><div class="language- line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">选择题 1 </span></span>
<span class="line"><span style="color:#A6ACCD;">下列哪些可以实现浏览器存储数据? </span></span>
<span class="line"><span style="color:#A6ACCD;">A. cookie </span></span>
<span class="line"><span style="color:#A6ACCD;">B. localStorage </span></span>
<span class="line"><span style="color:#A6ACCD;">C. session </span></span>
<span class="line"><span style="color:#A6ACCD;">D. sessionStorage </span></span>
<span class="line"><span style="color:#A6ACCD;"> </span></span>
<span class="line"><span style="color:#A6ACCD;">选择题 2 </span></span>
<span class="line"><span style="color:#A6ACCD;">对以下代码说法正确的是? </span></span>
<span class="line"><span style="color:#A6ACCD;">let arr = [1,2,3,4,5]; </span></span>
<span class="line"><span style="color:#A6ACCD;">let arr2 = [1, , 3]; </span></span>
<span class="line"><span style="color:#A6ACCD;">A. 执行 arr.length = 3此时数组为 [1,2,3] </span></span>
<span class="line"><span style="color:#A6ACCD;">B. 执行 arr[10] = 11此时 arr.length 为 6 </span></span>
<span class="line"><span style="color:#A6ACCD;">C. 执行 delete arr[2],此时 arr.length 为 4数组为 [1,2,4,5] </span></span>
<span class="line"><span style="color:#A6ACCD;">D. arr2.length 的长度为 2</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br></div></div><h4 id="答案与解析-4" tabindex="-1">答案与解析 <a class="header-anchor" href="#答案与解析-4" aria-hidden="true">#</a></h4><div class="language- line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">1. ABD</span></span>
<span class="line"><span style="color:#A6ACCD;">2. A</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br></div></div><h4 id="解析cookie-localstorage-sessionstorage异同" tabindex="-1">解析Cookie LocalStorage SessionStorage异同 <a class="header-anchor" href="#解析cookie-localstorage-sessionstorage异同" aria-hidden="true">#</a></h4><p><code>Cookie LocalStorage SessionStorage</code>都是保存在浏览器内部的数据</p><p>而<code>Session</code>一般是保存在服务器中,用来标识客户端会话信息。</p><table><thead><tr><th></th><th>Cookie</th><th>LocalStorage</th><th>SessionStorage</th></tr></thead><tbody><tr><td>大小</td><td>4Kb</td><td>5MB</td><td>5MB</td></tr><tr><td>兼容</td><td>H4/H5</td><td>H5</td><td>H5</td></tr><tr><td>访问</td><td>任何窗口</td><td>任何窗口</td><td>同一窗口</td></tr><tr><td>有效期</td><td>手动设置</td><td>无</td><td>窗口关闭</td></tr><tr><td>存储位置</td><td>浏览器和服务器</td><td>浏览器</td><td>浏览器</td></tr><tr><td>与请求一起发送</td><td>是</td><td>否</td><td>否</td></tr><tr><td>语法</td><td>复杂</td><td>简单</td><td>简单</td></tr></tbody></table><ul><li>Cookie是由<code>?key1=value1;key2=value2</code>组成的,可以通过<code>encodeURIComponent()</code>来保证它不包含任何逗号、分号或空格(cookie值中禁止使用这些值).</li><li>Cookie一般的字段有<code>path domain max-age expires secure</code></li><li>不同的host之间的localStorage、sessionStorage对象是隔离的</li></ul><h4 id="代码运行结果" tabindex="-1">代码运行结果 <a class="header-anchor" href="#代码运行结果" aria-hidden="true">#</a></h4><p>首先定义<code>arr</code>与<code>arr2</code>两个数组:</p><div class="language-js line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#C792EA;">let</span><span style="color:#A6ACCD;"> arr </span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;"> [</span><span style="color:#F78C6C;">1</span><span style="color:#89DDFF;">,</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">2</span><span style="color:#89DDFF;">,</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">3</span><span style="color:#89DDFF;">,</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">4</span><span style="color:#89DDFF;">,</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">5</span><span style="color:#A6ACCD;">]</span></span>
<span class="line"><span style="color:#C792EA;">let</span><span style="color:#A6ACCD;"> arr2 </span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;"> [</span><span style="color:#F78C6C;">1</span><span style="color:#89DDFF;">,</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">,</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">3</span><span style="color:#A6ACCD;">]</span></span>
<span class="line"></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br></div></div><p>A选项</p><div class="language-js line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">arr</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">length </span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">3</span></span>
<span class="line"><span style="color:#A6ACCD;">console</span><span style="color:#89DDFF;">.</span><span style="color:#82AAFF;">log</span><span style="color:#A6ACCD;">(arr) </span><span style="color:#676E95;font-style:italic;">// [1, 2, 3]</span></span>
<span class="line"></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br></div></div><p>B选项</p><div class="language-js line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">arr[</span><span style="color:#F78C6C;">10</span><span style="color:#A6ACCD;">] </span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">11</span></span>
<span class="line"><span style="color:#A6ACCD;">console</span><span style="color:#89DDFF;">.</span><span style="color:#82AAFF;">log</span><span style="color:#A6ACCD;">(arr</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">length) </span><span style="color:#676E95;font-style:italic;">// 11</span></span>
<span class="line"></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br></div></div><p>C选项</p><div class="language-js line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;">// 当你删除一个数组元素时,数组的长度不受影响。即便你删除了数组的最后一个元素也是如此。</span></span>
<span class="line"><span style="color:#89DDFF;">delete</span><span style="color:#A6ACCD;"> arr[</span><span style="color:#F78C6C;">2</span><span style="color:#A6ACCD;">]</span></span>
<span class="line"><span style="color:#A6ACCD;">console</span><span style="color:#89DDFF;">.</span><span style="color:#82AAFF;">log</span><span style="color:#A6ACCD;">(arr[</span><span style="color:#F78C6C;">2</span><span style="color:#A6ACCD;">]) </span><span style="color:#676E95;font-style:italic;">// undefined</span></span>
<span class="line"><span style="color:#A6ACCD;">console</span><span style="color:#89DDFF;">.</span><span style="color:#82AAFF;">log</span><span style="color:#A6ACCD;">(arr) </span><span style="color:#676E95;font-style:italic;">// [1, 2, &lt;empty item&gt;, 4, 5]</span></span>
<span class="line"><span style="color:#A6ACCD;">console</span><span style="color:#89DDFF;">.</span><span style="color:#82AAFF;">log</span><span style="color:#A6ACCD;">(arr</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">length) </span><span style="color:#676E95;font-style:italic;">// 5</span></span>
<span class="line"></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br></div></div><p>D选项</p><div class="language-js line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">console</span><span style="color:#89DDFF;">.</span><span style="color:#82AAFF;">log</span><span style="color:#A6ACCD;">(arr2</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">length) </span><span style="color:#676E95;font-style:italic;">// 3</span></span>
<span class="line"></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br></div></div><p>delete 操作符用于删除对象的某个属性;如果没有指向这个属性的引用,那它最终会被释放。</p><p><a href="https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/delete" target="_blank" rel="noreferrer">MDN: delete操作符</a></p><h3 id="day-6" tabindex="-1">DAY 6 <a class="header-anchor" href="#day-6" aria-hidden="true">#</a></h3><h4 id="题目描述-5" tabindex="-1">题目描述 <a class="header-anchor" href="#题目描述-5" aria-hidden="true">#</a></h4><div class="language- line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">选择题 1 </span></span>
<span class="line"><span style="color:#A6ACCD;">在 css 选择器当中,优先级排序正确的是? </span></span>
<span class="line"><span style="color:#A6ACCD;">A. id选择器&gt;标签选择器&gt;类选择器 </span></span>
<span class="line"><span style="color:#A6ACCD;">B. 标签选择器&gt;类选择器&gt;id选择器 </span></span>
<span class="line"><span style="color:#A6ACCD;">C. 类选择器&gt;标签选择器&gt;id选择器 </span></span>
<span class="line"><span style="color:#A6ACCD;">D. id选择器&gt;类选择器&gt;标签选择器 </span></span>
<span class="line"><span style="color:#A6ACCD;"> </span></span>
<span class="line"><span style="color:#A6ACCD;">选择题 2 </span></span>
<span class="line"><span style="color:#A6ACCD;">如以下代码所示,给 body 绑定两个事件后,调用 document.body.click() 输出的结果是? </span></span>
<span class="line"><span style="color:#A6ACCD;">document.body.addEventListener(&#39;click&#39;, () =&gt; { </span></span>
<span class="line"><span style="color:#A6ACCD;">Promise.resolve().then(() =&gt; console.log(1)) </span></span>
<span class="line"><span style="color:#A6ACCD;">console.log(2); </span></span>
<span class="line"><span style="color:#A6ACCD;">}, false); </span></span>
<span class="line"><span style="color:#A6ACCD;">document.body.addEventListener(&#39;click&#39;, () =&gt; { </span></span>
<span class="line"><span style="color:#A6ACCD;">Promise.resolve().then(() =&gt; console.log(3)) </span></span>
<span class="line"><span style="color:#A6ACCD;">console.log(4); </span></span>
<span class="line"><span style="color:#A6ACCD;">}, false); </span></span>
<span class="line"><span style="color:#A6ACCD;">A. 2, 4, 1, 3 </span></span>
<span class="line"><span style="color:#A6ACCD;">B. 2, 1, 4, 3 </span></span>
<span class="line"><span style="color:#A6ACCD;">C. 1, 2, 3, 4 </span></span>
<span class="line"><span style="color:#A6ACCD;">D. 1, 3, 2, 4</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br><span class="line-number">18</span><br><span class="line-number">19</span><br><span class="line-number">20</span><br><span class="line-number">21</span><br></div></div><h4 id="答案与解析-5" tabindex="-1">答案与解析 <a class="header-anchor" href="#答案与解析-5" aria-hidden="true">#</a></h4><div class="language- line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">1. D</span></span>
<span class="line"><span style="color:#A6ACCD;">2. B</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br></div></div><h4 id="css选择器优先级" tabindex="-1">CSS选择器优先级 <a class="header-anchor" href="#css选择器优先级" aria-hidden="true">#</a></h4><p>内联样式 &gt; <strong>ID选择器 &gt; 类选择器 &gt; 标签选择器</strong> &gt; 通配符</p><p>不同选择器权重值不同,权重值更高的属性值会覆盖更低的值</p><ul><li><code>!important</code> 10000</li><li><code>内联样式</code> 1000</li><li><code>id选择器</code> 100</li><li><code>类选择器、属性选择器、伪类</code> 10</li><li><code>元素选择器、伪元素</code> 1</li><li><code>通配符</code> 0</li></ul><h4 id="事件循环" tabindex="-1">事件循环 <a class="header-anchor" href="#事件循环" aria-hidden="true">#</a></h4><p>需要了解浏览器的事件循环机制才能解出此题,以下是一些可能需要掌握的概念:</p><ul><li>JavaScript是单线程的</li><li>浏览器事件循环机制</li><li>主线程、宏任务队列、微任务队列、常见的宏任务与微任务</li><li>任务执行队列、函数执行栈</li></ul><h3 id="day-7" tabindex="-1">DAY 7 <a class="header-anchor" href="#day-7" aria-hidden="true">#</a></h3><h4 id="题目描述-6" tabindex="-1">题目描述 <a class="header-anchor" href="#题目描述-6" aria-hidden="true">#</a></h4><div class="language- line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">选择题 1 </span></span>
<span class="line"><span style="color:#A6ACCD;">浮动会导致页面的非正常显示,以下几种清除浮动的方法,哪个是不推荐使用的? </span></span>
<span class="line"><span style="color:#A6ACCD;">A. 在浮动元素末尾添加一个空的标签例如 &lt;div style=”clear:both”&gt;&lt;/div&gt; </span></span>
<span class="line"><span style="color:#A6ACCD;">B. 通过设置父元素overflow值为hidden </span></span>
<span class="line"><span style="color:#A6ACCD;">C. 给父元素添加clearfix类 </span></span>
<span class="line"><span style="color:#A6ACCD;">D. 父元素也设置浮动 </span></span>
<span class="line"><span style="color:#A6ACCD;"> </span></span>
<span class="line"><span style="color:#A6ACCD;">选择题 2 </span></span>
<span class="line"><span style="color:#A6ACCD;">以下代码的运行结果是? </span></span>
<span class="line"><span style="color:#A6ACCD;">var f = function () { console.log(&#39;1&#39;); } function f() { console.log(&#39;2&#39;); } </span></span>
<span class="line"><span style="color:#A6ACCD;">f() </span></span>
<span class="line"><span style="color:#A6ACCD;">A. undefined </span></span>
<span class="line"><span style="color:#A6ACCD;">B. 报错 </span></span>
<span class="line"><span style="color:#A6ACCD;">C. 2 </span></span>
<span class="line"><span style="color:#A6ACCD;">D. 1</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br></div></div><h4 id="答案与解析-6" tabindex="-1">答案与解析 <a class="header-anchor" href="#答案与解析-6" aria-hidden="true">#</a></h4><div class="language- line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">1. D</span></span>
<span class="line"><span style="color:#A6ACCD;">2. D</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br></div></div><h4 id="清除浮动的方法及原理" tabindex="-1">清除浮动的方法及原理 <a class="header-anchor" href="#清除浮动的方法及原理" aria-hidden="true">#</a></h4><p>什么是清除浮动?</p><p>当容器的高度为<code>auto</code>,且容器的内容中有浮动元素时,容器的高度不能自动伸长以适应内容的高度,这个时候就需要清除浮动,让容器的高度自动伸长以适应浮动元素。</p><p>清除浮动常用方法</p><ul><li>使用带clear属性的空元素 <ul><li>在浮动元素后使用一个空元素如<code>&lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;</code></li><li>并在CSS中赋予<code>.clear{ clear: both; }</code>属性即可清理浮动</li></ul></li><li>使用CSS的overflow属性 <ul><li>给父元素赋予<code>overflow: visible;</code>创建一个新的BFC <ul><li>浮动元素的父元素触发BFC形成独立的块级格式化上下文</li><li>浮动元素的父元素的高度值为autoheight的默认值即为auto</li></ul></li><li>BFC拥有自己的计算高度的方法与规则 <ul><li><strong>如果有浮动元素,那么会增加高度以包括这些浮动元素的下边缘</strong></li><li><a href="https://www.w3.org/TR/CSS2/visudet.html" target="_blank" rel="noreferrer">W3C 10.6.7 &#39;Auto&#39; heights for block formatting context roots</a></li></ul></li></ul></li><li>给浮动的元素的容器添加浮动 <ul><li>会导致父元素也跟着浮动 不常用 也不推荐</li></ul></li><li>使用邻接元素处理 <ul><li>给浮动元素后面的兄弟元素添加<code>clear</code>属性</li></ul></li><li>使用CSS的<code>::after</code>伪元素 <ul><li>给浮动元素的父元素末尾添加一个看不见的块元素Block element</li><li>给这个伪元素添加<code>clear</code>属性清理浮动</li></ul></li></ul><h4 id="变量提升" tabindex="-1">变量提升 <a class="header-anchor" href="#变量提升" aria-hidden="true">#</a></h4><p>题目涉及JavaScript的变量提升知识详细解析见</p><p><a href="https://developer.mozilla.org/zh-CN/docs/Glossary/Hoisting" target="_blank" rel="noreferrer">MDN 变量提升</a></p><p><a href="https://segmentfault.com/a/1190000039288278" target="_blank" rel="noreferrer">彻底解决JS变量提升的面试题</a></p><h3 id="day-8" tabindex="-1">DAY 8 <a class="header-anchor" href="#day-8" aria-hidden="true">#</a></h3><h4 id="题目描述-7" tabindex="-1">题目描述 <a class="header-anchor" href="#题目描述-7" aria-hidden="true">#</a></h4><div class="language- line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">选择题 1 </span></span>
<span class="line"><span style="color:#A6ACCD;">下列说法正确的有哪些? </span></span>
<span class="line"><span style="color:#A6ACCD;">A. visibility:hidden 表示所占据的空间位置仍然存在,仅为视觉上的完全透明 </span></span>
<span class="line"><span style="color:#A6ACCD;">B. display:none 不为被隐藏的对象保留其物理空间 </span></span>
<span class="line"><span style="color:#A6ACCD;">C. visibility:hidden 与display:none 两者没有本质上的区别 </span></span>
<span class="line"><span style="color:#A6ACCD;">D. visibility:hidden 回流与重绘 </span></span>
<span class="line"><span style="color:#A6ACCD;"> </span></span>
<span class="line"><span style="color:#A6ACCD;">选择题 2 </span></span>
<span class="line"><span style="color:#A6ACCD;">若主机甲与主机已已建立一条 TCP 链接最大段长MSS为 1KB往返时间RTT为 2 ms则在不出现拥塞的前提下拥塞窗口从 8KB 增长到 32KB 所需的最长时间是? </span></span>
<span class="line"><span style="color:#A6ACCD;">A. 4ms </span></span>
<span class="line"><span style="color:#A6ACCD;">B. 8ms </span></span>
<span class="line"><span style="color:#A6ACCD;">C. 24ms </span></span>
<span class="line"><span style="color:#A6ACCD;">D. 48ms</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br></div></div><h4 id="答案与解析-7" tabindex="-1">答案与解析 <a class="header-anchor" href="#答案与解析-7" aria-hidden="true">#</a></h4><div class="language- line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">1. AB(D)</span></span>
<span class="line"><span style="color:#A6ACCD;">2. D</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br></div></div><h4 id="回流与重绘" tabindex="-1">回流与重绘 <a class="header-anchor" href="#回流与重绘" aria-hidden="true">#</a></h4><ul><li>重绘不一定引起回流,而回流一定会引起重绘,所以回流是一件很消耗性能的事情</li><li>什么情况下会触发回流? <ul><li>DOM 结构发生改变(添加新的节点或者移除节点)</li><li>改变了布局修改了width height padding font-size等值</li><li>窗口resize修改了窗口的尺寸等</li><li>调用getComputedStyle方法获取尺寸、位置信息</li></ul></li><li>什么情况会触发重绘? <ul><li>修改背景色、文字颜色、边框颜色、样式等</li></ul></li></ul><p>元素的几种不同显示状态:</p><ul><li><code>display: none</code> 指的是元素完全不陈列出来不占据空间涉及到了DOM结构故产生reflow与repaint</li><li><code>visibility: hidden</code> 指的是元素不可见但存在保留空间不影响结构故只产生repaint但不可触发绑定事件</li><li><code>opacity: 0</code> 指的是元素不可见但存在保留空间不影响结构并且如果该元素已经绑定一些事件如click事件那么点击该区域也能触发点击事件的</li></ul><h4 id="拥塞窗口调整" tabindex="-1">拥塞窗口调整 <a class="header-anchor" href="#拥塞窗口调整" aria-hidden="true">#</a></h4><p>拥塞窗口调整有两种模式,一种是以指数增长的慢启动模式,另一种是以线性增长的拥塞避免模式</p><p>开始传输时是以慢启动模式调整拥塞窗口当窗口大小达到名为ssthresh的阈值时改用拥塞避免模式调整。</p><p>问“最长时间”应该就是指ssthresh非常小以至于一开始就是拥塞避免模式使得窗口调整的速度较慢每一个RTT会增加1个MSS这里是1KB</p><p>从8KB到32KB有24KB的调整空间就需要<code>24个RTT x 每个RTT的2ms</code>共计48ms</p><p><a href="https://zh.wikipedia.org/zh-tw/TCP%E6%8B%A5%E5%A1%9E%E6%8E%A7%E5%88%B6" target="_blank" rel="noreferrer">WikiPedia: TCP拥塞控制</a></p><h3 id="day-9" tabindex="-1">DAY 9 <a class="header-anchor" href="#day-9" aria-hidden="true">#</a></h3><h4 id="题目描述-8" tabindex="-1">题目描述 <a class="header-anchor" href="#题目描述-8" aria-hidden="true">#</a></h4><div class="language- line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">选择题 1 </span></span>
<span class="line"><span style="color:#A6ACCD;">以下对HTML标签的使用哪些是符合语义的 </span></span>
<span class="line"><span style="color:#A6ACCD;">A. 使用 table 展示表格数据 </span></span>
<span class="line"><span style="color:#A6ACCD;">B. 使用 span 表示按钮 </span></span>
<span class="line"><span style="color:#A6ACCD;">C. 使用 article 展示文章内容 </span></span>
<span class="line"><span style="color:#A6ACCD;">D. 使用 p 标签展示文章标题 </span></span>
<span class="line"><span style="color:#A6ACCD;"> </span></span>
<span class="line"><span style="color:#A6ACCD;">选择题 2 </span></span>
<span class="line"><span style="color:#A6ACCD;">包过滤防火墙对数据包的过滤依据不包括哪些? </span></span>
<span class="line"><span style="color:#A6ACCD;">A. 源IP地址 </span></span>
<span class="line"><span style="color:#A6ACCD;">B. 源端口号 </span></span>
<span class="line"><span style="color:#A6ACCD;">C. MAC 地址 </span></span>
<span class="line"><span style="color:#A6ACCD;">D. 目的 IP 地址</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br></div></div><h4 id="答案与解析-8" tabindex="-1">答案与解析 <a class="header-anchor" href="#答案与解析-8" aria-hidden="true">#</a></h4><div class="language- line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">1. AC</span></span>
<span class="line"><span style="color:#A6ACCD;">2. C</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br></div></div><h4 id="html5语义化标签" tabindex="-1">HTML5语义化标签 <a class="header-anchor" href="#html5语义化标签" aria-hidden="true">#</a></h4><p>解析略</p><h4 id="包过滤" tabindex="-1">包过滤 <a class="header-anchor" href="#包过滤" aria-hidden="true">#</a></h4><p>包过滤是在IP层实现的包过滤根据数据包的源IP地址、目的IP地址、协议类型TCP包、UDP包、ICMP包、源端口、目的端口等包头信息及数据包传输方向等信息来判断是否允许数据包通过</p><h2 id="编程题" tabindex="-1">编程题 <a class="header-anchor" href="#编程题" aria-hidden="true">#</a></h2><h3 id="题目-1" tabindex="-1">题目 1 <a class="header-anchor" href="#题目-1" aria-hidden="true">#</a></h3><div class="language- line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">**题目**</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span>
<span class="line"><span style="color:#A6ACCD;">给定一个十进制整数字符串,判断它是否是 4 的幂。</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span>
<span class="line"><span style="color:#A6ACCD;">**示例 1**</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span>
<span class="line"><span style="color:#A6ACCD;">输入:&quot;16&quot;输出true</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span>
<span class="line"><span style="color:#A6ACCD;">**示例 2**</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span>
<span class="line"><span style="color:#A6ACCD;">输入:&quot;101&quot;输出false</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span>
<span class="line"><span style="color:#A6ACCD;">**示例 3**</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span>
<span class="line"><span style="color:#A6ACCD;">输入:&quot;70368744177664&quot;输出true</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span>
<span class="line"><span style="color:#A6ACCD;">**限定语言:** C、 C++、Java、Python、JavaScript V8</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br></div></div><h4 id="题解" tabindex="-1">题解 <a class="header-anchor" href="#题解" aria-hidden="true">#</a></h4><p>TypeScript</p><div class="language-ts line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;">// LeetCode 342</span></span>
<span class="line"><span style="color:#C792EA;">function</span><span style="color:#A6ACCD;"> </span><span style="color:#82AAFF;">isPowerOfFour</span><span style="color:#89DDFF;">(</span><span style="color:#A6ACCD;font-style:italic;">n</span><span style="color:#89DDFF;">:</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">number</span><span style="color:#89DDFF;">):</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">boolean</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">{</span></span>
<span class="line"><span style="color:#F07178;"> </span><span style="color:#89DDFF;font-style:italic;">return</span><span style="color:#F07178;"> </span><span style="color:#A6ACCD;">n</span><span style="color:#F07178;"> </span><span style="color:#89DDFF;">&gt;</span><span style="color:#F07178;"> </span><span style="color:#F78C6C;">0</span><span style="color:#F07178;"> </span><span style="color:#89DDFF;">&amp;&amp;</span><span style="color:#F07178;"> (</span><span style="color:#A6ACCD;">n</span><span style="color:#F07178;"> </span><span style="color:#89DDFF;">&amp;</span><span style="color:#F07178;"> (</span><span style="color:#A6ACCD;">n</span><span style="color:#F07178;"> </span><span style="color:#89DDFF;">-</span><span style="color:#F07178;"> </span><span style="color:#F78C6C;">1</span><span style="color:#F07178;">)) </span><span style="color:#89DDFF;">===</span><span style="color:#F07178;"> </span><span style="color:#F78C6C;">0</span><span style="color:#F07178;"> </span><span style="color:#89DDFF;">&amp;&amp;</span><span style="color:#F07178;"> </span><span style="color:#A6ACCD;">n</span><span style="color:#F07178;"> </span><span style="color:#89DDFF;">%</span><span style="color:#F07178;"> </span><span style="color:#F78C6C;">3</span><span style="color:#F07178;"> </span><span style="color:#89DDFF;">===</span><span style="color:#F07178;"> </span><span style="color:#F78C6C;">1</span></span>
<span class="line"><span style="color:#89DDFF;">}</span></span>
<span class="line"></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br></div></div><h3 id="题目-2" tabindex="-1">题目 2 <a class="header-anchor" href="#题目-2" aria-hidden="true">#</a></h3><div class="language- line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">**题目**</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span>
<span class="line"><span style="color:#A6ACCD;">给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略空格、字母的大小写。</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span>
<span class="line"><span style="color:#A6ACCD;">**示例**</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span>
<span class="line"><span style="color:#A6ACCD;">输入:&quot;A man, a plan, a canal: Panama&quot;输出true</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span>
<span class="line"><span style="color:#A6ACCD;">**限定语言:** C、 C++、Java、Python、JavaScript V8</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br></div></div><h4 id="题解-1" tabindex="-1">题解 <a class="header-anchor" href="#题解-1" aria-hidden="true">#</a></h4><p>TypeScript</p><div class="language-ts line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;">// LeetCode 125</span></span>
<span class="line"><span style="color:#C792EA;">function</span><span style="color:#A6ACCD;"> </span><span style="color:#82AAFF;">isPalindrome</span><span style="color:#89DDFF;">(</span><span style="color:#A6ACCD;font-style:italic;">s</span><span style="color:#89DDFF;">:</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">string</span><span style="color:#89DDFF;">):</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">boolean</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">{</span></span>
<span class="line"><span style="color:#F07178;"> </span><span style="color:#C792EA;">let</span><span style="color:#F07178;"> </span><span style="color:#A6ACCD;">checkStr</span><span style="color:#F07178;"> </span><span style="color:#89DDFF;">=</span><span style="color:#F07178;"> </span><span style="color:#89DDFF;">&#39;&#39;</span></span>
<span class="line"><span style="color:#F07178;"> </span><span style="color:#C792EA;">let</span><span style="color:#F07178;"> </span><span style="color:#A6ACCD;">revStr</span><span style="color:#F07178;"> </span><span style="color:#89DDFF;">=</span><span style="color:#F07178;"> </span><span style="color:#89DDFF;">&#39;&#39;</span></span>
<span class="line"><span style="color:#89DDFF;"> </span><span style="color:#676E95;font-style:italic;">// 遍历原字符串</span></span>
<span class="line"><span style="color:#89DDFF;"> </span><span style="color:#676E95;font-style:italic;">// 1.将原串转为仅剩数字与小写字母 2.生成反转串</span></span>
<span class="line"><span style="color:#F07178;"> </span><span style="color:#89DDFF;font-style:italic;">for</span><span style="color:#F07178;"> (</span><span style="color:#C792EA;">let</span><span style="color:#F07178;"> </span><span style="color:#A6ACCD;">i</span><span style="color:#F07178;"> </span><span style="color:#89DDFF;">=</span><span style="color:#F07178;"> </span><span style="color:#F78C6C;">0</span><span style="color:#89DDFF;">;</span><span style="color:#F07178;"> </span><span style="color:#A6ACCD;">i</span><span style="color:#F07178;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;"> </span><span style="color:#A6ACCD;">s</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">length</span><span style="color:#89DDFF;">;</span><span style="color:#F07178;"> </span><span style="color:#A6ACCD;">i</span><span style="color:#89DDFF;">++</span><span style="color:#F07178;">) </span><span style="color:#89DDFF;">{</span></span>
<span class="line"><span style="color:#F07178;"> </span><span style="color:#89DDFF;font-style:italic;">if</span><span style="color:#F07178;"> (</span><span style="color:#82AAFF;">isAlnum</span><span style="color:#F07178;">(</span><span style="color:#A6ACCD;">s</span><span style="color:#F07178;">[</span><span style="color:#A6ACCD;">i</span><span style="color:#F07178;">])) </span><span style="color:#89DDFF;">{</span></span>
<span class="line"><span style="color:#F07178;"> </span><span style="color:#A6ACCD;">checkStr</span><span style="color:#F07178;"> </span><span style="color:#89DDFF;">+=</span><span style="color:#F07178;"> </span><span style="color:#A6ACCD;">s</span><span style="color:#F07178;">[</span><span style="color:#A6ACCD;">i</span><span style="color:#F07178;">]</span><span style="color:#89DDFF;">.</span><span style="color:#82AAFF;">toLocaleLowerCase</span><span style="color:#F07178;">()</span></span>
<span class="line"><span style="color:#F07178;"> </span><span style="color:#A6ACCD;">revStr</span><span style="color:#F07178;"> </span><span style="color:#89DDFF;">=</span><span style="color:#F07178;"> </span><span style="color:#A6ACCD;">s</span><span style="color:#F07178;">[</span><span style="color:#A6ACCD;">i</span><span style="color:#F07178;">]</span><span style="color:#89DDFF;">.</span><span style="color:#82AAFF;">toLocaleLowerCase</span><span style="color:#F07178;">() </span><span style="color:#89DDFF;">+</span><span style="color:#F07178;"> </span><span style="color:#A6ACCD;">revStr</span></span>
<span class="line"><span style="color:#F07178;"> </span><span style="color:#89DDFF;">}</span></span>
<span class="line"><span style="color:#F07178;"> </span><span style="color:#89DDFF;">}</span></span>
<span class="line"><span style="color:#F07178;"> </span><span style="color:#89DDFF;font-style:italic;">return</span><span style="color:#F07178;"> </span><span style="color:#A6ACCD;">checkStr</span><span style="color:#F07178;"> </span><span style="color:#89DDFF;">===</span><span style="color:#F07178;"> </span><span style="color:#A6ACCD;">revStr</span></span>
<span class="line"><span style="color:#89DDFF;">}</span></span>
<span class="line"></span>
<span class="line"><span style="color:#676E95;font-style:italic;">/**</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"> * 检查字符串是否仅由数字与小写字母组成</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"> * </span><span style="color:#89DDFF;font-style:italic;">@</span><span style="color:#C792EA;font-style:italic;">param</span><span style="color:#676E95;font-style:italic;"> </span><span style="color:#A6ACCD;font-style:italic;">s</span><span style="color:#676E95;font-style:italic;"> 待检查字符串</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"> */</span></span>
<span class="line"><span style="color:#C792EA;">function</span><span style="color:#A6ACCD;"> </span><span style="color:#82AAFF;">isAlnum</span><span style="color:#89DDFF;">(</span><span style="color:#A6ACCD;font-style:italic;">s</span><span style="color:#89DDFF;">:</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">string</span><span style="color:#89DDFF;">):</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">boolean</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">{</span></span>
<span class="line"><span style="color:#F07178;"> </span><span style="color:#89DDFF;font-style:italic;">return</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">/</span><span style="color:#89DDFF;font-style:italic;">^</span><span style="color:#89DDFF;">[</span><span style="color:#C3E88D;">a-z0-9</span><span style="color:#89DDFF;">]+</span><span style="color:#89DDFF;font-style:italic;">$</span><span style="color:#89DDFF;">/</span><span style="color:#F78C6C;">i</span><span style="color:#89DDFF;">.</span><span style="color:#82AAFF;">test</span><span style="color:#F07178;">(</span><span style="color:#A6ACCD;">s</span><span style="color:#F07178;">)</span></span>
<span class="line"><span style="color:#89DDFF;">}</span></span>
<span class="line"></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br><span class="line-number">18</span><br><span class="line-number">19</span><br><span class="line-number">20</span><br><span class="line-number">21</span><br><span class="line-number">22</span><br></div></div><h3 id="题目-3" tabindex="-1">题目 3 <a class="header-anchor" href="#题目-3" aria-hidden="true">#</a></h3><div class="language- line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">**题目**</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span>
<span class="line"><span style="color:#A6ACCD;">给定一个字符串,找出该字符串中最长回文子串的长度。</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span>
<span class="line"><span style="color:#A6ACCD;">**示例 1**</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span>
<span class="line"><span style="color:#A6ACCD;">输入:&quot;abc&quot;输出0</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span>
<span class="line"><span style="color:#A6ACCD;">**示例 2**</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span>
<span class="line"><span style="color:#A6ACCD;">输入:&quot;abcbe&quot;输出3</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span>
<span class="line"><span style="color:#A6ACCD;">**示例 3**</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span>
<span class="line"><span style="color:#A6ACCD;">输入:&quot;acdcecdcf&quot;输出7</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span>
<span class="line"><span style="color:#A6ACCD;">**限定语言:** C、 C++、Java、Python、JavaScript V8</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br></div></div><h4 id="题解-2" tabindex="-1">题解 <a class="header-anchor" href="#题解-2" aria-hidden="true">#</a></h4><p>TypeScript</p><div class="language-ts line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;">// LeetCode 5</span></span>
<span class="line"><span style="color:#C792EA;">function</span><span style="color:#A6ACCD;"> </span><span style="color:#82AAFF;">longestPalindrome</span><span style="color:#89DDFF;">(</span><span style="color:#A6ACCD;font-style:italic;">s</span><span style="color:#89DDFF;">:</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">string</span><span style="color:#89DDFF;">):</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">string</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">{</span></span>
<span class="line"><span style="color:#F07178;"> </span><span style="color:#C792EA;">const</span><span style="color:#F07178;"> </span><span style="color:#A6ACCD;">len</span><span style="color:#F07178;"> </span><span style="color:#89DDFF;">=</span><span style="color:#F07178;"> </span><span style="color:#A6ACCD;">s</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">length</span></span>
<span class="line"><span style="color:#F07178;"> </span><span style="color:#89DDFF;font-style:italic;">if</span><span style="color:#F07178;"> (</span><span style="color:#A6ACCD;">len</span><span style="color:#F07178;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;"> </span><span style="color:#F78C6C;">2</span><span style="color:#F07178;">) </span><span style="color:#89DDFF;font-style:italic;">return</span><span style="color:#F07178;"> </span><span style="color:#A6ACCD;">s</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F07178;"> </span><span style="color:#C792EA;">let</span><span style="color:#F07178;"> </span><span style="color:#A6ACCD;">maxLength</span><span style="color:#F07178;"> </span><span style="color:#89DDFF;">=</span><span style="color:#F07178;"> </span><span style="color:#F78C6C;">1</span></span>
<span class="line"><span style="color:#F07178;"> </span><span style="color:#C792EA;">let</span><span style="color:#F07178;"> </span><span style="color:#A6ACCD;">begin</span><span style="color:#F07178;"> </span><span style="color:#89DDFF;">=</span><span style="color:#F07178;"> </span><span style="color:#F78C6C;">0</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F07178;"> </span><span style="color:#89DDFF;font-style:italic;">for</span><span style="color:#F07178;"> (</span><span style="color:#C792EA;">let</span><span style="color:#F07178;"> </span><span style="color:#A6ACCD;">i</span><span style="color:#F07178;"> </span><span style="color:#89DDFF;">=</span><span style="color:#F07178;"> </span><span style="color:#F78C6C;">0</span><span style="color:#89DDFF;">;</span><span style="color:#F07178;"> </span><span style="color:#A6ACCD;">i</span><span style="color:#F07178;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;"> </span><span style="color:#A6ACCD;">len</span><span style="color:#F07178;"> </span><span style="color:#89DDFF;">-</span><span style="color:#F07178;"> </span><span style="color:#F78C6C;">1</span><span style="color:#89DDFF;">;</span><span style="color:#F07178;"> </span><span style="color:#A6ACCD;">i</span><span style="color:#89DDFF;">++</span><span style="color:#F07178;">) </span><span style="color:#89DDFF;">{</span></span>
<span class="line"><span style="color:#89DDFF;"> </span><span style="color:#676E95;font-style:italic;">// 头指针 从0遍历到len-1</span></span>
<span class="line"><span style="color:#F07178;"> </span><span style="color:#89DDFF;font-style:italic;">for</span><span style="color:#F07178;"> (</span><span style="color:#C792EA;">let</span><span style="color:#F07178;"> </span><span style="color:#A6ACCD;">j</span><span style="color:#F07178;"> </span><span style="color:#89DDFF;">=</span><span style="color:#F07178;"> </span><span style="color:#A6ACCD;">i</span><span style="color:#F07178;"> </span><span style="color:#89DDFF;">+</span><span style="color:#F07178;"> </span><span style="color:#F78C6C;">1</span><span style="color:#89DDFF;">;</span><span style="color:#F07178;"> </span><span style="color:#A6ACCD;">j</span><span style="color:#F07178;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;"> </span><span style="color:#A6ACCD;">len</span><span style="color:#89DDFF;">;</span><span style="color:#F07178;"> </span><span style="color:#A6ACCD;">j</span><span style="color:#89DDFF;">++</span><span style="color:#F07178;">) </span><span style="color:#89DDFF;">{</span></span>
<span class="line"><span style="color:#89DDFF;"> </span><span style="color:#676E95;font-style:italic;">// 尾指针 从1遍历到len</span></span>
<span class="line"><span style="color:#F07178;"> </span><span style="color:#89DDFF;font-style:italic;">if</span><span style="color:#F07178;"> (</span><span style="color:#A6ACCD;">j</span><span style="color:#F07178;"> </span><span style="color:#89DDFF;">-</span><span style="color:#F07178;"> </span><span style="color:#A6ACCD;">i</span><span style="color:#F07178;"> </span><span style="color:#89DDFF;">+</span><span style="color:#F07178;"> </span><span style="color:#F78C6C;">1</span><span style="color:#F07178;"> </span><span style="color:#89DDFF;">&gt;</span><span style="color:#F07178;"> </span><span style="color:#A6ACCD;">maxLength</span><span style="color:#F07178;"> </span><span style="color:#89DDFF;">&amp;&amp;</span><span style="color:#F07178;"> </span><span style="color:#82AAFF;">validPalindrome</span><span style="color:#F07178;">(</span><span style="color:#A6ACCD;">s</span><span style="color:#89DDFF;">,</span><span style="color:#F07178;"> </span><span style="color:#A6ACCD;">i</span><span style="color:#89DDFF;">,</span><span style="color:#F07178;"> </span><span style="color:#A6ACCD;">j</span><span style="color:#F07178;">)) </span><span style="color:#89DDFF;">{</span></span>
<span class="line"><span style="color:#89DDFF;"> </span><span style="color:#676E95;font-style:italic;">// 子串更长 且为回文字符串</span></span>
<span class="line"><span style="color:#F07178;"> </span><span style="color:#A6ACCD;">maxLength</span><span style="color:#F07178;"> </span><span style="color:#89DDFF;">=</span><span style="color:#F07178;"> </span><span style="color:#A6ACCD;">j</span><span style="color:#F07178;"> </span><span style="color:#89DDFF;">-</span><span style="color:#F07178;"> </span><span style="color:#A6ACCD;">i</span><span style="color:#F07178;"> </span><span style="color:#89DDFF;">+</span><span style="color:#F07178;"> </span><span style="color:#F78C6C;">1</span><span style="color:#F07178;"> </span><span style="color:#676E95;font-style:italic;">// 更新长度</span></span>
<span class="line"><span style="color:#F07178;"> </span><span style="color:#A6ACCD;">begin</span><span style="color:#F07178;"> </span><span style="color:#89DDFF;">=</span><span style="color:#F07178;"> </span><span style="color:#A6ACCD;">i</span><span style="color:#F07178;"> </span><span style="color:#676E95;font-style:italic;">// 更新头指针位置</span></span>
<span class="line"><span style="color:#F07178;"> </span><span style="color:#89DDFF;">}</span></span>
<span class="line"><span style="color:#F07178;"> </span><span style="color:#89DDFF;">}</span></span>
<span class="line"><span style="color:#F07178;"> </span><span style="color:#89DDFF;">}</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F07178;"> </span><span style="color:#89DDFF;font-style:italic;">return</span><span style="color:#F07178;"> </span><span style="color:#A6ACCD;">s</span><span style="color:#89DDFF;">.</span><span style="color:#82AAFF;">substring</span><span style="color:#F07178;">(</span><span style="color:#A6ACCD;">begin</span><span style="color:#89DDFF;">,</span><span style="color:#F07178;"> </span><span style="color:#A6ACCD;">begin</span><span style="color:#F07178;"> </span><span style="color:#89DDFF;">+</span><span style="color:#F07178;"> </span><span style="color:#A6ACCD;">maxLength</span><span style="color:#F07178;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F07178;"> </span><span style="color:#C792EA;">function</span><span style="color:#F07178;"> </span><span style="color:#82AAFF;">validPalindrome</span><span style="color:#89DDFF;">(</span><span style="color:#A6ACCD;font-style:italic;">str</span><span style="color:#89DDFF;">:</span><span style="color:#F07178;"> </span><span style="color:#FFCB6B;">string</span><span style="color:#89DDFF;">,</span><span style="color:#F07178;"> </span><span style="color:#A6ACCD;font-style:italic;">begin</span><span style="color:#89DDFF;">:</span><span style="color:#F07178;"> </span><span style="color:#FFCB6B;">number</span><span style="color:#89DDFF;">,</span><span style="color:#F07178;"> </span><span style="color:#A6ACCD;font-style:italic;">end</span><span style="color:#89DDFF;">:</span><span style="color:#F07178;"> </span><span style="color:#FFCB6B;">number</span><span style="color:#89DDFF;">)</span><span style="color:#F07178;"> </span><span style="color:#89DDFF;">{</span></span>
<span class="line"><span style="color:#F07178;"> </span><span style="color:#89DDFF;font-style:italic;">while</span><span style="color:#F07178;"> (</span><span style="color:#A6ACCD;">begin</span><span style="color:#F07178;"> </span><span style="color:#89DDFF;">&lt;</span><span style="color:#F07178;"> </span><span style="color:#A6ACCD;">end</span><span style="color:#F07178;">) </span><span style="color:#89DDFF;">{</span></span>
<span class="line"><span style="color:#F07178;"> </span><span style="color:#89DDFF;font-style:italic;">if</span><span style="color:#F07178;"> (</span><span style="color:#A6ACCD;">str</span><span style="color:#F07178;">[</span><span style="color:#A6ACCD;">begin</span><span style="color:#F07178;">] </span><span style="color:#89DDFF;">!==</span><span style="color:#F07178;"> </span><span style="color:#A6ACCD;">str</span><span style="color:#F07178;">[</span><span style="color:#A6ACCD;">end</span><span style="color:#F07178;">]) </span><span style="color:#89DDFF;font-style:italic;">return</span><span style="color:#F07178;"> </span><span style="color:#FF9CAC;">false</span></span>
<span class="line"><span style="color:#F07178;"> </span><span style="color:#A6ACCD;">begin</span><span style="color:#89DDFF;">++</span></span>
<span class="line"><span style="color:#F07178;"> </span><span style="color:#A6ACCD;">end</span><span style="color:#89DDFF;">--</span></span>
<span class="line"><span style="color:#F07178;"> </span><span style="color:#89DDFF;">}</span></span>
<span class="line"><span style="color:#F07178;"> </span><span style="color:#89DDFF;font-style:italic;">return</span><span style="color:#F07178;"> </span><span style="color:#FF9CAC;">true</span></span>
<span class="line"><span style="color:#F07178;"> </span><span style="color:#89DDFF;">}</span></span>
<span class="line"><span style="color:#89DDFF;">}</span></span>
<span class="line"></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br><span class="line-number">18</span><br><span class="line-number">19</span><br><span class="line-number">20</span><br><span class="line-number">21</span><br><span class="line-number">22</span><br><span class="line-number">23</span><br><span class="line-number">24</span><br><span class="line-number">25</span><br><span class="line-number">26</span><br><span class="line-number">27</span><br><span class="line-number">28</span><br><span class="line-number">29</span><br><span class="line-number">30</span><br><span class="line-number">31</span><br></div></div>`,150),o=[e];function r(c,t,i,y,C,d){return n(),a("div",null,o)}const b=s(p,[["render",r]]);export{A as __pageData,b as default};