Pressidian
花园入口
笔记
项目
关于
实验室
GitHub
花园入口
笔记
项目
关于
实验室
GitHub

KNOWLEDGE PATHS

笔记库
当前位置
笔记库/前端/面试/面经

3百度-前端实习面试-一面

3 分钟阅读 · Note

目录树 578 篇

          • 0 面试技巧&HR面⬇️
          • 1磐松资产-前端实习-一面
          • 2字节跳动-豆包前端实习-全部
          • 3百度-前端实习面试-一面
          • 5光庭-前端实习-一面
          • 6懂车帝-前端实习-一面
          • 7字节-抖音团购-全部
          • 8腾讯-前端-全部
          • 9字节&美团-笔试
          • 10 美团-一面
          • 11 B站-一面
          • 12 腾讯-一面-企业微信团队
          • 13 腾讯-一面-腾讯金融科技
          • 14 腾讯-二面-腾讯金融科技
          • 15 美团-一面-核心本地商业
          • 16 斑马智行-全部
          • 17 字节-一面-飞书
          • 18 美团-二面-核心本地商业
          • 19 心影随形-全部
          • 20 thunderbit-全部
          • 21 converge ai-全部
          • 22 字节-国际化广告创意与品牌
        • 可投递企业
      • 前端技术栈
    • 笔记目录
    • CLAUDE.md
    • Vue 组件与 Render 函数

关联笔记 6

↗0 面试技巧&HR面⬇️同一路径↗10 美团-一面同一路径↗11 B站-一面同一路径↗12 腾讯-一面-企业微信团队同一路径↗13 腾讯-一面-腾讯金融科技同一路径↗14 腾讯-二面-腾讯金融科技同一路径
  • 3百度-前端实习面试-一面

3百度-前端实习面试-一面

> Last Format Time:6/12/2026 21:03:57

时间:11/25/25 一面 时长:40分钟左右 似乎是有两个面试官

流程

  • 自我介绍
  • 提问
  • 代码
  • 反问

提问

  • 你对于原生开发(ios与安卓)是否能够接受
  • 你的技术栈主要是Vue,我们的技术栈是React,面试过程中你是否会感到紧张
  • CSS中给左上和右下角进行边框设置
  • 说一下padding和margin的区别
  • 对于图片的object-position这个属性的常用的三个值 > ⚠️ 纠错:面试官可能问的是 object-fit 而非 object-position,object-fit 的常用值为 fill、contain、cover;object-position 用于设置图片在容器内的位置,常用值为 center、top、left 等。两者是不同的属性。
  • 手机的进程与线程的个数
  • 数据库事务的四个特征
  • 计算机网络,抓包
  • 获取加密信息比如,获取SSL/TLS加密后的内容
  • 操作系统进程死锁的条件

编程

  • 500毫秒之后输出一个时间戳
  • 判断一个any是否为空isEmpty函数的编写
  • 在一个具有数字和字符的字符串中去找到第n大的数字

复盘反思

这个比上一个还学院派,而且还是React技术栈,我的天啊!到底要干嘛啊,这四件套加数据库我都忘了,这老类型判断,平时写前端的业务的代码很少去考虑,根本不会...

面大厂就是要去加强学院派的基础,现在已经有的就是四件套和数据库,这些都是很重要的。

废了啊,这基础的四大件,答对的不多啊...这个真感觉要凉了

>11/27/25 两天了都,绝对凉凉了


参考答案

原生开发接受度

答: 是的,我能够接受原生开发。虽然我的主要技术栈是前端,但我对移动开发有浓厚兴趣,并且具备学习新技术的能力。如果有机会,我很愿意深入学习 iOS 和 Android 原生开发。

Vue 转 React 的适应

答: 不会感到紧张。Vue 和 React 在核心概念上有很多相似之处:

  • 都是组件化开发思想
  • 都有虚拟 DOM
  • 状态管理理念相通
  • 生命周期/hooks 概念相似

我相信能够快速适应 React 技术栈。

CSS 边框设置

.element {
  border-top-left-radius: 10px;     /* 左上角 */
  border-bottom-right-radius: 10px; /* 右下角 */
}

