• 回答数

    2

  • 浏览数

    174

新津东方
首页 > 工程师考试 > 前端技术工程师考试题

2个回答 默认排序
  • 默认排序
  • 按时间排序

平淡的朝发夕至

已采纳

今天小编要跟大家分享的文章是关于参加Web前端面试的常见面试题汇总。准备参加Web前端面试的小伙伴们来和小编一起看一看吧,希望本篇文章能够对大家有所帮助。1.渐进增强与优雅降级渐进增强并不是一种技术,而是一种设计思想。各个浏览器的渲染能力各不相同,要做一个每个人都能看到的网页、感受到的体验都一致的网站几乎不可能。但还是得网站的可访问性,保证用户在任何环境下都能正常访问网页得核心内容或能使用基本功能(避免网页打不开、排版错误等),并为他们提供当前条件下最好的体验,这就是渐进增强得核心思想。优雅降级也是一种设计思想,为了保证在高版本浏览器中提供最好的体验,碰到低版本浏览器再降级进行兼容处理,使其能正常浏览。这两种思想的区别在于:1.渐进增强是向上兼容,优雅降级是向下兼容;2.渐进增强是从简单到复杂,优雅降级是从复杂到简单;3.渐进增强关注的是内容(保证核心内容),优雅降级关注的是浏览体验(为了兼容低版本浏览器)作用DTD(DocumentTypeDefinition,文档类型定义)是一系列的语法规则,用来定义XML或(X)HTML的文档类型。浏览器会使用它来判断文档类型,决定何种协议来解析,以及切换浏览模式。DOCTYPE是用来声明文档类型和DTD规范的,一个主要的用途便是文件的合法性验证。如果文档代码不合法,那么浏览器解析时便会出现一些差错。HTML5的文档类型声明:(严格模式)的DTD包含所有HTML元素和属性,但不包括展示性的和弃用的元素(如font),它的文档类型声明:"">标准模式与怪异模式怪异模式(QuirksMode)用于模拟旧浏览器的行为。早期的网站并不会遵循完整的规范,随着浏览器支持越来越多的规范,在那些旧的浏览器中开发的页面在显示时会被破坏。为了向后兼容,浏览器发明了怪异模式,一行错误或无效的DOCTYPE都会触发怪异模式。浏览器使用文件开头的DOCTYPE来决定用怪异模式处理或标准模式处理。DOCTYPE可以确保不同浏览器以相同的方式解析文档,以及执行相同的渲染模式。怪异模式与标准模式的主要区别:1.怪异模式的宽度和高度会包含padding和border。标准模式不包含,标准模式下可以通过设置box-sizing:border-box将标准盒模型转化成怪异模式下的盒模型。2.怪异模式下,当内容超出容器高度时,会将容器拉伸,而不是溢出。3.怪异模式下,在表格中的字体样式(如font-size)不会继承。4.怪异模式下颜色值必须使用十六进制标记法。3.语义化HTML5中的语义化就是让元素、属性或属性值有含义,更准确地标记特定类型的内容。对元素语义化的目的是为了让元素的语义和呈现分离,元素只负责文档内容的结构与含义,而CSS样式控制内容的呈现,像元素,没有语义但却能将字体变粗,这类元素违背了语义化的目的,将会被废弃。优点·使得HTML文档结构清晰、布局合理、主体突出、可读性更强。·有利于SEO,搜索引擎根据标签来确定上下文和各个关键字的权重。·方便其他设备解析,如盲人阅读器根据语义渲染网页。·有利于开发和维护,语义化更具可读性,代码更好维护,与CSS3关系更和谐。语义化标签·定义文档的页眉区域,应作为介绍内容或者导航链接栏的容器;·footer内容的页脚,通常包含该章节作者、版权数据或者与文档相关的链接等信息;·article文档、页面、应用或网站中的独立结构,是可独立分配的、可复用的结构,如在发布中,它可能是论坛帖子、杂志或新闻文章、博客、用户提交的评论、交互式组件,或者其他独立的内容项目;·nav描述一个含有多个超链接的区域,该区域包含跳转到其他页面或页面内部其他部分的链接列表;·section表示文档中的一个区域(或节),比如,内容中的一个专题组;·main定义文档的主要内容,该内容在文档中应当是独一无二的,不包含任何在文档中重复的内容,比如侧边栏,导航栏链接,版权信息,网站logo,搜索框(搜索框作为文档的主要内容);·aside表示一个和其余页面内容几乎无关的部分,被认为是独立于该内容的一部分且可以被单独的拆分出来而不会影响整体。通常表现为侧边栏或嵌入内容。4.超链接伪类:link、:visited、:active和:hover的声明顺序是怎样的?:link表示未访问的链接状态;:visited表示已访问状态;:active表示激活状态(鼠标按下);:hover表示悬停状态。推荐顺序是LVHA,即:link:visited:hover:active。理由如下:·当鼠标悬停在未访问的链接上时,:link和:hover都会命中,如果:hover在:link之前声明,那么(:hover)就会被覆盖;·当鼠标悬停在已访问的连接上时,:visited和:hover都会命中,如果:hover在:visited之前声明,那么(:hover)就会被覆盖;·当鼠标单击链接时,:active和:hover都会命中,我们大多是想让:hover只在悬停时展示样式,按下鼠标时使用:active样式,因此:active在:hover之后声明;·综上,:hover应在:link和:visited之后,在:active之前,因此active在最后。而:link和:visited两者的顺序无所谓,互不影响。常见的长度单位CSS中除了px长度单位之外,还有下面几个长度单位:·pc六分之一英寸,1pc=12pt=1/6*1in=16px;·pt一磅,72分之一英寸。1pt=1/12_1pc=1/72_1in≈;·in一英寸,1in=;·ex在含有“X”字母的字体中,它是该字体的小写字母的高度。对于很多字体来说,1ex≈;·em1em等于父级元素的字体大小,2em就是父级元素字体大小的二倍;·rem当用在根元素()的font-size上面时,它代表了它的初始值;·ch代表元素所用字体font中“0”这一字形的宽度;·vh1vh相当于视口高度的1%,100vh就是视口的高度;·vw1vw相当于视口宽度的1%,100vw就是视口的宽度;·vmax视口高度vw和宽度vh两者中的最小值·vmin视口高度vw和宽度vh两种中的最大值;·%相对于父级元素的大小来确定;参考:CSS[1]CSSpercentage[2]6.事件对象冒泡与捕获事件冒泡与捕获是事件处理的两种机制,主要描述当在一个元素上有两个相同类型的事件处理器被激活会发生什么。在点击子元素时,浏览器运行了两种不同的阶段:捕获阶段和冒泡阶段。捕获阶段的行为:·浏览器检查元素的最外层祖先,是否在捕获阶段中注册了一个onclick事件处理程序,如果是,则运行它;·然后,它移动到中单击元素的下一个祖先元素,并执行相同的操作,然后是单击元素再下一个祖先元素,依此类推,直到到达实际点击的元素;而冒泡与捕获恰恰相反:·浏览器检查实际点击的元素是否在冒泡阶段中注册了一个onclick事件处理程序,如果是,则运行它;·然后它移动到下一个直接的祖先元素,并做同样的事情,然后是下一个,等等,直到它到达元素;而现代浏览器在默认情况下,所有事件处理程序都在冒泡阶段进行注册。因此上面代码在点击子元素时会先执行子元素绑定的事件,然后向上冒泡,触发父元素绑定的事件。addEventListener函数的第三个参数是个布尔值。含义:·当布尔值是false时(这也是默认值),表示向上冒泡触发事件;·当布尔值是true时,表示向下捕获触发事件;不能冒泡的事件有些事件是不会冒泡的。比如:·blur元素失去焦点时触发,focusout事件也是失去焦点时触发,但可以冒泡;·focus元素获取焦点时触发;·mouseenter鼠标移动到元素上时会触发该事件,与之对应的是mouseover事件,但会冒泡;·mouseleave鼠标离开元素时触发,与之对应的是mouseout,但会冒泡;事件冒泡可以让我们利用事件委托,尤其是处理大量子元素时,如果给每个子元素都绑定事件,这是不优雅的,可以将事件绑定到父元素上,并让子节点上发生的事件冒泡到父节点上,利用属性可以获取到当前触发事件的子元素。事件对象中的方法·stopPropagation()阻止事件冒泡,当设置后,点击该元素时父元素绑定的事件就不会再触发;·preventDefault()阻止默认事件的发生;·stopImmediatePropagation()它用来阻止监听同一事件的其他事件监听器被调用以及阻止事件冒泡,比如给同一个div元素绑定多个click事件(使用addEventListener方法可以注册多个),当在第二个事件函数中调用stopImmediatePropagation方法时,点击div元素时,后面注册的click将不会被触发,而且还会阻止事件冒泡;比如下面的例子,给p绑定多个click事件,在第二个事件函数中调用stopImmediatePropagation,第三个click事件就不会触发,因为也阻止了冒泡,因此父元素的click事件也不会触发。paragraph


