react

【2020面试真题】这15道面试真题,你能答出几道?

蹲街弑〆低调 提交于 2021-01-30 05:54:51
事件起因 含泪忠告:不要在周末没准备的情况下去luo面,不要去luo面,不要去luo面,不要去luo面。一旦被暴击,你的周末和自信心就彻底毁了。 为啥我会这么说?到底咋回事呢?事情是这样的: 这周双休,手机弹出某聘的消息,想着去看看目前前端的概况,就投了简历,然后就开始愉快的玩手机,没一会儿,电话直接来了,问现在方便吗,想简单聊聊,了解一下。我一想,简单聊聊?可以啊,反正才一面,简单聊聊嘛。我就回了个:可以的。没想到,就是这三个字,让我的周末如坐针毡,内心受到了暴击。整个面试过程有的答案似是而非,有的只记得大概,有的直接挠头。到现在,我内心都还平静不下来,也急切的想把题目分享出来,让更多的人看到2020的真实情况。答案没有细细整理,只有思路,语言大家自己组织就好。 来吧,一起来感受下我是如何受到暴击的吧!!! 事件经过 1.JS是一门面向对象的语言,说说面向对象语言的三大特征? 答:这个简单,我自信满满的说:封装、继承、多态。面试官轻声嗯了一下。我的自信心 +1,心想,还行。 2.说说你是如何理解JS中封装、继承这两个特点的? 答:完了,给自己挖了个坑,都是套路。 封装指的是隐藏逻辑实现过程,只对外暴露属性和方法,使用者只需要知道如何使用即可,而不需要关心内部如何实现的,目的在于简化实现过程,做到多处复用,提高开发效率,当需要维护的时候,业务逻辑和工具功能是分开的,降低迭代成本。

Vue3对于一个前端来讲意味着什么?

匆匆过客 提交于 2021-01-29 09:48:52
// 且读且珍惜 // 正文字数 1828 最近很多微信公众号和技术社区,讨论的最多的无非就是 Vue3 了,大多数都是Composition API和基于Proxy的它的原理分析。但是今天老袁想着跟大家聊聊,Vue3对于一个前端更深层次的意义到底意味着什么?我们从这个几个方面来聊聊吧。 悠悠十年,前端框架催人老 理性追框架 Vue的原理的原理了解一下 珍惜年轻的日子 未来可期 悠悠十年,前端框架催人老 相信很多老前端,可能跟我一样。以前天天要兼容IE6、7、8、9、10、11、12+还有一大堆什么你根本叫不上来名字的浏览器,那时候就盼着啥时候有一天能不再兼容这鬼玩意,嗯。到了今天,我们当初心心念念的时代来了,我们再也不用为了CSS而付出太多的努力。虽然依然存在一些不兼容,但是我们可以使用CSS的工作流可以使用PostCSS,甚至直接使用Houdini去介入到浏览器的重绘和重排。那时候我们使用jQuery对浏览器事件的大兼容,更不用搞什么啥babel-polyfill。有人可能会说jq那玩意多恶心啊,谁用啊。其实这东西看怎么写了,写好了其实没那么恶心。不过在今天,大家美滋滋的写着TS的时候,大部分同学其实也未曾关注过所谓编译之后的东西长什么样,其实也挺🤢 Knockout 的横空出世突然让我们觉得手里的jq代码不香了,大家第一次体会到了MVVM的快乐

RabbitMQ 基础概念进阶

扶醉桌前 提交于 2021-01-28 13:41:34
上一篇 RabbitMQ 入门之基础概念 介绍了 RabbitMQ 的一些基础概念,本文再来介绍其中的一些细节和部分高级概念。 一、消息生产者发送的消息不可达时如何处理 RabbitMQ 提供了消息在传递过程中无法发送到一个队列(比如根据自己的类型和路由键没有找到匹配的队列)时将消息回传给消息发送方的功能,使用 RabbitMQ 的客户端提供 channel.basicPublish 方法的两个参数 mandatory 和 immediate (RabbitMQ 3.0 以下版本),除此之外还提供了一个备份交换器可以将无法发送的消息存储起来处理,不用重新传回给发送方。 1.1 mandatory 参数 mandatory 被定义在 RabbitMQ 提供的客户端的 channel.basicPublish 方法中,如下所示: 当把方法的 mandatory 参数设置为 true 时,那么会在交换器无法根据自身的类型和路由键找到一个符合要求的队列时,RabbitMQ 会自动调用 Basic.Return 把该消息回传给发送方也就是我们的消息生产者。反之,如果设置为 false 的话,消息就会被直接丢弃掉。那么问题来了,我们要如何去获取这些没有被发送出去的消息呢?RabbitMQ 给我们提供了事件监听机制来获取这种消息,可以通过 addReturnListener 方法添加一个

