2022面试题汇总

2023-11-19

目录

浏览器下两个页面的通讯都有什么方式?

 使用css与js做一个九宫格动画

请输出如下的代码打印结果

js如何实现页面地址发生变化,但页面不发生跳转,请用js实现

请用多种方式实现垂直居中,实现的方式越多越好

请实现一个getValue函数,该函数可以从一个深层对象中获取到该对象上的值

小程序中 如果希望多个Page共享一个对象(多页页面可以读写一个对象),如何实现


浏览器下两个页面的通讯都有什么方式?

1.一个窗口更新localStorage,另一个窗口监听window对象的”storage”事件,来实现通信。(但是两个界面需要同源)

2.page1将要传递的信息存储在cookie中,page2使用setInterval每隔一定时间读取cookie信息,即可随时获取要传递的信息。

3.html5引入了一个跨文档通信的API,这个API为window对象新增了一个window.postMessage方法,允许跨窗口通信,不论这两个窗口是否同源。-

 使用css与js做一个九宫格动画

要求,未抽奖时,所有奖品背景均为白色,当点击“抽奖”时,从左上角开始,逆时针依次(每1s切换一次)

选中(选中:即背景变为红色)每个奖品,逆时针转完2圈后,停在右下角。

<style>
    body {
        margin: 0;
        padding: 0;
        background: #f4f4f4;
    }

    #box {
        width: 310px;
        height: 310px;
        display: flex;
        flex-wrap: wrap;
    }

    .option {
        width: 100px;
        height: 100px;
        background: #fff;
        text-align: center;
        line-height: 100px;
        border: 1px solid red;
        transform: all .5s;

    }

    #start {
        width: 100px;
        height: 100px;
        background: #fff;
        text-align: center;
        line-height: 100px;
        border: 1px solid red;
        cursor: pointer;

    }
</style>

<body>
    <div id="box">
        <div class="option">1</div>
        <div class="option">2</div>
        <div class="option">3</div>
        <div class="option">4</div>
        <div id="start">抽奖</div>
        <div class="option">6</div>
        <div class="option">7</div>
        <div class="option">8</div>
        <div class="option">9</div>
    </div>
</body>
<script>
    let btn = document.getElementById('start')
    let options = document.getElementsByClassName('option')
    btn.onclick = function () {
        let timer
        let num = 0
        let res = 0
        if (timer == null) {
            timer = setInterval(() => {
                num++
                let arr = [0, 3, 5, 6, 7, 4, 2, 1]
                for (let i = 0; i < options.length; i++) {
                    options[i].style.backgroundColor = '#fff'
                }
                options[arr[res]].style.backgroundColor = 'pink'
                console.log(arr[num], arr[res]);
                res++
                if (res >= arr.length) res = 0
                if (num >= 21) {
                    clearInterval(timer)
                    timer = null
                }
            }, 1000);
        }
    }
</script>

请输出如下的代码打印结果

    //bdca

Promise里为同步b,同步d .then异步,状态为成功后立即调用,异步定时器a

setTimeout(() => {
    console.log('a');
}, 0);


new Promise((resolve, reject) => {
    console.log('b');
    resolve(1);
}).then(() => {
    console.log('c');
});
console.log('d');

js如何实现页面地址发生变化,但页面不发生跳转,请用js实现

<script>
    function changeUrl(name, value) {
        let url = location.href
        let reg = eval('/([\?|&]/' + name + '=}[^&]*/gi]')
        valeu = value.toString().replace(/(^\s*)|(\s*$)/g, '')
        if (!value) {
            let url2 = url.replace(reg, '')
        } else {
            if (url.match(reg)) {
                let url2 = url.replace(reg, '$1' + value)
            } else {
                let url2 = url + (url.indexOf('?') > -1 ? '&' : '?') + name + '=' + value
            }
        }
    }
    history.replaceState(null, null, url2)
<script>

请用多种方式实现垂直居中,实现的方式越多越好

<div class="wrapper">

        <div class="center-box" title="我要被垂直居中"></div>

    </div>

1.

    .wrapper {
        position: relative;
        background: pink;
        width: 500px;
        height: 500px;
    }

    .center-box {
        position: absolute;
        top: 0;
        bottom: 0;
        left: 0;
        right: 0;
        margin: 0;
        margin: auto;
        background-color: blue;
        width: 100px;
        height: 100px;
    }

2.

  .wrapper {
        position: relative;
        background: pink;
        width: 500px;
        height: 500px;
    }

    .center-box {
        width: 100px;
        height: 100px;
        background-color: blue;
        line-height: 100px;
        position: absolute;
        left: 50%;
        top: 50%;
        margin-left: -50px;
        margin-top: -50px;
    }

