文档库 最新最全的文档下载
当前位置:文档库 › 各大互联网公司前端笔试面试题

各大互联网公司前端笔试面试题

各大互联网公司前端笔试面试题
各大互联网公司前端笔试面试题

各大互联网公司前端笔试面试题–JavaScript篇

1.JavaScript是一门什么样的语言,它有哪些特点?

没有标准答案。

2.JavaScript的数据类型都有什么?

基本数据类型:String,boolean,Number,Undefined, Null

引用数据类型:Object(Array,Date,RegExp,Function)

那么问题来了,如何判断某变量是否为数组数据类型?

?方法一.判断其是否具有“数组性质”,如slice()方法。可自己给该变量定义slice 方法,故有时会失效

?方法二.objinstanceof Array 在某些IE版本中不正确

?方法三.方法一二皆有漏洞,在ECMA Script5中定义了新方法Array.isArray(), 保证其兼容性,最好的方法如下:

3.已知ID的Input输入框,希望获取这个输入框的输入值,怎么做?(不使用第三方框架)

4.希望获取到页面中所有的checkbox怎么做?(不使用第三方框架)

5.设置一个已知ID的DIV的html内容为xxxx,字体颜色设置为黑色(不使用第三方框架)

6.当一个DOM节点被点击时候,我们希望能够执行一个函数,应该怎么做??直接在DOM里绑定事件:

?在JS里通过onclick绑定:xxx.onclick = test

?通过事件添加进行绑定:addEventListener(xxx, …click?, test)

那么问题来了,Javascript的事件流模型都有什么?

?“事件冒泡”:事件开始由最具体的元素接受,然后逐级向上传播

?“事件捕捉”:事件由最不具体的节点先接收,然后逐级向下,一直到最具体的

?“DOM事件流”:三个阶段:事件捕捉,目标阶段,事件冒泡

7.什么是Ajax和JSON,它们的优缺点。

Ajax是异步JavaScript和XML,用于在Web页面中实现异步数据交互。

优点:

?可以使得页面不重载全部内容的情况下加载局部内容,降低数据传输量?避免用户不断刷新或者跳转页面,提高用户体验

缺点:

?对搜索引擎不友好(

?要实现ajax下的前后退功能成本较大

?可能造成请求数的增加

?跨域问题限制

JSON是一种轻量级的数据交换格式,ECMA的一个子集

优点:轻量级、易于人的阅读和编写,便于机器(JavaScript)解析,支持复合数据类型(数组、对象、字符串、数字)

8.看下列代码输出为何?解释原因。

解释:Undefined是一个只有一个值的数据类型,这个值就是“undefined”,在使用var声明变量但并未对其赋值进行初始化时,这个变量的值就是undefined。而b由于未声明将报错。注意未申明的变量和声明了未赋值的是不一样的。

9.看下列代码,输出什么?解释原因。

解释:null是一个只有一个值的数据类型,这个值就是null。表示一个空指针对象,所以用typeof检测会返回”object”。

10.看下列代码,输出什么?解释原因。

?undefined与null相等,但不恒等(===)

?一个是number一个是string时,会尝试将string转换为number

?尝试将boolean转换为number,0或1

?尝试将Object转换成number或string,取决于另外一个对比量的类型

?所以,对于0、空字符串的判断,建议使用“===”。“===”会先判断两边的值类型,类型不匹配时为false。

那么问题来了,看下面的代码,输出什么,foo的类型为什么?

执行完后foo的值为111,foo的类型为Number。

执行完后foo的值为113,foo的类型为String。

11.看代码给答案。

答案:2(考察引用数据类型细节)

12.已知数组var stringArray = [“This”,“is”,“Baidu”,“Campus”],Alert 出”This is Baidu Campus”。

答案:alert(stringArray.join(“”))

已知有字符串foo=”get-element-by-id”,写一个function将其转化成驼峰表示法”getElementById”。

(考察基础API)

13.var numberArray = [3,6,2,4,1,5]; (考察基础API)

1) 实现对该数组的倒排,输出[5,1,4,2,6,3]

2) 实现对该数组的降序排列,输出[6,5,4,3,2,1]

14.输出今天的日期,以YYYY-MM-DD的方式,比如今天是2014年9月26日,则输出2014-09-26