利用mocha进行以太坊智能合约编译部署测试

纵饮孤独 提交于 2021-01-28 09:22:40
使用智能合约编程语言solidity编写的智能合约,除了可以直接通过以太坊的工具链truffle,ganache-cli进行测试之外,还可以结合mocha进行单元测试。 mocha单元测试本质上,还是需要对合约进行编译、部署,只不过可以通过代码的形式进行直观的操作,而不是通过truffle命令来进行编译、部署、测试。 首先,构建工程,我们可以根据构建node项目的方式构建: 添加依赖:package.json "dependencies": { "ganache-cli": "^6.12.2", "mocha": "^8.2.1", "solc": "^0.4.26", "web3": "^1.3.3" } 项目结构这里简单遵循以太坊项目的结构建立一个contracts文件夹,用来保存合约。然后在contracts目录下新建HelloWorld.sol pragma solidity ^0.4.23; contract HelloWorld{ string public name; constructor(string _name) public{ name = _name; } function getName() public view returns(string){ return name; } function changeName(string _name)

webpack 5 +React-hot-loader

丶灬走出姿态 提交于 2021-01-28 07:28:38
接 Webpack 5的最完整指南 React-hot-loader 热模块更换 在源代码中进行了某些更改,所做的更改就会应用到在浏览器中运行的应用中,而无需重新加载整个页面。 首先,安装: npm install --save-dev react-hot-loader 增加 webpack 配置 +const webpack = require('webpack'); const path = require('path'); const HtmlWebpackPlugin = require('html-webpack-plugin'); module.exports = { mode: 'development', entry: { index: path.resolve(__dirname, 'app', 'index.js'), }, output: { path: path.resolve(__dirname, 'build'), }, plugins: [ new HtmlWebpackPlugin({ template: path.resolve(__dirname, 'app', 'index.html'), }), + new webpack.HotModuleReplacementPlugin(), ], devServer: { port: 10010,

花了一个月肝出来的编程导航,发现优质编程资源!已开源

一世执手 提交于 2021-01-24 14:39:38
2021 年 01 月 20 日,编程导航正式上线,做最专业灵活的编程导航站,帮助大家轻松发现优质编程资源! 整个项目基于 React + 云开发技术栈,开源给大家!地址在文末 编程导航不仅仅是一个项目,而是以 “帮助大家发现优质编程资源,提升效率” 为目标的完整生态。目前已上线两个产品: 编程导航主站 - 发现优质编程资源 网址: https://www.code-nav.cn 编程导航主页 - 程序员必备主页 网址: https://home.code-nav.cn 为什么需要编程导航? 总是有很多学编程的朋友问 “有没有学 xx 的资源”、“我需要 xx 资源,能发我一份么”。 在重复接收类似讯息后,我陷入深思。 如今编程资源获取的大环境雾气重重,有很多不太好的现象: 很多名不副实的编程资源被捧上了天,名人效应、一叶障目 好的编程资源被商业利益化,很多人利用信息差,将本来免费的资源进行贩卖 好的编程资源由于作者不出名,没有被人发现 网上的编程资源非常零散,真实性、有效性很不确定 意识到这些问题后,作为一个开发者,我可以做些什么? 继续去网上搜好的资源,然后传到网盘上,分享给大家? 一个人的力量终归渺小,好的编程资源环境需要大家的共同努力。 这是『 编程导航 』问世的原因: 提供人人皆可推荐的编程资源导航平台,帮助大家发现优质编程资源。 QA 问答 Q:编程类导航网站都烂大街了

我来聊聊面向模板的前端开发

↘锁芯ラ 提交于 2021-01-24 11:46:40
在软件开发中,研发效率永远是开发人员不断追求的主题之一。于公司而言,在竞争激烈的互联网行业中,产出得快和慢也许就决定着公司的生死存亡;于个人而言,效率高了就可以少加班,多出时间去提升自己、发展爱好、陪伴家人,工作、生活两不误。 提升效率的途径,无外乎就是「方法」和「工具」。以一个开发者的思维来想,就是将工作内容进行总结、归纳,从一组相似的工作内容中提炼共同点,抽象出解决这一类问题的方法,从而造出便于在今后的工作中更为快速解决这类问题的工具。这个「工具」可以是个函数、组件、中间件、插件,也可以是 IDE、其他开发工具的扩展,甚至是语言。 面向组件 在现代前端开发中,如果去问一个业务前端开发:「如何提升团队开发效率?」对方所回答的内容中,极有可能会出现「组件库」。没错,在前端工程化趋近完善的今天,在近几年 React、Vue 等组件化库/框架的影响下,面向组件开发的思维方式早已深入人心。 组件库提效有限 现在,组件库已经是一个前端团队的必备设施了,长远来看,团队一定且必须要有自己的组件库。开源的第三方组件库再好,对于一家企业的前端团队来说也只是短期用来充饥的,因为它们无法完全满足一家公司的业务场景,并且出于多终端支持的考虑,必定要进行二次开发或者自研。 组件库有了,团队和公司中推广的效果也不错,绝大多数的人都在用。使用组件开发页面相对 jQuery 时代要每块功能区都得从 <span>

GridManager loading样式修改

大城市里の小女人 提交于 2021-01-23 03:58:31
在使用gridmanager表格组件时,如果想要改变loading样式该如何处理? gridmanager提供的 loadingTemplate 参数可以快速的解决这个问题。 loadingTemplate 参数的介绍: 参数类型: String 默认值: '' 数据加载中模板,该配置可以自定义数据加载时使用的loading样式。 使用该配置时,需要自行提供与模板相匹配的css样式。 使用方式 new GridManager({ gridManagerName: 'test', loadingTemplate: '<div class="loading-class">暂无数据</div>', ... //其它参数 }) gridmanager是跨框架的表格组件,在不同框架中对模版参数是支持框架语法的。 loadingTemplate 就是其中的一个模板参数,拿react来举个例子: import Table from 'gridmanager-react'; const emptyTemplate = () => { return ( <div className="loading-class"> 暂无数据 </div> ); }; <Table gridManagerName= 'test', emptyTemplate ></Table> 最后附上 相关API

如何利用 React Hooks 管理全局状态

不想你离开。 提交于 2021-01-22 18:01:43
来源 | https://www.cnblogs.com/xhyccc/p/14242492.html React 社区最火的全局状态管理库必定是 Redux,但是 Redux 本身就是为了大型管理数据而妥协设计的——这就会让一些小一点的应用一旦用上 Redux 就变得复杂无比。 后来又有了 Mobx,它对于小型应用的状态管理确实比 Redux 简单不少。可是不得不说 Mobx+React 简直就是一个繁琐版本的 Vue。所以我也不太喜欢,不如直接用 Vue3。 总而言之,不管是 react-redux 还是 mobx,他们使用的时候都非常复杂,甚至需要你去组件函数或是组件类上修修改改,从审美角度上来说就令人不太喜欢。 直到后来某一天用了 Angular,我就开始对 SOA 产生好感,ng 的 Service 的写法与依赖注入控制反转着实惊艳到了我。 Service 是 Angular 的逻辑复用方法,并且解决了共享状态的问题,那 React 的自定义 Hook 可以达到类似的效果嘛? 可以,并且会比 Angular 更简洁!!! 什么是 Service 我们先来想一下,Service 到底是什么? Service 包含 n 个方法; Service 包含有状态; Service 应该是个单例。 这些方法与状态应该是高度整合的,一个 Service 解决的是一个模块的问题。

花了一个月肝出来的编程导航,发现优质编程资源!已开源

牧云@^-^@ 提交于 2021-01-22 13:23:54
2021 年 01 月 20 日,编程导航正式上线,做最专业灵活的编程导航站,帮助大家轻松发现优质编程资源! 整个项目基于 React + 云开发技术栈,开源给大家!地址在文末 编程导航不仅仅是一个项目,而是以 “帮助大家发现优质编程资源,提升效率” 为目标的完整生态。目前已上线两个产品: 编程导航主站 - 发现优质编程资源 网址: https://www.code-nav.cn 编程导航主页 - 程序员必备主页 网址: https://home.code-nav.cn 为什么需要编程导航? 总是有很多学编程的朋友问 “有没有学 xx 的资源”、“我需要 xx 资源,能发我一份么”。 在重复接收类似讯息后,我陷入深思。 如今编程资源获取的大环境雾气重重,有很多不太好的现象: 很多名不副实的编程资源被捧上了天,名人效应、一叶障目 好的编程资源被商业利益化,很多人利用信息差,将本来免费的资源进行贩卖 好的编程资源由于作者不出名,没有被人发现 网上的编程资源非常零散,真实性、有效性很不确定 意识到这些问题后,作为一个开发者,我可以做些什么? 继续去网上搜好的资源,然后传到网盘上,分享给大家? 一个人的力量终归渺小,好的编程资源环境需要大家的共同努力。 这是『 编程导航 』问世的原因: 提供人人皆可推荐的编程资源导航平台,帮助大家发现优质编程资源。 QA 问答 Q:编程类导航网站都烂大街了