前端面试必须掌握的手写题

本文为博客 VIP 文章,开通 VIP 后可阅读全文

开通 VIP
前端面试题视频讲解

封装异步的fetch,使用async await方式来使用

(async () => {
   
   
    class HttpRequestUtil {
   
   
        async get(url) {
   
   
            const res = await fetch(url);
            const data = await res.json();
            return data;
        }
        async post(url, data) {
   
   
            const res = await fetch(url, {
   
   
                method: 'POST',
                headers: {
   
   
                    'Content-Type': 'application/json'
                },
                body: JSON.stringify(data)
            });
            const result = await res.json();
            return result;
        }
        async put(url, data) {
   
   
            const res = await fetch(url, {
   
   
                method: 'PUT',
                headers: {
   
   
                    'Content-Type': 'application/json'
                },
                data: JSON.stringify(data)
            });
            const result = await res.json();
            return result;
        }
        async delete(url, data) {
   
   
            const res = await fetch(url, {
   
   
                method: 'DELETE',
                headers: {
   
   
                    'Content-Type': 'application/json'
                },
                data: JSON.stringify(data)
            });
            const result = await res.json();
            return result;
        }
    }
    const httpRequestUtil = new HttpRequestUtil();
    const res = await httpRequestUtil.get('http://golderbrother.cn/');
    console.log(res);
})();
复制代码

小孩报数问题

有30个小孩儿,编号从1-30,围成一圈依此报数,1、2、3 数到 3 的小孩儿退出这个圈, 然后下一个小孩 重新报数 1、2、3,问最后剩下的那个小孩儿的编号是多少?

function childNum(num, count){
   
   
    let allplayer = [];    
    for(let i = 0; i < num; i++){
   
   
        allplayer[i] = i + 1;
    }

    let exitCount = 0;    // 离开人数
    let counter = 0;      // 记录报数
    let curIndex = 0;     // 当前下标

    while(exitCount < num - 1){
   
   
        if(allplayer[curIndex] !== 0) counter++;    

        if(counter == count){
   
   
            allplayer[curIndex] = 0;                 
            counter = 0;
            exitCount++;  
        }
        curIndex++;
        if(curIndex == num){
   
   
            curIndex = 0               
        };           
    }    
    for(i = 0; i < num; i++){
   
   
        if(allplayer[i] !== 0){
   
   
            return allplayer[i]
        }      
    }
}
childNum(30, 3)
复制代码

实现 jsonp

// 动态的加载js文件
function addScript(src) {
   
   
  const script = document.createElement('script');
  script.src = src;
  script.type = "text/javascript";
  document.body.appendChild(script);
}
addScript("http://xxx.xxx.com/xxx.js?callback=handleRes");
// 设置一个全局的callback函数来接收回调结果
function handleRes(res) {
   
   
  console.log(res);
}
// 接口返回的数据格式
handleRes({
   
   a: 1, b: 2});
复制代码

将VirtualDom转化为真实DOM结构

这是当前SPA应用的核心概念之一

// vnode结构:
// {
   
   
//   tag,
//   attrs,
//   children,
// }

