格珞克前端面试

微小企业,boss找的

1.手撕闭包
2.基本类型
3.手撕深拷贝
4.深拷贝和浅拷贝区别
5.手撕节流和防抖
6.浏览器渲染机制

(其他忘记了,都很基础,就是js,html和css都不怎么问,猜是有点全栈的意思)
全部评论
这个只有一面吗,做全栈的活?
点赞 回复 分享
发布于 2025-11-11 09:28 山西
加油,你可以的!
点赞 回复 分享
发布于 2025-11-11 00:51 河南
拿到offer了,但是要实习转正,就是养蛊型,2选一,实习200每天,
点赞 回复 分享
发布于 2025-11-10 16:49 上海

相关推荐

1.实习介绍2.浏览器拿到HTML响应之后,渲染页面过程3.CSS 是什么时候加载的?是等 DOM 树构建完才开始吗4.HTML 解析过程中碰到一个 <script> 标签,浏览器会怎么处理5.你刚才提到MutationObserver,那如果浏览器不支持这个 API,你会用什么方式实现类似功能6.我们看这一段代码:图1 这段代码打印的结果是什么?为什么不是local?7.如果我把刚才那个var name = 'local' 改成let,那输出结果会变吗8.解释一下什么是“暂时性死区”为什么let声明变量之前不能访问9.讲一下js的作用域有哪几种10.我们现在有一个全局变量是 let a = 1,页面上有个按钮绑定了一个 onclick 事件打印 a,我把 a 从浏览器控制台删掉了,会报错吗?为什么11.讲一下作用域链,为什么在try-catch 里 catch(err) 中的 err 是块级作用域,但try里不是?12. 果我有一个变量在 setTimeout 里修改了值,而外部同时访问这个值,能保证拿到最新值吗为什么13.我给你两个连续的style标签,里面写了两个相同选择器但不同样式,渲染时到底谁生效?为什么?14.如果我动态用innerHTML插入一段 <script>,它会执行吗?和用createElement的方式插入有什么不同15.我页面上用了iframe做内嵌组件,结果一个按钮点击事件怎么都监听不到,为什么16.讲讲webpack的loader和plugin的执行顺序17.react 的 useEffect 和 useLayoutEffect 有什么区别?哪个先执行18. vue 的响应式是怎么实现的?那我问你,Object.defineProperty 为什么不能监听数组的 push?Vue2 是怎么解决的19.如果我在页面里创建了一个超大的数组 new Array(1e9),但没赋值,也不访问,浏览器会卡死吗20.我页面上只放了 1 张图,但 Lighthouse 跑出来提示资源加载过大,啥原因?21.手撕:数组中第k个最大元素
点赞 评论 收藏
分享
得物、拼多多经常考,倒计时组件1.倒计时组件2.如何实现精确计时(setInterval 1s先就update以前知道写但没考虑到为什么,时间戳同步)// Countdown.jsximport React, { useEffect, useState, useRef } from 'react';/*** props:*  - endAt: number (timestamp ms) 或 Date*  - onFinish?: () => void*  - tickMs?: number (minimal tick granularity, default 1000)*/export default function Countdown({ endAt, onFinish, tickMs = 1000 }) {const endTs = typeof endAt === 'number' ? endAt : endAt.getTime();const [remaining, setRemaining] = useState(Math.max(0, endTs - Date.now()));const mounted = useRef(true);useEffect(() => {mounted.current = true;// initial syncfunction update() {const now = Date.now();const rem = Math.max(0, endTs - now);if (!mounted.current) return;setRemaining(rem);if (rem === 0) {onFinish?.();return;}// Align next update to wall-clock second boundary (or tickMs)const delay = Math.min(tickMs,1000 - (now % 1000) // align to next second for nicer UX);// If <1s left, use requestAnimationFrame for smoothnessif (rem <= 1000) {requestAnimationFrame(update);} else {setTimeout(update, delay);}}update();return () => {mounted.current = false;};}, [endTs, onFinish, tickMs]);const sec = Math.ceil(remaining / 1000);const mm = Math.floor(sec / 60);const ss = sec % 60;return (<div>{mm}:{String(ss).padStart(2, '0')}</div>);}
查看2道真题和解析
点赞 评论 收藏
分享
评论
2
1
分享

创作者周榜

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