<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>百度-文库-校招 on Last Stand</title><link>https://amatsuzero.github.io/LastStand/posts/frontend/interview-experiences/experience-45/</link><description>Recent content in 百度-文库-校招 on Last Stand</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Sat, 19 Jul 2025 07:40:07 +0000</lastBuildDate><atom:link href="https://amatsuzero.github.io/LastStand/posts/frontend/interview-experiences/experience-45/index.xml" rel="self" type="application/rss+xml"/><item><title>百度-文库-校招 · 第 1 轮 · 一面</title><link>https://amatsuzero.github.io/LastStand/posts/frontend/interview-experiences/experience-45/round-61/</link><pubDate>Sat, 19 Jul 2025 07:40:07 +0000</pubDate><guid>https://amatsuzero.github.io/LastStand/posts/frontend/interview-experiences/experience-45/round-61/</guid><description>&lt;blockquote&gt;
&lt;p&gt;← 已是第一轮 · &lt;a href="https://amatsuzero.github.io/LastStand/posts/frontend/interview-experiences/experience-45/"&gt;返回本次面经&lt;/a&gt; · &lt;a href="https://amatsuzero.github.io/LastStand/posts/frontend/interview-experiences/experience-45/round-62/"&gt;第 1 轮&lt;/a&gt; →&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;本轮要点：&lt;/strong&gt; 本轮面试侧重于考察候选人的JavaScript基础知识、CSS布局能力、对浏览器工作原理的理解以及实际编码能力。重点在于事件循环、异步编程、闭包、原型链等核心概念，同时也涵盖了跨域、缓存等常见Web问题。&lt;/p&gt;
&lt;p&gt;本轮共 11 道题。答案默认折叠，便于先自行作答。&lt;/p&gt;
&lt;h2 id="question-subjective-a49bd92d13fb"&gt;1. 实现一个三栏布局，左右侧固定200px，中间自适应，写出至少两种方案。追问：Grid布局中fr单位的作用？如何解决Flex布局的浏览器兼容问题？&lt;/h2&gt;
&lt;h3 id="题目要点"&gt;题目要点&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;CSS布局能力&lt;/strong&gt;：面试官想确认你是否熟练掌握现代CSS布局技术，如Flexbox和Grid，以及是否了解传统的布局方法。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;布局方案的优劣对比&lt;/strong&gt;：能否分析不同方案的适用场景和优缺点，体现出技术选型的思考能力。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CSS单位的理解&lt;/strong&gt;：对&lt;code&gt;fr&lt;/code&gt;这类现代布局单位的深入理解，表明你不是只会“复制粘贴”代码。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;兼容性处理经验&lt;/strong&gt;：在实际项目中如何处理浏览器兼容性问题，这是衡量工程师经验的重要指标。&lt;/li&gt;
&lt;/ol&gt;
&lt;details&gt;
&lt;summary&gt;参考答案&lt;/summary&gt;
&lt;h5 id="11-原理说明"&gt;1.1 原理说明&lt;/h5&gt;
&lt;p&gt;三栏布局是前端开发中的经典布局问题，旨在实现一个两侧宽度固定、中间区域宽度自适应的页面结构。核心是处理中间区域如何填满剩余空间。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Flexbox（弹性盒子布局）&lt;/strong&gt;：是一种一维布局模型，它让容器内的项目（item）能够灵活地分配空间。通过设置父容器&lt;code&gt;display: flex&lt;/code&gt;，并为子项设置&lt;code&gt;flex-grow&lt;/code&gt;（放大比例）、&lt;code&gt;flex-shrink&lt;/code&gt;（缩小比例）和&lt;code&gt;flex-basis&lt;/code&gt;（基准大小），可以轻松实现空间的自适应分配。对于三栏布局，可以将中间栏的&lt;code&gt;flex-grow&lt;/code&gt;设为&lt;code&gt;1&lt;/code&gt;，使其占据所有剩余空间。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Grid（网格布局）&lt;/strong&gt;：是一种二维布局模型，可以将页面划分为行和列，并在这些行列构成的单元格中放置内容。通过&lt;code&gt;grid-template-columns&lt;/code&gt;属性，可以精确定义每一列的宽度，使用&lt;code&gt;fr&lt;/code&gt;单位可以非常方便地实现自适应。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;fr 单位&lt;/strong&gt;：&lt;code&gt;fr&lt;/code&gt;是 &amp;ldquo;fractional unit&amp;rdquo;（分数单位）的缩写，用于Grid布局中。它代表了可用空间的一等份。例如，&lt;code&gt;grid-template-columns: 200px 1fr 200px;&lt;/code&gt;意味着第一个和第三个元素宽度为&lt;code&gt;200px&lt;/code&gt;，中间的元素占据所有剩余的可用空间。如果是&lt;code&gt;1fr 2fr&lt;/code&gt;，则表示两者按1:2的比例分配可用空间。&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id="12-核心用法--示例代码"&gt;1.2 核心用法 + 示例代码&lt;/h5&gt;
&lt;p&gt;&lt;strong&gt;方案一：Flexbox 布局&lt;/strong&gt;这是目前最常用和推荐的方案，代码简洁且语义化。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;使用场景&lt;/strong&gt;：适用于绝大部分现代浏览器项目，尤其是一维方向（行或列）的布局。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;注意点&lt;/strong&gt;：需要注意旧版本浏览器的兼容性问题。&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;div class=&amp;#34;container-flex&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;div class=&amp;#34;left&amp;#34;&amp;gt;左侧固定&amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;div class=&amp;#34;main&amp;#34;&amp;gt;中间自适应&amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;div class=&amp;#34;right&amp;#34;&amp;gt;右侧固定&amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;style&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; .container-flex {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; display: flex;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; height: 100vh;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; .left, .right {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; width: 200px;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; background-color: #f0f0f0;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; .main {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; flex: 1; /* 等同于 flex-grow: 1; flex-shrink: 1; flex-basis: 0%; */
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; background-color: #e0e0e0;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;/style&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;方案二：Grid 布局&lt;/strong&gt;Grid布局在处理二维对齐时更具优势，实现三栏布局同样非常简单。&lt;/p&gt;</description></item><item><title>百度-文库-校招 · 第 1 轮 · 二面</title><link>https://amatsuzero.github.io/LastStand/posts/frontend/interview-experiences/experience-45/round-62/</link><pubDate>Sat, 19 Jul 2025 07:40:07 +0000</pubDate><guid>https://amatsuzero.github.io/LastStand/posts/frontend/interview-experiences/experience-45/round-62/</guid><description>&lt;blockquote&gt;
&lt;p&gt;← &lt;a href="https://amatsuzero.github.io/LastStand/posts/frontend/interview-experiences/experience-45/round-61/"&gt;第 1 轮&lt;/a&gt; · &lt;a href="https://amatsuzero.github.io/LastStand/posts/frontend/interview-experiences/experience-45/"&gt;返回本次面经&lt;/a&gt; · 已是最后一轮 →&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;本轮要点：&lt;/strong&gt; 二面深入考察了前端核心知识的应用和原理理解。重点包括CSS优先级、闭包与内存管理、JavaScript继承的多种实现方式、原型链的深层理解、虚拟DOM的性能优化原理以及Vue框架的高级特性。题目更侧重于“为什么”和“如何实现”，要求候选人不仅知其然，更要知其所以然。&lt;/p&gt;
&lt;p&gt;本轮共 12 道题。答案默认折叠，便于先自行作答。&lt;/p&gt;
&lt;h2 id="question-subjective-c29ace3f619f"&gt;1. 自我介绍，没有实习过。&lt;/h2&gt;
&lt;h3 id="题目要点"&gt;题目要点&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;沟通表达能力&lt;/strong&gt;：能否清晰、自信地介绍自己。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;潜力与热情&lt;/strong&gt;：在没有实习经历的情况下，如何通过个人项目、技术博客、开源贡献等来证明自己的技术热情和学习能力。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;求职动机&lt;/strong&gt;：为什么选择这个岗位和公司。&lt;/li&gt;
&lt;/ol&gt;
&lt;details&gt;
&lt;summary&gt;参考答案&lt;/summary&gt;
&lt;p&gt;此题为个人经验总结，请根据自身情况作答。核心是突出自己的优势、学习能力和对前端的热情，用项目经验或学习成果来弥补实习经历的不足。&lt;/p&gt;
&lt;/details&gt;
&lt;h2 id="question-subjective-0245f98e0d8a"&gt;2. 最终颜色是什么？为什么？&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#f92672"&gt;div&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;class&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;box&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;id&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;content&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;style&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;color:red&amp;#34;&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style="color:#f92672"&gt;div&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;.&lt;span style="color:#a6e22e"&gt;box&lt;/span&gt; { &lt;span style="color:#66d9ef"&gt;color&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;blue&lt;/span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;#content { &lt;span style="color:#66d9ef"&gt;color&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;green&lt;/span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="题目要点-1"&gt;题目要点&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;CSS优先级（Specificity）&lt;/strong&gt;：这是CSS核心概念之一，考察对不同选择器权重的理解和计算能力。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CSS规则来源&lt;/strong&gt;：是否了解行内样式、内部样式表、外部样式表的优先级关系。&lt;/li&gt;
&lt;/ol&gt;
&lt;details&gt;
&lt;summary&gt;参考答案&lt;/summary&gt;
&lt;h5 id="11-原理说明"&gt;1.1 原理说明&lt;/h5&gt;
&lt;p&gt;CSS的&lt;strong&gt;优先级（Specificity）&lt;/strong&gt;，也常被称为&lt;strong&gt;特殊性&lt;/strong&gt;或&lt;strong&gt;权重&lt;/strong&gt;，是浏览器用来决定当多个规则应用到同一个元素上时，哪一条规则生效的计算方法。&lt;/p&gt;
&lt;p&gt;优先级的计算规则可以总结为一个四元组 &lt;code&gt;(a, b, c, d)&lt;/code&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;a: 行内样式（Inline styles）&lt;/strong&gt;：如 &lt;code&gt;style=&amp;quot;color: red;&amp;quot;&lt;/code&gt;。如果存在，&lt;code&gt;a&lt;/code&gt;为1，否则为0。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;b: ID选择器&lt;/strong&gt;：如 &lt;code&gt;#content&lt;/code&gt;。&lt;code&gt;b&lt;/code&gt;为ID选择器的数量。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;c: 类选择器、属性选择器、伪类选择器&lt;/strong&gt;：如 &lt;code&gt;.box&lt;/code&gt;, &lt;code&gt;[type=&amp;quot;text&amp;quot;]&lt;/code&gt;, &lt;code&gt;:hover&lt;/code&gt;。&lt;code&gt;c&lt;/code&gt;为这些选择器的总数量。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;d: 标签选择器、伪元素选择器&lt;/strong&gt;：如 &lt;code&gt;div&lt;/code&gt;, &lt;code&gt;::before&lt;/code&gt;。&lt;code&gt;d&lt;/code&gt;为这些选择器的总数量。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;比较规则&lt;/strong&gt;：从&lt;code&gt;a&lt;/code&gt;开始，逐位比较。&lt;code&gt;a&lt;/code&gt;大的胜出；如果&lt;code&gt;a&lt;/code&gt;相同，则比较&lt;code&gt;b&lt;/code&gt;，&lt;code&gt;b&lt;/code&gt;大的胜出；以此类推。只有在优先级完全相同时，才会根据样式在代码中出现的&lt;strong&gt;顺序&lt;/strong&gt;来决定，“后来者居上”。&lt;/p&gt;
&lt;p&gt;另外，&lt;code&gt;!important&lt;/code&gt;声明拥有最高优先级，它会覆盖任何其他声明，但应避免滥用。&lt;/p&gt;
&lt;h5 id="12-核心用法--示例代码"&gt;1.2 核心用法 + 示例代码&lt;/h5&gt;
&lt;p&gt;我们来分析题目中的三个样式规则：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;行内样式&lt;/strong&gt;：&lt;code&gt;style=&amp;quot;color:red&amp;quot;&lt;/code&gt;&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;优先级计算：&lt;code&gt;a=1, b=0, c=0, d=0&lt;/code&gt; -&amp;gt; &lt;strong&gt;(1, 0, 0, 0)&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ID选择器&lt;/strong&gt;：&lt;code&gt;#content { color: green }&lt;/code&gt;&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;优先级计算：&lt;code&gt;a=0, b=1, c=0, d=0&lt;/code&gt; -&amp;gt; &lt;strong&gt;(0, 1, 0, 0)&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;类选择器&lt;/strong&gt;：&lt;code&gt;.box { color: blue }&lt;/code&gt;&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;优先级计算：&lt;code&gt;a=0, b=0, c=1, d=0&lt;/code&gt; -&amp;gt; &lt;strong&gt;(0, 0, 1, 0)&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;比较结果&lt;/strong&gt;：&lt;/p&gt;</description></item></channel></rss>