("div").addEventListener("click",(event)=>{


alert("我是div元素,我是p元素的上层元素");


//p元素的click事件没有向上冒泡,该函数不会被执行


},false);


constp=('p')


("click",(event)=>{


alert("我是p元素上被绑定的第一个监听函数");


},false);


("click",(event)=>{


alert("我是p元素上被绑定的第二个监听函数");


();


//执行stopImmediatePropagation方法,阻止click事件冒泡,并且阻止p元素上绑定的其他click
事件的事件监听函数的执行.


},false);


("click",(event)=>{


alert("我是p元素上被绑定的第三个监听函数");


//该监听函数排在上个函数后面,该函数不会被执行


},false);


“在IE浏览器中,使用也可以取消事件冒泡;使用也能阻止默认事件的发生。target与currentTargettarget属性指向的是事件目标,而currentTarget属性指向的是正在处理当前事件的对象,它总是指向事件绑定的元素。而target指向的可能不是定义时的事件目标。例如:('click',(e)=>{();},false);可能指向div元素,也可能指向它的子元素。而总是指向div元素。以上就是小编今天为大家分享的关于参加Web前端面试的常见面试题汇总的文章,希望本篇文章能够对正准备参加前端面试的小伙伴们有所帮助,想要了解更多Web前端知识记得关注北大青鸟Web前端培训官网,最后祝愿小伙伴们工作顺利,成为一名优秀的Web前端工程师。参考资料[1]CSSlength:#/zh-CN/docs/Web/CSS/length[2]CSSpercentage:#/zh-CN/docs/Web/CSS/percentage