//Virtual DOM => DOM
function render(vnode, container) {
   
   
  container.appendChild(_render(vnode));
}
function _render(vnode) {
   
   
  // 如果是数字类型转化为字符串
  if (typeof vnode === 'number') {
   
   
    vnode = String(vnode);
Redis中什么是Big Key(大key)问?如何解决Big Key问 通俗易懂的讲,Big Key就是某个key对应的value很大,占用的redis空间很大,本质上是大value问。key往往是程序可以自行设置的,value往往不受程序控制,因此可能导致value很大。redis中这些Big Key对应的value值很大,在序列化/反序列化过程中花费的时间很大,因此当我们操作Big Key时,通常比较耗时,这就可能导致redis发生阻塞,从而降低redis性能。用几个实际的例子对大Key的特征进行描述:● 一个String类型的Key,它的值为5MB(数据过大); ● 一 阅读详情

相关推荐

数学建模算法案例精讲500篇-【深度强化学习】深度确定性策略梯度(DDPG)(附MATLAB和python代码实现)

它是一种学习连续动作的无模型策略算法。它结合了DPG(确定性策略梯度)和DQN(深度Q网络)的思想。它利用DQN中的经验重放和延迟更新的目标网络,并基于DPG,可以在连续的动作空间上运行。# 用于生成带有噪声的动作def __init__(self, action_space, mu=0.0, theta = 0.15, max_sigma = 0.3, min_sigma = 0.3, decay_period = 100000):#decay_period要根据迭代次数合理设置# 均值 mu。

qq_36130719的博客 278

基于springboot+vue3 plus+微信小程序开发的手办商城

springboot+vue3 plus+mybatis plus+微信小程序开发实现动漫手办商城

qq_48083136的博客 680

激光器安规详细解读 - 一级 - 并以940波长为例

前言: 作为人工智能的重要解决方案,激光作为不可或缺的一个选项。但是,激光的安规问始终是要得到关注。尤其是3D识别技术在人脸上的使用的时候,如何判读激光器的安全使用规范,变得非常重要。本文,尝试从欧洲激光标准IEC 60825-1:2014,以及国家激光产品规则标准GB 7247.1,抛砖引玉,写出自己的理解。 本节,主要讨论,人脸识别需要符合的安全等级1: 1 激光标准的分类 激光国际...

山云的专栏 4996

前端面试常见手写整理

前端面试手写 整理前端面试常见的手写面试出现概率极高,建议每个都过自己过一遍,加深印象。 你可以 watch 一下这个 GitHub 仓库,会持续收集、整理和维护。 实现 bind() Function.prototype.MyBind = function (context, ...args) { let self = this; return function() { return self.apply(context, args); } } // test let a =

MayanDev 2640

手写http请求库ajax-fetch

介绍:结合Promise封装ajax,fetch请求库 话不多说直接贴代码 /** * @description 请求库封装 * @author panpeng * @param {object} obj 请求参数 */ function request( obj ){ const { method, url, data, header} = obj || {}; return new Promise( async (resolve,rejects) => {

潘鹏的博客 532

简单封装一个异步 fecth,使用 async await 的方式来使用

【代码】简单封装一个异步 fecth,使用 async await 的方式来使用。

Smilequeen1的博客 620

简单的写一个fetch请求数据

打开浏览器一看,是个promise,熟悉promise的人知道这个对象有三个东西,第一个打开里面都是方法,第二个是状态,第三个是response,也就是响应的数据,那么就说明fetch这个函数给我们返回了带有数据的promise对象。接下来,我们调用json方法来转换,并且将数据返回,返回的结果也是个promise对象,因此,我们继续调用then方法来进行操作,把拿到数据的message属性的值赋给img的src属性。我将讲解步骤,不提供代码啦。经过一系列的操作,请求就完成了,这是一个简单的请求!...

m0_59755550的博客 637

二叉树的遍历(JS版)

二叉树的遍历有深度优先和广度优先两种。前序、中序、后序遍历都属于深度优先遍历。层次遍历属于广度优先遍历,从上到下,从左到右或从右到左一层一层的遍历。 1、二叉树的深度优先遍历-递归 // 前/先序:根左右 var DLR = function(root, res) { if(!root) return ; res.push(root.val); root.lef...

chengzihy的专栏 1576

前端面试必备 常见手写

常见手写 1.Filter export function filter(arr, callback) { // 定义空数组接收 回调返回为true的 元素 let result = []; for (let i = 0; i < arr.length; i++) { let res = callback(arr[i], i); // 如果回调结果为真 就压入结果数组中 if (res) { result.push(arr[i])...

m0_59113449的博客 2178

前端大厂手写面试面试通过率90%

不存在(map.has(k) 为false ),则将nums[i] 加到map 中(key为nums[i] ,value为i ,便查找map中是否存在某值,并可以通过get 法直接拿到下标)给定个整数数组nums 和个标值target ,请你在该数组中找出和为标值的那两个整数,并返回他们的数组下标。我们的算法思路逐渐清晰起来:遍历所有进制,判断选中个数是否为N ,然后再求对应的元素之和,看其是否为M。请算法实现,从给定的需、不重复的数组A中,取出N个数,使其相加和为M。你可以假设每种输只会对应个答案。

m0_74824661的博客 789

前端面试手写

前端面试手写 整理前端面试常见的手写面试出现概率极高,建议每个都过自己过一遍。 你也可以提交 PR,提供你面试遇到的目。 高频:★★★ 中频:★★ 低频:★ JavaScript 原理 实现 bind() ★★ 实现 apply() ★★ 实现 call() ★★ 实现 instanceof ★ 实现 new ★ 实现 jsonp ★★★ 实现 Promise ★★★ 实现 Promise.all() ★★★ 实现 Promise.race() ★ 实现 EventEmitter 订阅监听模

MayanDev 1438

前端面试必须掌握的手写:进阶篇

当你看到这里的时候,几乎前端面试中常见的手写目基本都覆盖到了,对于社招的场景下,其实手写目是越来越务实的,尤其是真的有hc的情况下,一般出一些常见的场景的可能性更大,所以最好理解➕记忆,最后欢迎评论区分享一些你遇到的目至此,手写系列分享结束,希望对你有所帮助。

Web面试那些事儿的博客 676

2022前端面试遇到的手写总结

百度前端一面常考手写面试及答案

helloworld1024fd的博客 156

常见的前端面试手写

最近把常见的面试手写还有我自己面试碰到的总结了一下,话不多说,直接看代码: bind Function.prototype.bind = function (_this, ...arg) { var self = this; return function () { return self.apply(ins, ...arg) } }; 复制代码EventEmitter cl...

weixin_34343308的博客 897

记录面试前端遇到的手写

eg. 像百度搜索,就应该用防抖,当我连续不断输入时,不会发送请求;观察者模式:定义了对象间一种一对多的依赖关系,当目标对象Subject发生改变时,所有依赖它的对象Observer都会得到通知。请使用最基本的遍历来实现判断字符串 a 是否被包含在字符串 b 中,并返回第一次出现的位置(找不到返回 -1)。在指定时间内只执行一次回调函数,如果在指定的时间内又触发了该事件,则回调函数的执行时间会基于此刻重新开始计算。输入字符串s,以及其重复的次数,输出重复的结果,例如输入abc,2,输出abcabc。

helloworld1024fd的博客 134

前端经典面试手写

前端面试中常会遇到的手写主要考察应聘者对前端基础知识的掌握程度以及编程能力。

zhangwenok的博客 978

2022必会的前端手写面试

面试视频讲解(高效学习):进入学习 二、目 1. 防抖节流 这也是一个经典目了,首先要知道什么是防抖,什么是节流。 防抖: 在一段时间内,事件只会最后触发一次。 节流: 事件,按照一段时间的间隔来进行触发。 实在不懂的话,可以去这个大佬的Demo地址玩玩防抖节流DEMO // 防抖 function debounce(fn) { let timeout = null; return function () {

潇晨1998的博客 591

前端面试手写目总结

【代码】面试手写目总结。

qq_48896417的博客 1189

2024前端面试12个手写,你确定会?

万丈高楼平地起,地基打的牢,才能永远立于不败之地。今天给大家带来的是10个常见的 JavaScript 手写功能,重要的地方已添加注释。有的是借鉴别人的,有的是自己写的,如有不正确的地方,欢迎多多指正。

富朝阳的博客 1656

来,我们手写一个简易版的mock.js吧(模拟fetch && Ajax请求)

预期的mock的使用方式 首先我们从使用的角度出发,思考编码过程 M1.通过配置文件配置url和response M2.自动检测环境为开发环境时启动Mock.js M3.mock代码能直接覆盖global.fetch方法或者XMLHttpRequest构造函数,实现开发无感知 M4.mock配置不影响实际的请求,可无缝切换为实际请求 M1. 通过配置文件配...

kkkkk0826的专栏 426

前端面试-手写篇-万字长文!

本文归纳了常见的前端面试手写,后续会不断补充

qq_44704740的博客 1191

前端面试常见手写代码【详细篇】

前端面试中,经常会遇到防抖 、节流、函数柯里化、函数组合、instanceof 实现、实现new操作符的行为、深拷贝、继承实现:、手写Promise、数组中常见函数的实现等代码手写,本文都已全部列举

前端探索者 3105

PT100_stm32PT100_PT100显示_pt100温度_PT100STM32_pt100_源码.zip

PT100_stm32PT100_PT100显示_pt100温度_PT100STM32_pt100_源码.zip

最新完整版标准 最新完整版标准 UL 1017 10th Ed.Rev.Jul.-19-2018.pdf

最新完整版标准 最新完整版标准 UL 1017 10th Ed.Rev.Jul.-19-2018.pdf

上一篇: 2022高频前端面试题(附答案)
alice11fe
博客等级 码龄5年 2粉丝 26原创
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值