3.

    .wrapper {
        position: relative;
        background: pink;
        width: 500px;
        height: 500px;
    }

    .center-box {
        width: 100px;
        height: 100px;
        background-color: blue;
        position: absolute;
        left: 50%;
        top: 50%;
        transform: translate(-50%, -50%);
    }

4.

    .wrapper {
        background: pink;
        width: 500px;
        height: 500px;
        display: flex;
        justify-content: center;
        align-items: center;
    }

    .center-box {
        width: 100px;
        height: 100px;
        background-color: blue;
    }

请实现一个getValue函数,该函数可以从一个深层对象中获取到该对象上的值

数接受两个参数,一个是需要获取值的原始对象(originObj),第二个参数是需要从深层对象中获取value使用的key的路径(keyPath)。


    var obj = {
        a: {
            b: {
                c: {
                    d: 1
                }
            }
        }
    };
    var res = getValue(obj, 'a.b.c.d');
    console.log(res); // 打印出1
    var res2 = getValue(obj, 'a.b');
    console.log(res2); // 打印出{c: {d: 1}}
    function getValue(originObj, keyPath) {
        let keys = keyPath.split('.'),
            result,
            index = 0
        console.log(keys);
        const fn = obj => {
            if (index >= keys.length) return
            result = obj[keys[index++]]
            if (result == null || typeof result !== 'object') return
            fn(result)
        }
        fn(originObj)
        return result
    }

小程序中 如果希望多个Page共享一个对象(多页页面可以读写一个对象),如何实现

在A页面获取globalData 里的地址存在变量 a,在B页面 获取globalData 里的地址存在变量 b;

2.当在A页面修改了地址后,重新赋值a=新地址,globalData.地址 = 新地址;