15.将字符串”{$id}{$name}”中的{$id}替换成10,{$name}替换成Tony (使用正则表达式)

案:”{$id}{$id}_{$name}”.replace(/{\$id}/g, ?10′).rep lace(/{\$name}/g, …Tony?);

16.为了保证页面输出安全,我们经常需要对一些特殊的字符进行转义,请写一个函数escapeHtml,将<, >, &, “进行转义

17.foo = foo||bar ,这行代码是什么意思?为什么要这样写?

答案:if(!foo) foo = bar; //如果foo存在,值不变,否则把bar的值赋给foo。

短路表达式:作为”&&”和”||”操作符的操作数表达式,这些表达式在进行求值时,只要最终的结果已经可以确定是真或假,求值过程便告终止,这称之为短路求值。

18.看下列代码,将会输出什么?(变量声明提升)

答案:输出undefined 和2。上面代码相当于:

函数声明与变量声明会被JavaScript引擎隐式地提升到当前作用域的顶部,但是只提升名称不会提升赋值部分。

19.用js实现随机选取10–100之间的10个数字,存入一个数组,并排序。

20.把两个数组合并,并删除第二个元素。

21.怎样添加、移除、移动、复制、创建和查找节点(原生JS,实在基础,没细写每一步)

1)创建新节点

createDocumentFragment() //创建一个DOM片段

createElement() //创建一个具体的元素

createTextNode() //创建一个文本节点

2)添加、移除、替换、插入

appendChild() //添加

removeChild() //移除

replaceChild() //替换

insertBefore() //插入

3)查找

getElementsByTagName() //通过标签名称

getElementsByName() //通过元素的Name属性的值

getElementById() //通过元素Id,唯一性

22.有这样一个URL:https://www.wendangku.net/doc/a511700549.html,/item.htm?a=1&b=2&c=&d=xxx&e,请写一段JS程序提取URL中的各个GET参数(参数名和参数个数不确定),将其按key-value形式返回到一个json结构中,如{a:?1′,b:?2′,c:”,d:?xxx?, e:undefined}。答案:

23.正则表达式构造函数varreg=new RegExp(“xxx”)与正则表达字面量varreg=//有什么不同?匹配邮箱的正则表达式?

答案:当使用RegExp()构造函数的时候,不仅需要转义引号(即\”表示”),并且还需要双反斜杠(即\\表示一个\)。使用正则表达字面量的效率更高。

邮箱的正则匹配:

24.看下面代码,给出输出结果。

答案:4 4 4。

原因:Javascript事件处理器在线程空闲之前不会运行。那么问题来了,如何让上述代码输出1 2 3?

25.写一个function,清除字符串前后的空格。(兼容所有浏览器)

使用自带接口trim(),考虑兼容性:

26.Javascript中callee和caller的作用?

答案:

caller是返回一个对函数的引用,该函数调用了当前函数;

callee是返回正在被执行的function函数,也就是所指定的function对象的正文。那么问题来了?如果一对兔子每月生一对兔子;一对新生兔,从第二个月起就开始生兔子;假定每对兔子都是一雌一雄,试问一对兔子,第n个月能繁殖成多少对兔子?(使用callee完成)

中级Javascript:

1.实现一个函数clone,可以对JavaScript中的5种主要的数据类型(包括Number、String、Object、Array、Boolean)进行值复制

考察点1:对于基本数据类型和引用数据类型在内存中存放的是值还是指针这一区别是否清楚

?考察点2:是否知道如何判断一个变量是什么类型的?考察点3:递归算法的设计

2.如何消除一个数组里面重复的元素?

3.小贤是一条可爱的小狗(Dog),它的叫声很好听(wow),每次看到主人的时候就会乖乖叫一声(yelp)。从这段描述可以得到以下对象:

小芒和小贤一样,原来也是一条可爱的小狗,可是突然有一天疯了(MadDog),一看到人就会每隔半秒叫一声(wow)地不停叫唤(yelp)。请根据描述,按示例的形式用代码来实。(继承,原型,setInterval)

答案:

4.下面这个ul,如何点击每一列的时候alert其index?(闭包)

答案:

5.编写一个JavaScript函数,输入指定类型的选择器(仅需支持id,class,tagName 三种简单CSS选择器,无需兼容组合选择器)可以返回匹配的DOM节点,需考虑浏览器兼容性和性能。