padding 和 margin 区别

  • padding:元素内边距,在边框内部,影响元素内容与边框的距离
  • margin:元素外边距,在边框外部,影响元素与其他元素的距离

object-position 常用值

> ⚠️ 纠错:面试官可能问的是 object-fit 的常用值(fill、contain、cover)。以下为 object-position 的参考:

img {
  object-position: center;    /* 居中 */
  object-position: top;       /* 顶部 */
  object-position: 20% 80%;   /* 自定义位置 */
}

![Pasted image 20251126134557](../../../_assets/78d44f6-Pasted image 20251126134557.png) ![Pasted image 20251126134615](../../../_assets/6924e82-Pasted image 20251126134615.png) ![Pasted image 20251126134631](../../../_assets/5a86410-Pasted image 20251126134631.png) ![Pasted image 20251126134647](../../../_assets/9ee15f0-Pasted image 20251126134647.png)

手机进程与线程

  • 进程:Android 系统通常运行 100-200 个进程
  • 线程:每个应用通常有主线程 + 多个工作线程,具体数量取决于应用复杂度

数据库事务特征 (ACID)

  • Atomicity(原子性)
  • Consistency(一致性)
  • Isolation(隔离性)
  • Durability(持久性)

网络抓包

  • 使用 Wireshark、Fiddler 等工具
  • 可以分析 HTTP/HTTPS 请求
  • 需要配置代理和证书

获取加密信息

  • 使用中间人攻击工具
  • 配置 SSL/TLS 解密
  • 需要安装根证书
  • 在法律允许范围内进行

进程死锁条件

    1. 互斥条件
    1. 请求与保持条件
    1. 不剥夺条件
    1. 循环等待条件

500ms 后输出时间戳

setTimeout(() => {
  console.log(Date.now());
}, 500);

isEmpty 函数

function isEmpty(value) {
  if (value === null || value === undefined) return true;
  
  if (typeof value === 'object') {
    if (Array.isArray(value)) return value.length === 0;
    return Object.keys(value).length === 0;
  }
  
  if (typeof value === 'string') return value.trim().length === 0;
  
  if (typeof value === 'number') return value === 0;
  
  return false;
}

// 测试用例
console.log(isEmpty(null));        // true
console.log(isEmpty(undefined));   // true
console.log(isEmpty(''));          // true
console.log(isEmpty('   '));       // true
console.log(isEmpty([]));          // true
console.log(isEmpty({}));          // true
console.log(isEmpty(0));           // true
console.log(isEmpty('hello'));     // false
console.log(isEmpty([1, 2]));      // false
console.log(isEmpty({a: 1}));      // false

找到第 n 大的数字

思路是找到数字之后去重,接着排序,最后返回值:

function findNthLargestNumber(str, n) {
  // 提取所有数字
  const numbers = str.match(/-?\d+(\.\d+)?/g);
  
  if (!numbers || numbers.length === 0) {
    return null;
  }
  
  // 转换为数字并去重
  const uniqueNumbers = [...new Set(numbers.map(Number))];
  
  // 排序(降序)
  uniqueNumbers.sort((a, b) => b - a);
  
  // 返回第 n 大的数字
  if (n > uniqueNumbers.length) {
    return null;
  }
  
  return uniqueNumbers[n - 1];
}

// 测试用例
const testStr = "abc123def456ghi789jkl100mno50pqr200";
console.log(findNthLargestNumber(testStr, 1)); // 200
console.log(findNthLargestNumber(testStr, 2)); // 789
console.log(findNthLargestNumber(testStr, 3)); // 456
console.log(findNthLargestNumber("no numbers", 1)); // null
优化版本(处理边界情况)
function findNthLargestNumberOptimized(str, n) {
  if (typeof str !== 'string' || !Number.isInteger(n) || n < 1) {
    return null;
  }
  
  const numbers = (str.match(/-?\d+(\.\d+)?/g) || [])
    .map(Number)
    .filter(num => !isNaN(num));
  
  if (numbers.length === 0) return null;
  
  const uniqueNumbers = [...new Set(numbers)];
  uniqueNumbers.sort((a, b) => b - a);
  
  return n <= uniqueNumbers.length ? uniqueNumbers[n - 1] : null;
}