CVTE前端三面面经
技术面的问题都是很基础很简单的问题,不过有些自己给忘记了,而且没答好
一面
是个比较年轻的面试官,上来先自我介绍了一下,然后就开始问问题了,写了一个css的代码和一段简单的dom操作的代码。
-
实现一个左边带有三角形的对话框形状
- 这个主要就用了:after实现
-
有没有解决过css方面浏览器兼容的问题
- 因为平时css本来学的就不太好,我表示只知道一个清除浮动clearfix类的时候需要采用zoom:1来触发IE的haslayout方法,其他的就不是很了解了
- 让我手写了一个代码, 把div1的span插入到div2里的两个span中间,我就写了差不多下面这样的代码,因为我印象里insertBefore是会把节点从原来的节点知道移到插入的位置,不需要移除原来的节点,但是面试官说我错了= =,说需要removeChild(), 我回来试了一下 确实是不需要移除的
<div class="div1"> 你好 <div> <div class="div2"> hello how are you </div>
var div1 = document.querySelector('.div1'); var nodeNeedRemoved = div1.querySelector('span'); var div2 = document.querySelector('.div2'); var nodebefor = div2.querySelectorAll('span')[1]; div2.insertBefore(nodeNeedRemoved, nodebefor);
-
事件,让我描述一下我知道的事件相关概念
- 事件流:先是捕获阶段,从document到html到body一直到具体元素,对具体元素进行处理,再到冒泡阶段,一直到document
- 兼容的添加事件的方法,主要就是三个addEventListener , attachEvent, on + [event]
- 事件阻止默认事件的方法,e.preventDefault()和e.returnValue = false;
- 事件冒泡: e.stopPropagation()和e.cancelBubble=true;
-
原型相关问题
- 描述了一下原型链
- 一个函数的prototype等于什么,这个我真的没有答上来,自己其实知道,就是讲不出来 = =。回来又查了一下,这个属性是一个指针,指向一个对象(原型对象),而这个对象的用途是包含可以有特定类型的所有实例共享的属性和方法
- 然后问我原型用在什么地方,我回答继承
- 让我写了个原型链继承的方法
- 然后问我用这种方法怎么实现多重继承,我只想到把所有的需要继承超类型的原型对象里的方法,都进行浅复制,放在一个对象里,然后把这个对象赋值给子类型的prototype,但是面试官好像要的不是这个方法
- 好像还有些其他的问题,我不太记得了
二面
二面面的非常不好,有两个原因吧,一个是在大厅等的时候空调真的开的太冷了!进去的时候有点冻傻了,还有就是面试官看着我用电脑敲代码,其实心里又紧张,就一直出小错
-
让我实现一个css样式,body里有两个嵌套的div,两个div均是正方形,第一个div的长度是body的50%,第二个是第一个div的50%,两个div均垂直水平居中,怎么实现
- 这个主要是有两个考点,一个是正方形的实现(padding实现)
- 一个是居中(绝对定位完全受限margin:auto时能够居中)
-
正则表达式匹配
- 一个字符串,当它全是大写字母,全是小写字母,只有首字符大写时返回true,其他时候返回false,我写正则的时候忘了//,,,导致一直通不过- - 面试官就直接问我平时是不是IDE用多了
-
输入一个数组和一个数,找出数组中是否存在两个数字和为输入参数的,有则输出对应的位置
-
还有一道智力题,我也没想到最好的答案,感觉二面还是面的不太好的
hr面
惨不忍睹,本来平时就不太会讲人生理想一些大长串的话,还让我讲印象最深刻的事,我从小的活的比较随性= = 根本想不到,回答的完全没有其他三位好。还是要多练习练习。
#广州视源电子科技股份有限公司##前端工程师#