3.在打开B页面时,再重新获取最新的地址

    App({
        globalData: {
            data: {
                namme: 'jyc',
                age: 22
            }
        }

    })


    Page({
        const app = getApp(),
        data: {
            data: app.globalData.data
        },


        onClick() {
            app.globalData.data = {
                namme: 'zs',
                age: 18
            }
            this.setData({
                data: app.globalData.data
            })
        }

    });



    // 页面2

    Page({
        const app = getApp(),
        data: {
            data: app.globalData.data
        },


        onClick() {
            app.globalData.data = {
                namme: 'zs',
                age: 18
            }
            this.setData({
                data: app.globalData.data
            })
        }

    });

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2022面试题汇总 的相关文章

  • 拼多多详情API开启运营比价新纪元

    随着互联网的快速发展 电商行业正在迅速崛起 拼多多作为一家新兴的电商平台 凭借其独特的营销策略和创新的商业模式 成为了电商行业的一匹黑马 在拼多多的成功背后 其详情API接口营销起到了至关重要的作用 本文将详细介绍拼多多详情API接口营销的
  • JS特效第74弹:旅游城市图片百叶窗切换React特效

    全屏的旅游城市景点图片滑动百叶窗轮播切换效果 先来看看效果 一部分关键的代码如下 div div
  • ❤ Vue3 使用

    Vue3 使用 Vue3之toRefs的使用 作用 toRefs 可以将一个响应式的对象 转换成普通对象 但是转换后的普通对象的每一个属性值都是响应式的 这样我们可以使用es6的对象解构或者三点运算符等操作 代码
  • WEB前端常见受攻击方式及解决办法总结

    一个网址建立后 如果不注意安全问题 就很容易被人攻击 下面讨论一下集中漏洞情况和放置攻击的方法 一 SQL注入 所谓的SQL注入 就是通过把SQL命令插入到web表单提交或输入域名或页面请求的查询字符串 最终达到欺骗服务器执行恶意的SQL命
  • 每天10个前端小知识 <Day 8>

    1 Javascript中如何实现函数缓存 函数缓存有哪些应用场景 函数缓存 就是将函数运算过的结果进行缓存 本质上就是用空间 缓存存储 换时间 计算过程 常用于缓存数据计算结果和缓存对象 缓存只是一个临时的数据存储 它保存数据 以便将来对
  • WEB前端常见受攻击方式及解决办法总结

    一个网址建立后 如果不注意安全问题 就很容易被人攻击 下面讨论一下集中漏洞情况和放置攻击的方法 一 SQL注入 所谓的SQL注入 就是通过把SQL命令插入到web表单提交或输入域名或页面请求的查询字符串 最终达到欺骗服务器执行恶意的SQL命
  • 「网络安全渗透」如果你还不懂CSRF?这一篇让你彻底掌握

    1 什么是 CSRF 面试的时候的著名问题 谈一谈你对 CSRF 与 SSRF 区别的看法 这个问题 如果我们用非常通俗的语言讲的话 CSRF 更像是钓鱼的举动 是用户攻击用户的 而对于 SSRF 来说 是由服务器发出请求 用户 日 服务器
  • 软件测试|web自动化测试神器playwright教程(三十八)

    简介 在我们使用selenium时 我们可以获取元素的属性 元素的文本值 以及输入框的内容等 作为比selenium更为强大的web自动化测试神器 playwright也可以实现对元素属性 文本值和输入框内容的抓取 并且实现比seleniu
  • 【gee】下载modis土地利用类型

    var china ee FeatureCollection projects assets china boundary var lc dataset ee ImageCollection MODIS 061 MCD12Q1 filter
  • 低代码配置-组件列表设计

    过滤字段功能 配置了api 启用 输出配置 filter type Array default gt
  • 【ES6】解构语句中的冒号(:)

    在解构赋值语法中 冒号 的作用是为提取的字段指定一个新的变量名 让我们以示例 const billCode code version route query 来说明 billCode code version 表示从 route query
  • 低代码配置-列表页组件设计

    保存 表单属性存放 bill 筛选项配置存放 filterLayout 列表按钮存放 buttonLayout 列表布局存放 listLayout api存放 api 数据结构 layout 存放表单基础配置 bill 存放按钮基础配置 b
  • 低代码-详情页组件设计

    效果图 详情页数据结构定义 layout 按钮数据 buttonLayout headButton 页头按钮 footButton 页脚按钮 详情页表单配置 config 配置组件列表 detailLayout 默认行为 进表单初始化 只展
  • 2024诸多大厂春招提前启动!Android的程序员还在等什么

    春招 提前批 已开 xdm别打瞌睡了 格力 顺丰 酷狗 沃尔玛中国 理想 科大讯飞等开启春招 开始收简历了 还有hc的企业提前抢人 春招时间短 节奏快 招满即止 就算挂了也绝不能不投 对企业来说 秋招和春招都是储备人才的黄金时期 春招中 除
  • 做好这几件事,30岁的你也能转行鸿蒙(HarmonyOS)?

    当你年过30 不管你愿不愿意承认 你的精力都在走下坡路 25岁熬一个通宵能写出来的代码 30岁有可能需要一整天 当然你也可以选择不拼精力和体力 当自身的一线经验积累到一定程度后 就会选择慢慢过渡到管理者的角色 通过经验分享及任务分配来参与项
  • Android Navigation的四大要点你都知道吗?

    在JetPack中有一个组件是Navigation 顾名思义它是一个页面导航组件 相对于其他的第三方导航 不同的是它是专门为Fragment的页面管理所设计的 它对于单个Activity的App来说非常有用 因为以一个Activity为架构
  • vue实现 marquee(走马灯)

    样式 代码 div class marquee prompt div class list prompt span class prompt item span div div data return listPrompt xxx xxxx
  • 程序员找工作难!拿到外包公司的 offer 我应该去么?

    引言 前一阵子有一个帖子引起了非常广泛的讨论 描述的就是一个公司的外包工作人员 加班的时候因为吃了公司给员工准备的零食 被公司的HR当场批评 这个帖子一发出来 让现在测试行业日益新增的外包公司备受关注 那么外包公司和非外包公司有什么样的不一
  • Synchronized 锁机制

    为了避免临界区的竞态条件发生 可以用非阻塞式的原子变量 也可以用阻塞式的锁 Java 多线程的锁都是 对象锁 采用互斥的方式让同一时刻只有一个线程能够持有对象锁 从而进入临界区 而其它线程只能阻塞等待 因此不用担心线程上下文切换造成共享资源
  • 考虑光伏出力利用率的电动汽车充电站能量调度策略研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码 数据