前端技术工程师考试题

270 评论(11)

专属兔兔的

vue的路由模式一共有两种,分别是哈希和history,他们的区别是hash模式不会包含在http请求当中,并且hash不会重新加载页面,而使用history模式的话,如果前端的url和后端发起请求的url不一致的话,会报404错误,所以history的原理是利用html5新增的两个特性方法,分别是psuhState和replaceState来完成的,以上就是对vue路由的理解。 路由的导航守卫 又叫做路由的钩子函数(生命周期函数) 就是在跳转页面的时候把路由栏下来,做一些操作在放行,vue一共提供了三种路由守卫。 第一种是全局守卫 beforeEach路由进入之前 afterEach路由进入之后 第二种 组件内守卫 beforeRouteEnter 路由进入之前 beforeRouteUpdate 路由更新之前 beforeRouteLeave 路由离开之前 第三种 路由独享守卫 beforeEnter 路由进入之前 分别是 to from next next 这个参数 在路由版本的时候,是必须的 但是到了路由版本的时候next参数变成可选的了 一般来说vue2搭配 的路由 vue3搭配 的路由 比如说购物车页面只有登陆的才能访问,我们可以用组件级守卫购物车页面,如果已经登陆存有token 的话,就继续访问这个页面,如果没有登陆的话就会跳转到登陆页面。 在项⽬中我们经常使⽤路由守卫实现⻚⾯的鉴权. ⽐如:当⽤户登录之后,我们会把后台返回的token以及⽤户信息保存到vuex 和本地,当⻚⾯进⾏跳转的时候,我们会在路由守卫⾥⾯获取vuex⾥⾯的token,如果token存在的话,我们则使⽤next让他进⼊要 跳转的⻚⾯,如果token不存在的话我们使⽤next⽅法让他回到登录⻚ 以上就是我对vue路由守卫的理解。 ⾸先v-if和v-show都是控制元素的显示与隐藏, 不过v-if控制元素的显 示和隐藏的时候会删除对⽤的dom元素,当每⼀个显示的时候,都会重新创建dom和渲染. ⽽v-show则是通过css的display:none 和display:block来控制元素的显示与隐藏. v-if⽐较耗费性能,所以我们涉及到频繁的显示隐藏操作我们建议使⽤v-show,如果不 是频繁操作的话,我们可以v-if 在项⽬中我会经常使⽤v-if和v-show,⽐如我们在搜索功能的时候,他有⼀个历史记录,这个时候我们根据是否有搜索的结果来判 断历史记录的显示与隐藏,这块我就可以使⽤v-if ,当然⽤v-show也可以. 以上就是我对v-if和v-show的理解。 v-for的优先级⾼. 因为v-for的时候我们才开始渲染dom元素,这个v-if还⽆法进⾏判断. v-for和v-if不能同时使⽤,我们可以通过标签,⽐如div或者template标签来进⾏包裹,把v-if写到包裹的标签上⾯(写到v-for外⾯)。 ⾸先呢,methods是⽤来定义⽅法的区域,methods定义的⽅法需要调⽤才能触发. 不具备缓存⾏ ⽽computed是计算属性,他依赖于属性值的变化,当属性发⽣改变的时候,计算属性⾥⾯定义的⽅法就会触发,computed具有缓 存性,依赖属性值的变化⽽变化. ⽽watch主要是⽤于监听,不具备被缓存性.依赖于数据变化⽽触发. 在项⽬中,⽐如我们获取state的状态的时候我们会把它放到computed⾥⾯,或者在写购物⻋数量计算的时候也会使⽤计算属性. ⽽watch也在项⽬经常使⽤,⽐如我们封装编辑 和 新增弹窗组件的时候会通过watch来进⾏id判断我们要显否要清空表单的数 据. 以上就是我对computed和watch的理解。

197 评论(10)

相关问答