读完需要9分钟,速读仅需3分钟 这是前端食堂的第 64 篇原创 美味值:????? 口味:酸菜汆白肉 树的相关名词科普 根节点 叶子节点 父节点 子节点 兄弟节点 高度 深度 层 ? 开启刷题 前端食堂的 LeetCode 题解仓库[1] 年初立了一个 flag,上面这个仓库在 2021 年写满 100 道前端面试高频题解,目前进度已经完成了 50%。 如果你也准备刷或者正在刷 LeetCode,不妨加入前端食堂,一起并肩作战,刷个痛快。 了解了树的基础知识后,马上开启我们愉快的刷题之旅,我整理了 8 道高频的 LeetCode 链表题及题解如下。 原题链接[8] DFS 深度优先搜索 树的深度 = 左右子树的最大深度 + 1 const maxDepth = function(root) { if (! 知乎:童欧巴 掘金:童欧巴 这是一个终身学习的男人,他在坚持自己热爱的事情,欢迎你加入前端食堂,和这个男人一起开心的变胖~ “如果你觉得读了本文有收获的话可以点个在看让我看到。
这篇文章附带了一些开发人员的独特技巧。一些技巧可能对您的学习工作有所帮助,并提高您的效率。 width: calc(5px + 100px) width: calc(6em * 8) width: calc(100% - 5px) 3.in 运算符 in 运算符可以检查是否在数组中存在的索引, <mi>c</mi> <mn>2</mn> </msup> </mrow> </math> 8. #footer > a 这将选择和设置快速位于页脚ID下的所有动态连接组件的样式。它不会选择动态组件之外的任何内容,也不会选择页脚中包含的其他任何内容,类似于纯内容。这也适用于高级路由组件。 感谢您的阅读
4.47%的用户希望在两秒或更短时间内加载网页 5.40%的用户会等待不到三秒的网页渲染时间就放弃该网站。 6.10秒左右是保持用户注意力的极限,大多数用户会在10秒后离开你的站点。 并进一步为大家提供改进的意见。 PageSpeed的工作完全取决于性能,它混合使用实验室和现实世界的数据来构建一个关于网站速度的综合报告。 你可以简单地在Chrome开发者工具中运行这个工具命令行甚至节点模块。而你所要做的就是提供一个URL,Lighthouse会运行一系列审计,告诉你网站的运行情况。 8.SpeedTracker SpeedTracker是一个运行在WebPageTest之上的工具,它定期对你的网站进行性能测试,并显示各种性能指标随时间的变化情况。 在上述工具的帮助下,你可以做很多事情,但要使你的网站达到更高的标准,你可能需要付出更多的努力。 END
前言 本次解析本套高级前端的Vue面试题的第三问,Vue中是如何检测数组变化的,如果对这一问也有所不熟悉的,请一起学习吧。 ---- 上一文中,我们提到了Vue2.0和3.0的响应式原理,但是没有深入细讲,在本文会进行深入的分析Vue在2.0版本和3.0版本里,分别是如何检测各种数据类型的值变化,从而做到页面响应式的,并且搞清楚为何数组类型的变化要特殊处理 ,最后也将Vue从2.x升级到3.x的过程中为何要采用了不同的数据监测原理的原因也一探究竟。 b、回到文章开始示例的那一段Vue代码里的实现,我改变了Vue的data下list的下标属性值,页面是没有响应变化的,但是这里我改了list的内的值从1到5,页面响应了,这又是怎么回事? 2、数组的操作方法如果是操作已经存在的被监听的元素也是可以触发setter被监听的。
前言 最近拿到一套高级前端的Vue面试题,从头往下看了一遍,居然大部分都是一知半解的,遂准备一道一道的认真学习总结,立志做一位Vue高级开发者! ? 提到MVVM,很多前端开发者都会想到Vue的双向绑定,然而它们并不能划等号,MVVM是一种软件架构模式,而Vue只是一种在前端层面上的实现,其实不单在Vue里,在很多Web 框架应用里都有相关的实现。 因为前端独立开发发布,实际相对原来的MVC模式是少了View这一层,这也让新的概念Restful出现在我们的视野里,很多新的框架又开始支持提供这种前端控制轻量级模式下的适配方案。 随着前端对于控制逻辑的越来越轻量,MVVM模式作为MVC模式的一种补充出现了,万变不离其宗,最终的目的都是将Model里的数据展示在View视图上,而MVVM相比于MVC则将前端开发者所要控制的逻辑做到更加符合轻量级的要求 实现的更友好,更适合开发者开发应用程序。
capitalize是首字母大写 text-transfrom:lowercase是全部字母为小写 text-transfrom:uppercase是全部字母为大写 font-weight: bold;字体为粗体, 8、 A.使用utf-8编码 B.将阿拉伯文转为图片并嵌入到文档内 C.使用GBK编码 D.使用iso-8859-2编码 【正确答案】A 【答案解析】A。 UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,又称万国码。UTF-8用1到6个字节编码UNICODE字符。 ---- 以下都是多选题 ---- 多选题 (共计 8 题,总计 16分) 11、(多选题)在使用table表现数据时,有时候表现出来的会比自己实际设置的宽度要宽,为此需要设置下面哪些属性值? <body> 【正确答案】A,B,D 【答案解析】这里说的是html文档的结构标准、规范,html、head、body是一个html文档中必须的标签 18、(多选题)关于html的盒模型,下列说法正确的是
熟悉前端开发的人应该都知道,最近几年,各种前端框架层出不穷,H5开发模式也越来越流行,大前端时代也已经到来。 每一年各种前端技术也应运而生,快速掌握最新的前端技术也是每一个开发者不可或缺的一门技能。 今天,Web前端小编就来和大家谈谈2019年的8个Web开发的趋势,希望能给各位带来一些有用的信息。 1、智能聊天机器人Chatbot 智能聊天机器人为用户沟通、服务交付提供了一种全新的渠道。 对于单页网站的概念,用户体验非常重要,未来几年随着新的Web标准和动画特效的加入,类似单页网站这样的快速Web产品将大行其道。 4、物联网的web开发 我们正在进入一个前端网页设计的新时代,网站的设计需要考虑到智能设备的功能。物联网将把电子商务网站设计提升到一个新的水平。 8、区块链Web开发 区块链正在落地阶段,首先需要解决的就是区块链应用的可访问问题,而Web3.0技术将向区块链敞开大门(类似微信、Facebook这样的封闭系统显然不会对颠覆性的第三方区块链开发者手下留情
摘要 V8是一个由丹麦Google使用C++开发的开源JavaScript引擎,用于Google Chrome中,目前该JavaScript引擎已用于其它项目的开发。 在V8中的数字表示 在V8中数字有小整数(SMI)和引用类型,它们是通过标记位进行表示的,以提升性能。 这个例子是为了说明基于标记位的存储方式,在 V8 引擎的内部并不是这么存储的。 ? 在V8代码中使用C++的位运算去做比较,是为了提升V8引擎本身的性能。 ? 如图我做了一个基准测试。 左边的代码是V8单元测试中的代码,可见在32位中使用的是i30,在64位系统上,V8则会使用i31。 Type feedback V8引入了类型反馈技术。当我们进行二元运算的时候,V8会对所有运算的参数进行类型反馈,类型反馈给V8引擎。 ? 这就是V8使用的优化编辑器。
环境 CentOS 8 + 禅道16.x + Nginx + Mysql + PHP PHP 配置 centos 自带的有 php环境 sudo dnf module list php # 查看版本,默认 vi /etc/php-fpm.d/www.conf 找到 做修改 user = (非root 用户) group = (非root 用户) 这里没配好 503,500 注意这里 使用端口和非端口的区别 % | | root | 127.0.0.1 | | root | ::1 | | root | localhost | +------+-----------+ 允许单独的ip 192.168.100.%' IDENTIFIED BY 'my-new-password' WITH GRANT OPTION; 最后一步还需要配置防火墙 / 安全策略组,开放3306 端口 安装禅道 .16.5.php7.2_7.4.zip dnf -y install unzip # 安装unzip解压 ,有就不装 unzip ZenTaoPMS.16.5.php7.2_7.4.zip # 解压禅道源码包
在生命周期的每个节点,Vue提供了一些钩子函数,使得开发者的代码能被有机会执行。 这里的钩子函数可以简单理解为,在Vue实例中预先定义了一些像created,mounted等特定名称的函数,函数体的内容开发给开发者填充,当被实例化的时候,会按照确定的先后顺序来执行这些钩子函数,从而将开发者的代码有机会执行 对于如何在Vue内部调用开发者的代码原理,可以看看下面这个例子。 第一,从开发者的代码层面看看,与开发者较为密切的数据模型与页面DOM结构在各个生命周期钩子函数执行时的变化。第二,在源码层面看一下这些生命周期钩子函数它们各自的执行过程。 下面是源码里所列出来的所有可承载开发者代码的钩子函数。
既然都是前端开发,两者肯定有紧密的联系,移动前端开发和web前端开发其实都属于前端开发的范围,目前前端发展的趋势就是大前端,可以说是包罗万象,当然也就包含PC端和移动端领域,而现在的前端开发人员也已早就不是当年的切图仔了 ,需要学习和掌握大前端体系方方面面的知识才能在日常的开发中游刃有余,但是不论趋势如何发展,目前来看HTML、CSS和JavaScript依然是整个前端开发的三大基石。 所以不论是想做移动前端开发还是web前端开发,这三样基础技术都必须熟练掌握。 移动前端开发和web前端开发都属于前端开发,那具体又有什么区别呢? 1、业务的应用场景 web前端开发主要指传统的PC端网页开发,页面主要是运行在PC端浏览器中,移动前端开发出来的页面主要是运行在手机上;直观上会感觉,PC端页面大一些,移动端页面小一些,但是根据开发经验 ,页面大可并不代表书写的代码复杂,页面小也并不意味着开发简单,难与易主要还是取决于具体的业务需求。
最近面试中碰到了一道关于JS执行顺序的题目,题目比较基础,但是如果对于JS不熟的话,还是容易答不上来。再次记录和分析此次面试题,希望对大家有所帮助。 首先看官肯定知道JS是单线程,实现异步的方法就是定时器和es6+出现的promise/async等,那么现在问题来了,既然es6出现的新的异步方式,那么和之前的定时器相比,那个异步先执行呢? 在这里要记住一句话,微任务的优先级是高于宏任务的。参考面试题解答 前端进阶面试题详细解答程序执行顺序1、主程序因为js是单线程的,同一时间只能有一段代码在执行,所以首先执行的就是JS的主程序。 微任务:async1 Promise-then宏任务:setTimeout8、微任务 async1 - console.log监测到有微任务,执行微任务。console.log立即执行,没有异步部分。 同时删除微任务队列中对应的任务,再次回到第二步。微任务:空宏任务:setTimeout8 和 9 两步,在不同的浏览器版本可能执行的顺序并不相同,所以不必纠结这两部前后顺序问题。
而由于Vue内部的渲染机制,实际上页面只会渲染一次,把第一次的赋值所带来的的响应与第二次的赋值所带来的的响应进行一次合并,将最终的val只做一次页面渲染。 从性能角度,例子里最终的需要展示的数据其实就是第二次给val赋的值,如果第一次赋值也需要页面渲染则意味着在第二次最终的结果渲染之前页面还需要渲染一次无用的渲染,无疑增加了性能的消耗。 callbacks.slice(0); callbacks.length = 0; for (var i = 0; i < copies.length; i++) { copies[i](); } } 8、 flushSchedulerQueue(); return } // 将页面更新函数放进异步API里执行,同步代码执行完开始执行更新页面函数 nextTick(flushSchedulerQueue); } 在我们的开发代码里 this.dirty = true; } else if (this.sync) { this.run(); } else { queueWatcher(this); } }; 在开发代码中
简述一下背景故事,今天有一个年轻人来我们公司面试前端,主管临时找我充当了一次面试官,个人工作经验尚佳,面试经验一般,随口问了他 8 个问题,小伙子回答的不错,我让他明天来和人事谈薪资。 在我们的面试环节当中,面试官不一定就是前端工作人员,也可能工作经验不如你我丰富,不会说我们公司只用Vue开发项目就只问你Vue传参和封装,涵盖前端各个知识点才能看出一个人的基本功是否扎实。 8.computed 与 watch 的区别? 9.什么是防抖与节流? 8,watch 用来事件监听,当数据变化时执行一个函数; computed 根据现有的数据计算出新的值。 9,防抖:多次触发事件后,n秒内函数只能执行一次; 节流:多次触发事件后,函数每n秒执行一次; (本章完) 前端的学习不是一蹴而就,不积跬步无以至千里,不积小流无以成江海。
官方开发者团队制作的一个站点,它综述了关于最佳实践应用开发的意见,旨在给那些准备学习Meteor的JavaScript开发者提供中间桥梁的作用。 JavaScript Developer Survey Results(JavaScript开发者调查结果) Nicolás Bevacqua研究了JavaScript的开发习惯。 fromTitle=CDN “该站点收集的信息可以帮助你更好地为你的内容分发需求找到更好地CDN。” ? 8. 打开你的开发者工具控制台查看获取到关于service worker正在做的事情的事件和通知信息。” ? 14. What forces layout / reflow 它是Paul Irish做的一个要点总结,列出了当在JavaScript里使用不同的前端功能时,可能触发的”布局颠簸”,该问题是一个常见的性能瓶颈
前端行业其实很少人去深究前端开发工程师中的“工程师”这三个字,究竟是什么意思。其实在我看来,许多所谓的前端开发工程师只是做前端开发的工作而已,远配不上工程师这三个字。 恩,其实我是说,我配得上前端开发工程师中的“工程师”这三个字。不要急着喷我,我有理由的。 举个例子吧,外包公司大家都知道,在那公司里,多数都是只做软件,不做业务。 这也是我说,我是配得上前端工程师这几个字的原因,因为我也能根据业务发展,来解决前端工作范围内的问题。 好吧,我再谦虚一下,在一定程度上。。。 我不仅拥有编写前端程序代码的开发思路,我还有能解决问题的思路。我这种能力比能记住和使用很多函数方法插件框架。。这些东西要强的多。 可能我回答他的答案并不标准,但肯定没有说错。对于一个合格的开发工程师来讲,不管你前端还是后端,给你一个活儿,你最好想想它是干嘛的?谁需要它?它的产出物给谁?
4,解释一下:csrf 和 xss 5,怎么防止 csrf 和 xss 6,跨域的处理方案有哪些 7,CORS 是如何做的? 8,对于 CORS ,Get 和 POST 有区别吗? ,所以没问前端任何知识,主要聊业务相关的,看看我对业务的理解,以及一些想法。 96道前端面试题 下面给大家分享96道前端面试题,如果有需要可以点击这里免费领取! 1,一些开放性题目 自我介绍:除了基本个人信息以外,面试官更想听的是你与众不同的地方和你的优势。 项目介绍 如何看待前端开发? 平时是如何学习前端开发的? 未来三到五年的规划是怎样的? 2,position的值, relative和absolute分别是相对于谁进行定位的? 5,谈谈你对webpack的看法 6,说说TCP传输的三次握手四次挥手策略 7,TCP和UDP的区别 8,说说你对作用域链的理解 9,创建ajax过程 10,渐进增强和优雅降级 11,常见web
前端面试题视频讲解实现类的继承类的继承在几年前是重点内容,有n种继承方式各有优劣,es6普及后越来越不重要,那么多种写法有点『回字有四样写法』的意思,如果还想深入理解的去看红宝书即可,我们目前只实现一种最理想的继承方式 :首先用字符串的方式来保存大数,这样数字在数学表示上就不会发生变化初始化res,temp来保存中间的计算结果,并将两个字符串转化为数组,以便进行每一位的加法运算将两个数组的对应的位进行相加,两个数相加的结果可能大于 ${char},出现了${num}次`);复制代码使用 reduce 求和arr = 1,2,3,4,5,6,7,8,9,10,求和let arr = [1,2,3,4,5,6,7,8,9,10]arr.reduce ((prev, cur) => { return prev + cur }, 0)复制代码arr = [1,2,3,[4,5,6],7,8,9],求和let arr = [1,2,3,4,5,6,7,8,9,10 当对象的 readyState 变为 4 的时候,代表服务器返回的数据接收完成,这个时候可以通过判断请求的状态,如果状态是 2xx 或者 304 的话则代表返回正常。
Promise 实例数组, 然后其 then 注册的回调方法是数组中的某一个 Promise 的状态变为 fulfilled 的时候就执行. 因为 Promise 的状态只能改变一次, 那么我们只需要把 Promise.race 中产生的 Promise 对象的 resolve 方法, 注入到数组中的每一个 Promise 实例中的回调函数中即可 ,并且返回接受余下的参数且返回结果的新函数的技术。 第二次取出数据数组第二个元素,随机产生一个除了索引为1的之外的索引值,并将第二个元素与该索引值对应的元素进行交换按照上面的规律执行,直到遍历完成var arr = [1,2,3,4,5,6,7,8,9,10 randomIndex]] = [arr[randomIndex], arr[i]];}console.log(arr)复制代码还有一方法就是倒序遍历:var arr = [1,2,3,4,5,6,7,8,9,10
读完需要10分钟,速读仅需3分钟 这是前端食堂的第 63 篇原创 美味值:????口味:虎皮凤爪 数组在上一篇的专栏,数组回炉重造+6道前端算法面试高频题解中我们进行了回顾和刷题。 年写满 100 道前端面试高频题解,目前进度已经完成了 50%。 了解了链表的基础知识后,马上开启我们愉快的刷题之旅,我整理了 6 道高频的 LeetCode 链表题及题解如下。 https://leetcode-cn.com/problems/linked-list-cycle/solution/qian-duan-shi-tang-ti-jie-chao-hao-li-ji-md8m 知乎:童欧巴 掘金:童欧巴 这是一个终身学习的男人,他在坚持自己热爱的事情,欢迎你加入前端食堂,和这个男人一起开心的变胖~ “如果你觉得读了本文有收获的话可以点个在看让我看到。