2024-10-11 度小满三面问
介绍小红书项目
介绍字节项目
函数式编程,面向对象
手写题,一个函数,对传入的数组排序,改变了原数组,改成纯函数
toSorted, 拷贝再排序
nodejs 中遇到多个地方更改一个公共变量如何处理
科里化有什么好处和问题
提到了测试,确实没咋想到
手写一个金额转换函数,数字->中文,12223333 -> 一千二百二十二万三千三百三十三
// 我这样写的,还需要debug,不够完善// 最后反问给的思路是用俩个队列,一个维护数字,一个维护单位,最后处理一下0的情况const NUM_CN_MAP = { 0: '', 1: '一', 2: '二', 3: '三', 4: '四', 5: '五', 6: '六', 7: '七', 8: '八', 9: '九',}const MID_CN_MAP ...
Web Components
完善中~~~
前言在写 vue 还有 react 的时候,有时候也会好奇,原生三件套怎么实现组件化呢?因为觉得组件化是一个很重要的东西,可以把一个页面拆分成一个个小的模块,方便维护和复用,组件代码也提倡不要过长过耦合。对于原生三件套来说,组件化不解决的话,确实开发上是很大的问题。
查阅资料,以及结合之前微前端所了解的知识,发现有 Web Components 这个东西,他是一种标准,相当于是提供了原生的组件化能力,下面简要了解看看。
是什么直接翻看官方文档:
Web Component 是一套不同的技术,允许你创建可重用的定制元素(它们的功能封装在你的代码之外)并且在你的 web 应用中使用它们。
和理解的一样,就是提供一个组件化能力,不过具体怎么用还得接着看文档。
如何实现组件化文档后面介绍了他的三个主要技术,基于这几个技术实现组件功能。
Custom element(自定义元素):一组 JavaScript API,允许你定义 custom elements 及其行为,然后可以在你的用户界面中按照需要使用它们。
Shadow DOM(影子 D ...
JS 异步的俩道题
京东面试遇到的一个事件循环输出题,其中有俩点新知识,以及还有一个之前开发遇到的
Promise.then 传非函数Promise.resolve(1) .then(2) .then(3) .catch(4) .then(res => console.log(res))
问 log 什么,当时就没有答对,说的 3,因为对于 then,一般都是传入函数,成功回调和失败回调,没遇到过直接传数字这个情况,以及中间还有个 catch,这个属于是意料之外了。
实际输出的是 1,至于为什么,查询 MDN 文档可以知道
Promise.prototype.then()将一个兑现处理器和拒绝处理器附加到 Promise 上,并返回一个新的 Promise,解决为调用处理器得到的返回值,或者如果 Promise 没有被处理(即相关处理器 onFulfilled 或 onRejected 不是函数),则以原始敲定值解决。
理解就是,如果 then 没有传给他函数,就相当于没有他,用上次的结果。因为 catch 也是 then 的变体,所以最后这个代码相当于
Prom ...
柯里化引言先说是啥,一般我们调用函数就是直接调用一次,然后就拿到返回结果,比如这样:
const add = (a, b) => a + bconst ans = add(1, 1)
但是有的时候,我们可能期望多次传入参数,这个函数能给我们缓存一下,最后传完的时候再返回结果,就像这样:
const curriedAdd = () => { // TODO}const ans = curriedAdd(1)(1)
是啥
GPT 生成的:柯里化(Currying)是一种函数式编程的技术,它将接受多个参数的函数转换为一系列接受单个参数的函数。柯里化的主要作用是将函数变得更加灵活和模块化,使得函数的复用和组合更加容易。通过柯里化,我们可以将一个多参数的函数转换为一系列单参数的函数,这样可以更方便地进行函数的组合和部分应用。
简单说就是多参函数变成了单参,对于前面的一些复用的参数,不需要多次传入了,更加方便
实现简单的对于一开始的例子,可以写一个简单的版本,对于函数记忆参数,可以使用高阶函数+闭包来实现
const { log } = ...
腾讯面经学习
刷牛客看到一篇腾讯的面经,感觉很多可以学的https://www.nowcoder.com/feed/main/detail/2658f105a4ab499e8d930b93101cfd17
深拷贝前面几个问题是问的深浅拷贝,需要自己手写实现,还需要解决循环引用的问题
深浅指的是什么我们都知道,js 存储引用类型是使用的指针,所以下面 a 和 b 实际是引用的同一个地址的对象。
const a = { name: 'a' }const b = aconsole.log(a === b) // true
那我修改 b 的时候,其实 a 的内容也会变,这就不符合拷贝这个概念了,我们期望的是复制一份出来,改动其中一个不应该对另一个造成影响,所以需要实现深拷贝。
浅拷贝相对于深拷贝来说,浅拷贝比较好实现,而且场景也很多。
const arr = [1, 2, 3]const copyArr = [...arr]// arr.slice()// arr.concat()// Array.from(arr)const obj = { ...
浏览器的进程和线程引言之前在【浏览器是如何运作的】笔记里面就有略微了解过浏览器是多进程、多线程的,不过还不够深入,加上最近有场面试被问到,进程和线程的区别、浏览器有哪些进程,回答的并不是很好,所以看了几篇文章学习了解了一下。
进程和线程这个是计算机的基础知识,我对这方面了解还是欠缺,没有系统概括的学习过操作系统,先去百度查查看。
进程:是并发执行的程序在执行过程中分配和管理资源的基本单位,是一个动态概念,竞争计算机系统资源的基本单位。
线程:是进程的一个执行单元,是进程内科调度实体。比进程更小的独立运行的基本单位。线程也被称为轻量级进程。
进程是操作系统资源分配的最小单位,而线程是处理器任务调度和执行的最小单位
每个进程中可以包含多个线程
不同进程使用不同的程序代码和内存空间,但是同一类线程共享代码和数据空间,每个线程有自己独立的程序计数器和运行栈
线程更加轻量,上下文切换开销更低
每个进程都有程序运行的入口,但是线程不能独立执行,必须依存在应用程序中
一个进程崩溃后,在保护模式下不会对其他进程产生影响,但是一个线程崩溃整个进程都死掉。所以多进程要比多线程健壮。
上面是一些搜到 ...
2024-9-2 美团一面 过
上海的
问题
部门业务介绍,营销页面、node、react
自我介绍
低代码难点、封装了什么组件、嵌套层级怎么维护、撤销恢复怎么做
小红书中台为什么用 qiankun,优点、场景、对比 iframe 的区别、收益
tailwind 配置,工程化插件
js 的原型和原型链
typeof 和 instanceof,以及原理
vue2 和 vue3 差别,响应式区别,对数组重写有什么区别
闭包是什么,什么场景
js 内存回收机制(还不会)
react 和 vue 的 diff 算法区别,更新状态渲染的时候什么区别
useMemo 是干啥的,几个参数,什么用
二叉树层序遍历,写出来了没问题
// 代码中已指定的类名、方法名、参数名,请勿修改,直接返回方法规定的值即可/** * Definition for a binary tree node. * class TreeNode { * val: number * left: TreeNode | null * right: TreeNode | n ...
2024-8-27 京东 hr 一面 过
不出所料,一面就是 hr 面
问题
先介绍部门,base 主要在北京
我问是不是只要硕士
不是很严格,也会考虑本科
自我介绍
小红书实习和字节实习的差异、不同点
遇到的困难挑战,怎么解决
有没有听过用户的反馈,针对解决优化
有没有做过性能优化相关的工作
有哪些有成就的
有什么要提升的
能接受什么样的工作强度
不能接受什么样的管理
为啥不太考虑北京
然后介绍了京东实习的好处 😳,推销了一下京东 young 实习
反问
base 只有北京吗?
现在面的这个只有北京,可以释放让其他部门去捞
2024-8-26 美团一面 流转
隔了一天写的,可能有些忘了流转到其他部门了
问题
自我介绍
提到了 iframe 和微前端,展开说说 iframe 的问题、微前端沙箱、如何解决卡顿
jsb 展开,怎么实现,如何处理版本降级
进程和线程
tcp 三次握手
了解哪些设计模式
vue 组件通信
浏览器存储
事件循环输出题目
setTimeout(function () { console.log(1)}, 1000)new Promise(function executor(resolve) { console.log(2) for (var i = 0; i < 10000; i++) { i == 9999 && resolve() } console.log(3)}).then(function () { console.log(4)})console.log(5)
手写发布订阅模式
class PubSub { constructor() ...
2024-8-22 讯飞一面 过
挺快的,聊天更多些,23min 就好了,写的顺序不一定是真实的顺序然后直接约主管面/hr 面了,技术面好像不多啊
问题
自我介绍
css 水平垂直居中的方式
用过哪些技术栈
vue2 和 3 的差别
vue 和 react 的差别
虚拟 Dom 的 diff 算法了解吗
vue 组件通信
客户端存储方式
有学过算法吗,说几个常见的排序算法的过程
tcp 和 udp 的区别
cookie 和 token
怎么理解闭包,会出现什么问题
怎么看前端这个岗位,为什么选择
反问
负责的业务
api 平台,星火大模型的各端
工作强度
9:00~18:00,可以灵活向后 30min
细化学习建议
打好 js 基础,写业务没多少机会接触了