/*** @param selector {String} 传入的CSS选择器。* @return {Array}*/

答案:(过长,点击打开)

6.请评价以下代码并给出改进意见。

各大知名公司校园招聘经典常见面试题集锦

各大知名公司校园招聘经典常见面试题集锦 一.自我认识类 1.你的缺点是什么?如果我们淘汰你,你认为原因是什么? (华为公司2011校招面试题,分享人:彭红) 2.你最骄傲的经历是什么?描述一个你与人合作共同完成目标的经历。 (2011宝洁校招面试题,分享人:彭红) 3.请详细描述一下你理想中的未来工作环境及每日工作内容。举例说明一件在 校期间你认为最有成就感和最失败的事。 (三星集团2010校招面试题,分享人:李玉娇) 4.你能不能喝酒? (中国银行总行2009招聘面试题,分享人:何轶男) 5.依靠你的专业素养能给团队带来哪些帮助?用三个词形容你的大学生活。(中 国建设银行苏州分行2010校招面试题,分享人:张栩萌) 6.你的梦想是什么,为此做了哪些努力?(优衣库2010校招面试题,分享人: 张栩萌) 7.你生活中有没有遇到过挫折?是如何面对的? (腾讯2009校招面试题,分享人:刘妍) 8.你心目中的另一半是什么样子? (东莞银行2012面试题,分享人:刁媛、万宝军) 9.请用一句话总结自己二十年的人生感悟。 (飞亚达2012面试题,分享人:吴念菲)

10.你遇到的最大挫折和获得的最大成就是什么? (上海交通大学2012研究生复试题,分享人:游昕琦、李如诗) 11.你最大的缺点是什么? (汇丰银行2012管培生面试,分享人:李立彬、杨玮希) 12.你平时有什么爱好?你一开始是选择银行作为实习单位,后来为什么要来中 国移动呢? (深圳移动2012面试题,分享人:陈奥、江程) 13.举例说明你怎样获得一种技能,并将其转化为实践。 (宝洁2012面试题,分享人:陈思蕾、杨媛颖) 14.你对未来的职业规划是怎么样的? (毕马威2012面试题,分享人:唐寅、雷静晗) 15.说说你所知道的RBS。讲一个你所遇到的困难,如何克服?说说你最大的缺 点。 (苏格兰皇家银行2012全球实习生面试,分享人:杨玮希) 16.你平时爱看什么书报杂志?你除了专业课,最喜欢的课是什么? (淡马锡投资2012中国管培生面试题,分享人:杨玮希) 17.你希望与什么样的上级共事? (中国农业银行宜昌分行2012面试题,分享人:向思凤、赵长龙) 18.你认为将来会是什么原因让你离职? (建行四川省分行2012面试题,分享人:李冀明、李阳) 19.请简要谈谈你的兴趣爱好。 (建行江苏分行2012面试题,分享人:王秋蕾、张静秋)

数字IC设计笔试面试经典100题