随机推荐

  • (STM32笔记2)基于hc05的蓝牙实验

    实验任务 开机检测 HC05 蓝牙模块是否存在 如果检测不成功 则报错 检测成功之后 显示模块的主从状态 并显示模块是否处于连接状态 DS0 闪烁 提示程序运行正常 按 KEY0 按键 可以开启 关闭自动发送数据 通过蓝牙模块发送 按 KE
  • 简单工厂模式

    简单工厂模式 一 概念 从设计模式的类型上来说 简单工厂模式是属于创建型模式 又叫做静态工厂方法 StaticFactory Method 模式 但不属于23种GOF设计模式之一 简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例 简
  • ASIC中带有MUX的时钟路径时序约束

    链接 https pan baidu com s 1BrAsabLYLGbvdXJB2LQwiA 提取码 mgrn
  • 回溯法详解

    一 回溯法 深度优先搜素 1 简单概述 回溯法思路的简单描述是 把问题的解空间转化成了图或者树的结构表示 然后使用深度优先搜索策略进行遍历 遍历的过程中记录和寻找所有可行解或者最优解 基本思想类同于 图的深度优先搜索 二叉树的后序遍历 分支
  • 旋转变换(一)旋转矩阵

    转自 https blog csdn net csxiaoshui article details 65446125 1 简介 计算机图形学中的应用非常广泛的变换是一种称为仿射变换的特殊变换 在仿射变换中的基本变换包括平移 旋转 缩放 剪切
  • Kotlin核心编程(七)

    Kotlin核心编程 七 文章目录 Kotlin核心编程 七 多继承问题 接口实现多继承问题 getter和setter 内部类解决多继承问题 内部类和嵌套类 使 委托代替多继承 数据类 Pair和Triple 数据类的约定与使 多继承问题
  • Java设计模式-装饰者模式Decorator

    介绍 装饰者模式的核心思想是通过创建一个装饰对象 即装饰者 动态扩展目标对象的功能 并且不会改变目标对象的结构 提供了一种比继承更灵活的替代方案 需要注意的是 装饰对象要与目标对象实现相同的接口 或继承相同的抽象类 另外装饰对象需要持有目标
  • mobaxterm无法连接vmware虚拟机服务器,network error:connection refused

    场景描述 电脑硬盘换了 重新安装vmware ubuntu mobaxterm 安装完ubuntu后 因为习惯了无UI的界面 所以关闭了ubuntu的桌面服务 有需要的同学可以通过sudo systemctl set default mul
  • 【Java基础】 使用POI解析excel时格式判定问题及解决方案

    写在前面 本文主要介绍在实际开发过程中使用POI工具类去解析Excel格式文件遇到的问题引发的思考 学习以及解决方案 仅供参考 有考虑不周的地方还请指正 问题描述 博主在做excel解析的时候 遇到了一个奇怪的现象 xlsx拓展名的文件使用
  • Struts2知识汇总二

    Struts2中的调试 在Struts2中可以使用
  • java8 stream流排序

    原文出处 https www cnblogs com kuanglongblogs p 11230250 html 很多情况下sql不好解决的多表查询 临时表分组 排序 尽量用java8新特性stream进行处理 使用java8新特性 下面
  • Android PowerSupply (三)power_supply_sys

    目录 Android PowerSupply 一 总概 Android PowerSupply 二 power supply core Android PowerSupply 三 power supply sys Android Power
  • 深入理解ES6箭头函数中的this

    简要介绍 箭头函数中的this 指向与一般function定义的函数不同 比较容易绕晕 箭头函数this的定义 箭头函数中的this是在定义函数的时候绑定 而不是在执行函数的时候绑定 1 何为定义时绑定 我们来看下面这个例子 1 var x
  • UNIX环境高级编程读书笔记

    主要记录关键知识点 方便日后查阅 第一章 UNIX基础知识 UNIX体系结构 书中是这样画的 这篇文章认为这样画不合理https blog csdn net lyndon li article details 116956043 应该这样
  • jsp页面兼容谷歌浏览器相关问题

    1 js按键事件兼容 function document oncontextmenu ie8可运行 谷歌改为function document onkeydown 2 触发事件对象 IE浏览器支持window event srcElemen
  • [附源码]java+ssm计算机毕业设计java儿童福利院管理系统5d7wb【源码、数据库、LW、部署】

    项目运行 项目含有源码 文档 程序 数据库 配套开发软件 软件安装教程 环境配置 Jdk1 8 Tomcat7 0 Mysql HBuilderX Webstorm也行 Eclispe IntelliJ IDEA Eclispe MyEcl
  • 变度量法算法(DFP)求解无约束问题

    程序功能 1 变度量法算法 DFP 求解无约束问题 2 调用文件夹下Newton的子函数 nfx ndfx ndfx2 vectorLength 3 z3 A i b 计算当前d的值 矩阵计算可能存在奇异值 4 请根据不同的目标函数 设置精
  • android- Cause: Unknown command-line option '-X'.

    问题太简单了 直接解决办法 File gt Settings gt Build Execution Deployment gt Compiler 删除Command line options里面的内容 重新gradle 感谢博主 欢迎留言指
  • 全栈之前端

    欢迎关注 全栈工程师修炼指南 公众号 点击 下方卡片 即可关注我哟 设为 星标 每天带你 基础入门 到 进阶实践 再到 放弃学习 花开堪折直须折 莫待无花空折枝 作者主页 https www weiyigeek top 博客 https b
  • 2022面试题汇总

    目录 浏览器下两个页面的通讯都有什么方式 使用css与js做一个九宫格动画 请输出如下的代码打印结果 js如何实现页面地址发生变化 但页面不发生跳转 请用js实现 请用多种方式实现垂直居中 实现的方式越多越好 请实现一个getValue函数