竹笋

首页 » 问答 » 灌水 » 前端面试真题分享
TUhjnbcbe - 2024/10/5 17:37:00

以下是技术面试环节问题整理(技术面试是由大连总公司的技术进行电话面试):面试官:首先面试官介绍了下公司业务方向,主要是给华为做外包,会有加班,能不能接受我:影响不大,能接受面试官:(基础问题)两个div,在不加任何样式修饰的情况下,会如何在页面中排版?我:div是一个典型的块级元素,块级元素的有一个特性就是独占一行,所以在页面的排版应该是上下结构,上面一个div下面一个div面试官:(基础问题)让两个div在一行显示,你能想到几种做法我:让两个div在一行显示有一下几种方式:1-浮动;2-定位;3-改变定位模式(将div的display设置为inline-block);4-使用flex布局面试官:(js基础)js如何实现一个缓动动画,让目标元素移动,到指定时间停止动画我:首先应该对目标元素进行定位,然后启动一个间歇定时器(setIterval),在定时器内部通过操作dom的形式去修改目标元素的left偏移量,定时器开始的时候应该去记录一个时间戳,并且将定时器的id保存下来(因为将来要清除定时器),定时器每执行一次用该获取最新的时间戳,减去起始时间戳,判断是否达到执行的时间点,如果时间到了,应该清除定时器面试官:(性能问题)什么是浏览器的回流和重绘,那些操作会引起浏览器的回流和重绘我:回流是指浏览器对页面上的dom元素进行重新排列或排版;重绘是指浏览器对页面进行重新渲染(不进行重新排版).如果我们修改了一个元素的位置信息或者尺寸信息会引起浏览器的回流(重新排版);如果我们对某一个元素的外观样式做了修改(比如修改了背景色),那么必将引起浏览器的重绘(重新绘制页面);所以回流必将引起重绘,重绘不一定会引起回流面试官:(es6)谈谈对es6中promise异步对象的理解我:promise本身只是提供了一个组织代码的结构,promise并没有设置具体的业务逻辑,promise只是帮我们来改造我们的代码结构,最典型的应用场景就是解决回调地狱.代码层面的表现形式,是一个Promise构造函数,使用的时候需要通过new关键字创建一个promise实例,创建实例的时候需要传递一个匿名函数作为实参,这个匿名函数需要两个形参(resolve,reject),resolve是成功处理函数,reject是失败处理函数(具体什么时候触发resolve什么时候触发reject必须结合具体的业务场景).最后调用的时候,需要调用者通过promise实例对象所提供的一个then()方法来传递成功处理函数和失败处理函数,换言之时有then方法来接收成功处理函数和失败处理函数,然后交给promise异步对象,最后由promise异步对象帮助调用者来执行.```functiongetData(){returnnewPromise(function(resove,reject){//假数据:实际开发中应该从服务端获取数据letdata={errcode:0,msg:ok}setTimeout(function(){resove(data);},);});}getData().then((res)={//实际开发中可根据res做一些其他操作,比如对页面dom元素进行操作console.log(res);});```面试官:(es6)promise中all方法的作用及返回值我:all是Promise构造函数提供一个静态方法,他可以帮我们一次性执行多个promise;他的返回值是一个数组```letp1=newPromise((resolve,reject)={resolve(成功了)})letp2=newPromise((resolve,reject)={resolve(success)})Promise.all([p1,p2]).then((result)={console.log(result)//[成功了,success]}).catch((error)={console.log(error)})```面试官:谈谈你对回调函数的理解我:回调函数的作用是为了让一个函数本身功能更加灵活,表现形式是将一个函数a作为另外一个函数b的参数.面试官:(es6)es6的模块化中,两种导出方式(exportdefault

export)的区别我:exportdefault{}导出的模块在导入的时候,必须使用`import模块名from文件路径`export导出的模块必须通过按需导入的方式进行导入:`import{模块a,模块b}from文件路径`面试官:(vue)谈谈对vue插槽中认识我:首先插槽(slot)这个概念是在vue-2.5的版本中新增的;作用还是解决组件之间的传值问题;slot插槽分为一下几种:匿名插槽:通过匿名插槽可以将父组件传递给组件的值,插入子组件模板部分的某一个标签中具名插槽:通过具名插槽可以将父组件传递给组件的多个值,插入子组件模板部分的对应的多个标签中作用域插槽:通过作用域插槽,可以在子组件渲染父组件传递给他的数据之前,根据某个条件对组件的内容进行一些预处理面试官:关于服务端渲染你了解多少我:首先服务端渲染是解决spa(单页面应用)无法进行seo(搜索引擎推广)的问题.vue官方给出了一整套解决方案,就是使用nuxt框架.react官方目前没有给出解决方案.需要注意的是,nuxt必须在服务器上配置nodejs的环境,因为服务端渲染主要是借助nodejs来实现的.如果使用webpack,可以使用prerender-spa-plugin对部分页面进行预渲染(在打包的时候,对特定路由对应的页面进行预渲染)面试官:后端语言java和php了解吗我:java不了解,php了解面试官:web服务器apache和nginx会配置吗我:可以配置面试心得:总体符合大厂招聘的一些规则,首先是一轮技术面试,面试过程中规中矩,由浅入深,各方面都有涉及,没有问之前项目相关的问题.总体感觉是需要一个全栈工程师的角色,目前对于从业者的要求越来越高,当然给出的薪资也比较高.

1
查看完整版本: 前端面试真题分享