笔试题汇总

函数

手写call
手写bind
手写节流(throttle)
手写防抖(debounce)
手写柯里化(curry)
手写组合(compose)
手写实例化(new)
手写继承(extends)
手写实现一个sleep函数

对象

手写深拷贝(deepClone)
手写let
手写const
手写引用类型判断(instanceof)
实现获取对象指定属性(getValue)

数组

手写数组排序(sort)
手写数组去重(deduplicate)
手写数组拉平(flat)
reduce 实现 map
数组转对象
数组转树(每一项带父级id:pid)

字符串

判断是否回文
字符串反转
大数相加
判断一个字符串是否另一个字符串的子序列
最长公共子串
实现颜色转换 'rgb(255, 255, 255)' -> '#FFFFFF' 的多种思路
获取url参数(getUrlParams)

链表

判断链表是否有环
实现链表反转

栈与队列

使用栈实现队列
判断括号是否是匹配(“(){()[{}]} ()({}) {()}[]{()} [{{[()]}}]”)

手写树先序、中序、后序、层序遍历(递归+迭代)
判断平衡二叉树、搜索二叉树、完全二叉树

异步

手写promise
手写promiseAll
手写promiseRace
手写promiseAllSettled
手写并发控制(promiseLimit)
手写重试(promiseRetry)
手写超时(promiseTimeout)
手写jsonp
手写ajax
手写setInterval
手写setTimeout

设计模式

手写单例模式(singleton)
手写观察者模式(observer)

工具

实现一个极简的webpack
实现一个极简的模版引擎
实现一个极简的数据响应式
实现一个自由拖动组件
实现一个多弹窗管理组件
实现一个虚拟列表
posted @ 2022-03-16 21:57  mingL  阅读(105)  评论(0编辑  收藏  举报