1:什么是同步逻辑和异步逻辑?(汉王) 同步逻辑是时钟之间有固定的因果关系。异步逻辑是各时钟之间没有固定的因果关系。 同步时序逻辑电路的特点:各触发器的时钟端全部连接在一起,并接在系统时钟端,只有当时钟脉冲到来时,电路的状态才能改变。改变后的状态将一直保持到下一个时钟脉冲的到来,此时无论外部输入x 有无变化,状态表中的每个状态都是稳定的。 异步时序逻辑电路的特点:电路中除可以使用带时钟的触发器外,还可以使用不带时钟的触发器和延迟元件作为存储元件,电路中没有统一的时钟,电路状态的改变由外部输入的变化直接引起。 2:同步电路和异步电路的区别: 同步电路:存储电路中所有触发器的时钟输入端都接同一个时钟脉冲源,因而所有触发器的状态的变化都与所加的时钟脉冲信号同步。 异步电路:电路没有统一的时钟,有些触发器的时钟输入端与时钟脉冲源相连,只有这些触发器的状态变化与时钟脉冲同步,而其他的触发器的状态变化不与时钟脉冲同步。 3:时序设计的实质: 时序设计的实质就是满足每一个触发器的建立/保持时间的要求。 4:建立时间与保持时间的概念? 建立时间:触发器在时钟上升沿到来之前,其数据输入端的数据必须保持不变的最小时间。保持时间:触发器在时钟上升沿到来之后,其数据输入端的数据必须保持不变的最小时间。 5:为什么触发器要满足建立时间和保持时间? 因为触发器内部数据的形成是需要一定的时间的,如果不满足建立和保持时间,触发器将进入亚稳态,进入亚稳态后触发器的输出将不稳定,在0和1之间变化,这时需要经过一个恢复时间,其输出才能稳定,但稳定后的值并不一定是你的输入值。这就是为什么要用两级触发器来同步异步输入信号。这样做可以防止由于异步输入信号对于本级时钟可能不满足建立保持时间而使本级触发器产生的亚稳态传播到后面逻辑中,导致亚稳态的传播。 (比较容易理解的方式)换个方式理解:需要建立时间是因为触发器的D端像一个锁存器在接受数据,为了稳定的设置前级门的状态需要一段稳定时间;需要保持时间是因为在时钟沿到来之后,触发器要通过反馈来锁存状态,从后级门传到前级门需要时间。 6:什么是亚稳态?为什么两级触发器可以防止亚稳态传播? 这也是一个异步电路同步化的问题。亚稳态是指触发器无法在某个规定的时间段内到达一个可以确认的状态。使用两级触发器来使异步电路同步化的电路其实叫做“一位同步器”,他只能用来对一位异步信号进行同步。两级触发器可防止亚稳态传播的原理:假设第一级触发器的输入不满足其建立保持时间,它在第一个脉冲沿到来后输出的数据就为亚稳态,那么在下一个脉冲沿到来之前,其输出的亚稳态数据在一段恢复时间后必须稳定下来,而且稳定的数据必须满足第二级触发器的建立时间,如果都满足了,在下一个脉冲沿到来时,第二级触发器将不会出现亚稳态,因为其输入端的数据满足其建立保持时间。同步器有效的条件:第一级触发器进入亚稳态后的恢复时间+ 第二级触发器的建立时间< = 时钟周期。

Web前端开发笔试题集锦(已读)

Web前端开发笔试题集锦 HTML/CSS篇 1, 判断字符串是否是这样组成的,第一个必须是字母,后面可以是字母、数字、下划线,总长度为5-20 var reg = /^[a-zA-Z][a-zA-Z_0-9]{4,19}$/; reg.test("a1a__a1a__a1a__a1a__"); 2,截取字符串abcdefg的efg var str = "abcdefg"; if (/efg/.test(str)) { var efg = str.substr(str.indexOf("efg"), 3); alert(efg); } 3,判断一个字符串中出现次数最多的字符,统计这个次数 //将字符串的字符保存在一个hash table中,key是字符,value是这个字符出现的次数 var str = "abcdefgaddda"; var obj = {}; for (var i = 0, l = str.length; i < l; i++) { var key = str[i]; if (!obj[key]) { obj[key] = 1; } else { obj[key]++; } } /*遍历这个hash table,获取value最大的key和value*/ var max = -1; var max_key = ""; var key; for (key in obj) { if (max < obj[key]) { max = obj[key]; max_key = key; } } alert("max:"+max+" max_key:"+max_key); 4,IE与FF脚本兼容性问题 (1) window.event: 表示当前的事件对象,IE有这个对象,FF没有,FF通过给事件处理函数传递事件对象 (2) 获取事件源

前端面试题大全(html篇)

HTML是一种基本的WEB网页设计语言,XHTML是一个基于XML的置标语言。最主要的不同: (1)XHTML元素必须被正确地嵌套 (2)XHTML元素必须被关闭 (3)XHTML标签名必须用小写字母 (4)XHTML文档必须拥有根元素 2.什么是语义化的HTML html5的语义化是指用正确的标签包含正确的容,比如nav标签就应该包含导航条容 (1)直观的认识标签对于搜索引擎的抓取有好处,用正确的标签做正确的事情! (2)html语义化就是让页面的容结构化,便于对浏览器、搜索引擎解析 (3)在没有CCS样式情况下也以一种文档格式显示,并且是容易阅读的。搜索引擎的爬虫依赖于标记来确定上下和各个关键字的权重,利于SEO。 (4)使阅读源代码的人更容易将分块,便于阅读维护理解。 写一段语义的html代码(HTML5中新增加的很多标签如: