钛动科技一面

一、前端基础与原理

🔌 网络通信

1. 请详细说明 HTTP 和 WebSocket 的区别?适用场景分别是什么?

  • 区别
  • 适用场景

2. 什么是 SSE(Server-Sent Events)?它的核心特点是什么?

  • SSE 是一种基于 HTTP 的单向通信技术,允许服务端主动向客户端推送事件流。
  • 特点:基于文本传输、默认支持断线重连、仅服务端向客户端单向推送、兼容性较好(除 IE 外主流浏览器支持)。

3. 在什么场景下会选择使用 SSE 而不是 WebSocket?

  • 场景:仅需服务端向客户端单向推送数据(如新闻通知、日志推送)、希望兼容低复杂度场景、不想维护双向连接的心跳机制。
  • 原因:SSE 实现更简单、基于 HTTP 无需额外协议、自带重连机制,而 WebSocket 更适合双向实时交互。

4. 请列举常见的 HTTP 状态码,并说明其含义(如 2xx、3xx、4xx、5xx 各举2-3个)

  • 2xx(成功):200 OK(请求成功)、201 Created(资源创建成功)、204 No Content(请求成功但无返回内容)。
  • 3xx(重定向):301 Moved Permanently(永久重定向)、302 Found(临时重定向)、304 Not Modified(协商缓存命中,资源未更新)。
  • 4xx(客户端错误):400 Bad Request(请求参数错误)、401 Unauthorized(未授权)、403 Forbidden(禁止访问)、404 Not Found(资源不存在)。
  • 5xx(服务端错误):500 Internal Server Error(服务端内部错误)、502 Bad Gateway(网关错误)、503 Service Unavailable(服务暂不可用)。

5. 请解释强缓存和协商缓存的区别?分别通过哪些 HTTP 头实现?

  • 强缓存:浏览器直接从本地缓存读取资源,不向服务端发起请求。
  • 协商缓存:浏览器先向服务端发起请求,验证资源是否更新,未更新则返回 304 并使用本地缓存,更新则返回新资源。

🧩 组件通信

请分别说明 Vue3 和 React 中常用的组件通信方式有哪些?

  • Vue3
  • React

🎨 渲染与存储

1. 请解释 SSR(服务端渲染)和 SSG(静态站点生成)的区别?各自的适用场景?

  • SSR:服务端在请求时动态生成 HTML,返回给客户端渲染。
  • SSG:构建时预生成所有静态 HTML 文件,部署后直接返回静态文件。

2. 请对比 Cookie、localStorage、sessionStorage 的区别(存储大小、有效期、作用域、通信方式)

特性

Cookie

localStorage

sessionStorage

存储大小

约 4KB

约 5MB

约 5MB

有效期

可设置过期时间(默认会话级)

永久存储(除非手动删除)

会话级(页面关闭即清除)

作用域

同域名下共享,可设置路径

同域名下共享

同标签页下共享

通信方式

随 HTTP 请求自动携带

仅前端读取,不随请求发送

仅前端读取,不随请求发送

二、登录功能实现

请描述一个完整的登录功能实现流程,包括前端和后端的核心交互、安全处理(如 Token、验证码、记住密码等)

  1. 前端流程
  2. 后端流程
  3. 安全处理

是的,把 Token 存在 localStorage 确实存在较高的泄露风险,这是前端安全中一个非常关键的问题。我帮你详细拆解一下风险点和应对方案:

🔍 为什么 localStorage 存 Token 有泄露风险?

  • XSS 攻击直接窃取localStorage 是前端可读写的存储,一旦页面存在 XSS 漏洞(比如用户输入未转义、第三方脚本被注入),攻击者可以通过 JavaScript 直接读取 localStorage 中的 Token,并发送到自己的服务器。
  • 持久化存储风险localStorage 是持久化的,即使用户关闭浏览器,Token 仍然存在。如果用户在公共设备上登录后未手动退出,后续使用者可以直接通过 localStorage 获取 Token 冒充原用户。
  • 无同源策略额外保护:虽然 localStorage 遵循同源策略,但如果域名被劫持或存在子域名漏洞,攻击者也可能跨子域名获取 Token。

🛡️ 更安全的 Token 存储方案

如果你的业务对安全性要求较高,推荐优先使用 HttpOnly + Secure + SameSite Cookie 来存储 Token,而不是 localStorage

  • HttpOnly:标记为 HttpOnly 的 Cookie 无法通过 JavaScript 读取,从根源上防止 XSS 攻击窃取 Token。
  • Secure:仅在 HTTPS 连接下才会发送 Cookie,避免 Token 在明文传输中被拦截。
  • SameSite:设置为 StrictLax,可以有效防止 CSRF 攻击(跨站请求伪造)。

📌 必须用 localStorage 时的防护措施

如果业务场景必须用 localStorage(比如跨域场景、需要前端主动控制 Token 过期),请务必做好以下防护:

  1. 严格防御 XSS
  2. 缩短 Token 有效期
  3. 敏感操作二次验证
  4. 定期清理与监控

📊 存储方案对比

存储方式

XSS 防护

CSRF 防护

持久化

适用场景

HttpOnly Cookie

✅ 强

✅ 需配置 SameSite

✅ 可配置

对安全性要求高的业务(如金融、支付)

localStorage

❌ 弱

✅ 无风险

✅ 是

跨域场景、需前端主动管理 Token

sessionStorage

❌ 弱

✅ 无风险

❌ 否

会话级临时存储(如单页应用临时 Token)

三、项目实战经验

📄 PDF 项目:虚拟滚动的具体实现原理

  • 核心原理:仅渲染可视区域内的列表项,动态计算并渲染可见元素,非可见区域用空白占位符填充,从而减少 DOM 节点数量,提升长列表性能。
  • 实现步骤

📱 适配与跨域

1. 请说明常见的移动端适配方案(如 rem、vw/vh、响应式布局等),并比较各自优缺点

  • rem 适配
  • vw/vh 适配
  • 响应式布局

2. 在前端中,如何判断当前设备是 PC 端还是移动端?常用的方法有哪些?

  • 方法1:通过 User-Agent 检测
  • 方法2:通过屏幕宽度检测
  • 方法3:通过触摸事件检测

3. 什么是跨域?常见的跨域解决方案有哪些(如 CORS、JSONP、代理等)?

  • 跨域定义:浏览器同源策略限制下,当请求的协议、域名、端口任意一个与当前页面不同时,即为跨域。
  • 解决方案

四、算法

请描述 LeetCode 第70题“爬楼梯”的解题思路,并写出核心代码(可以用递归、动态规划等方式)

  • 题目描述:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
  • 解题思路
  • 核心代码(动态规划优化空间版)
var climbStairs = function(n) {
    if (n <= 2) return n;
    let a = 1, b = 2;
    for (let i = 3; i <= n; i++) {
        let temp = a + b;
        a = b;
        b = temp;
    }
    return b;
};

#钛动科技(广州市沃钛移动科技有限公司)#
全部评论
佬,是什么部门呢?
点赞 回复 分享
发布于 01-30 18:11 重庆
怎么还有算法
点赞 回复 分享
发布于 01-29 09:13 广东

相关推荐

开头正常自我介绍linux1.关于&nbsp;Linux,&nbsp;那&nbsp;Linux&nbsp;的话,你用哪?用过哪些发行版本?2.如何看&nbsp;Linux&nbsp;系统里面有多少个核吗?或者是这个硬服务器的一些那个&nbsp;CPU&nbsp;的信息呢?3.Linux&nbsp;系统上面有哪些网络端口在处于监听状态呢?4.怎么统计一个文本文件的那个行数呢?Docker1.怎么看正在运行的&nbsp;Docker&nbsp;容器?镜像呢2.Dockerfile写过吗?3.我怎么进入容器内部呢?去看看一些容器的里面的信息?4.你有做过那个&nbsp;Docker&nbsp;镜像的一些操作吗?比如说我怎么把镜像导出来,然后再导到另外一个环境里面去?5.Docker的核心组件有哪些呢?k8s1.ETCD&nbsp;在&nbsp;K8S&nbsp;里面起什么作用吗?2.那你知道&nbsp;kube-controller-manage&nbsp;它是做什么的?3.能说一下那个&nbsp;Deployment&nbsp;跟&nbsp;StatefulSet&nbsp;&nbsp;有什么区别?4.那&nbsp;DaemonSet&nbsp;&nbsp;它的作用是什么呢?5.service&nbsp;有哪些类型呢?6.如果说一个pod,它处于一个失败的状态,那你有哪些手段去分析一下。7.ConfigMap&nbsp;和&nbsp;Secret它有什么作用呢?区别是什么?项目:1.Ansible&nbsp;的使用2.这个监控的一些系统软件熟悉吗?你怎么用他们?3.你既然在开发这里用过Prometheus&nbsp;,能说一下它,因为你它这个系统起来之后,它不可能说我去监控一个系统的时候,我要去手动去配置一下怎么去监控它,它应该有个自动发现的一个东西,这个自动发现的一个原理能说一下吗?4.用过Ceph吗,是怎么部署的?是几个节点?几个副本?5.讲一下&nbsp;Jenkins&nbsp;的功能总的来说这次面试问的问题也不太复杂,不过依然有问题还没回答出来;HR人很好,反问阶段还是因为经验不知,问的都是无关紧要的东西,继续加油吧!
查看21道真题和解析
点赞 评论 收藏
分享
评论
9
46
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务