位置: 编程技术 - 正文

BAT及各大互联网公司2014前端笔试面试题--JavaScript篇(互联网巨头bat有哪些)

编辑:rootadmin

推荐整理分享BAT及各大互联网公司2014前端笔试面试题--JavaScript篇(互联网巨头bat有哪些),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:互联网bat新巨头,互联网 bat tmd,bat 互联网,bat互联网企业,互联网行业bat,bat互联网企业,bat互联网巨头,bat互联网巨头,内容如对您有帮助,希望把文章链接给更多的朋友!

而更多的题目是我一路以来收集的,也有往年的,答案不确保一定正确,如有错误或有更好的解法,还请斧正。

附上第二篇:BAT及各大互联网公司前端笔试面试题--Html,Css篇

前面几题是会很基础,越下越有深度。  

初级Javascript:

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

  没有标准答案。  

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

  基本数据类型:String,boolean,Number,Undefined, Null  引用数据类型:Object(Array,Date,RegExp,Function)

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

&#;方法一.判断其是否具有"数组性质”,如slice()方法。可自己给该变量定义slice方法,故有时会失效&#;方法二.obj instanceof Array 在某些IE版本中不正确&#;方法三.方法一二皆有漏洞,在ECMA Script5中定义了新方法Array.isArray(), 保证其兼容性,最好的方法如下

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

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

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

6.当一个DOM节点被点击时候,我们希望能够执行一个函数,应该怎么做?

&#; 直接在DOM里绑定事件:<div onclick=”test()”></div>&#; 在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”。

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

&#;undefined与null相等,但不恒等(===)&#;一个是number一个是string时,会尝试将string转换为number&#;尝试将boolean转换为number,0或1&#;尝试将Object转换成number或string,取决于另外一个对比量的类型&#;所以,对于0、空字符串的判断,建议使用 "===” 。"===”会先判断两边的值类型,类型不匹配时为false。

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

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

.看代码给答案。

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

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

答案:alert(stringArray.join(" "))

那么问题来了,已知有字符串foo="get-element-by-id",写一个function将其转化成驼峰表示法"getElementById"。

(考察基础API)

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

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

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

.将字符串”<tr><td>{$id}</td><td>{$name}</td></tr>”中的{$id}替换成,{$name}替换成Tony (使用正则表达式)

答案:"<tr><td>{$id}</td><td>{$id}_{$name}</td></tr>".replace(/{$id}/g, '').replace(/{$name}/g, ‘Tony');    

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

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

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

短路表达式:作为"&&"和"||"操作符的操作数表达式,这些表达式在进行求值时,只要最终的结果已经可以确定是真或假,求值过程便告终止,这称之为短路求值。.看下列代码,将会输出什么&#;(变量声明提升)

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

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

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

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

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

  1)创建新节点

createDocumentFragment() //创建一个DOM片段createElement() //创建一个具体的元素createTextNode() //创建一个文本节点

  2)添加、移除、替换、插入appendChild() //添加removeChild() //移除replaceChild() //替换insertBefore() //插入

  3)查找getElementsByTagName() //通过标签名称getElementsByName() //通过元素的Name属性的值getElementById() //通过元素Id,唯一性

.有这样一个URL: b:'2', c:'', d:'xxx', e:undefined}。

答案:

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

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

  邮箱的正则匹配:

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

答案:4 4 4。

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

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

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

BAT及各大互联网公司2014前端笔试面试题--JavaScript篇(互联网巨头bat有哪些)

.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.请评价以下代码并给出改进意见。

评价:

&#;不应该在if和else语句中声明addListener函数,应该先声明;&#;不需要使用window.addEventListener或document.all来进行检测浏览器,应该使用能力检测;&#;由于attachEvent在IE中有this指向问题,所以调用它时需要处理一下

  改进如下:

7.给String对象添加一个方法,传入一个string类型的参数,然后将string的每个字符间价格空格返回,例如:

  addSpace("hello world") // -> 'h e l l o w o r l d'

接着上述答题,那么问题来了

  1)直接在对象的原型上添加方法是否安全?尤其是在Object对象上。(这个我没能答出?希望知道的说一下。) 

  2)函数声明与函数表达式的区别? 

  答案:在Javscript中,解析器在向执行环境中加载数据时,对函数声明和函数表达式并非是一视同仁的,解析器会率先读取函数声明,并使其在执行任何代码之前可用(可以访问),至于函数表达式,则必须等到解析器执行到它所在的代码行,才会真正被解析执行。(函数声明提升)

  8.定义一个log方法,让它可以代理console.log的方法。

  可行的方法一:

如果要传入多个参数呢?显然上面的方法不能满足要求,所以更好的方法是:

那么问题来了,apply和call方法的异同?

答案:

  对于apply和call两者在作用上是相同的,即是调用一个对象的一个方法,以另一个对象替换当前对象。将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。  但两者在参数上有区别的。对于第一个参数意义都一样,但对第二个参数: apply传入的是一个参数数组,也就是将多个参数组合成为一个数组传入,而call则作为call的参数传入(从第二个参数开始)。 如 func.call(func1,var1,var2,var3)对应的apply写法为:func.apply(func1,[var1,var2,var3]) 。

  9.在Javascript中什么是伪数组?如何将伪数组转化为标准数组?

  答案:

  伪数组(类数组):无法直接调用数组方法或期望length属性有什么特殊的行为,但仍可以对真正数组遍历方法来遍历它们。典型的是函数的argument参数,还有像调用getElementsByTagName,document.childNodes之类的,它们都返回NodeList对象都属于伪数组。可以使用Array.prototype.slice.call(fakeArray)将数组转化为真正的Array对象。  假设接第八题题干,我们要给每个log方法添加一个"(app)"前缀,比如'hello world!' ->'(app)hello world!'。方法如下:

.对作用域上下文和this的理解,看下列代码:

问两处console输出什么?为什么?

  答案是1和undefined。

  func是在winodw的上下文中被执行的,所以会访问不到count属性。

  那么问题来了,如何确保Uesr总是能访问到func的上下文,即正确返回1。

  答案:正确的方法是使用Function.prototype.bind。兼容各个浏览器完整代码如下:

.原生JS的window.onload与Jquery的$(document).ready(function(){})有什么不同?如何用原生JS实现Jq的ready方法?

  window.onload()方法是必须等到页面内包括图片的所有元素加载完毕后才能执行。

  $(document).ready()是DOM结构绘制完毕后就执行,不必等到加载完毕。

如果上述代码十分难懂,下面这个简化版:

.(设计题)想实现一个对页面某个节点的拖曳?如何做?(使用原生JS)

  回答出概念即可,下面是几个要点

1.给需要拖拽的节点绑定mousedown, mousemove, mouseup事件2.mousedown事件触发后,开始拖拽3.mousemove时,需要通过event.clientX和clientY获取拖拽位置,并实时更新位置4.mouseup时,拖拽结束5.需要注意浏览器边界的情况

.

.说出以下函数的作用是?空白区域应该填写什么?

答案:访函数的作用是使用format函数将函数的参数替换掉{0}这样的内容,返回一个格式化后的结果:

第一个空是:arguments第二个空是:/{(d+)}/ig

.用面向对象的Javascript来介绍一下自己。(没答案哦亲,自己试试吧)

答案: 对象或者Json都是不错的选择哦。

.讲解原生Js实现ajax的原理。

Ajax 的全称是Asynchronous JavaScript and XML,其中,Asynchronous 是异步的意思,它有别于传统web开发中采用的同步的方式。

Ajax的原理简单来说通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用javascript来操作DOM而更新页面。

XMLHttpRequest是ajax的核心机制,它是在IE5中首先引入的,是一种支持异步请求的技术。简单的说,也就是javascript可以及时向服务器提出请求和处理响应,而不阻塞用户。达到无刷新的效果。

XMLHttpRequest这个对象的属性有:

&#; onreadystatechang 每次状态改变所触发事件的事件处理程序。&#; responseText 从服务器进程返回数据的字符串形式。&#; responseXML 从服务器进程返回的DOM兼容的文档数据对象。&#; status 从服务器返回的数字代码,比如常见的(未找到)和(已就绪)&#; status Text 伴随状态码的字符串信息&#; readyState 对象状态值&#; 0 (未初始化) 对象已建立,但是尚未初始化(尚未调用open方法)&#; 1 (初始化) 对象已建立,尚未调用send方法

&#; 2 (发送数据) send方法已调用,但是当前的状态及http头未知

&#; 3 (数据传送中) 已接收部分数据,因为响应及http头不全,这时通过responseBody和responseText获取部分数据会出现错误,

&#; 4 (完成) 数据接收完毕,此时可以通过通过responseXml和responseText获取完整的回应数据

下面简单封装一个函数:(略长,点击打开)

上述代码大致表述了ajax的过程,释义自行google,问题未完,那么知道什么是Jsonp和pjax吗?

  答案:

  Jsonp:(JSON with Padding)是一种跨域请求方式。主要原理是利用了script 标签可以跨域请求的特点,由其 src 属性发送请求到服务器,服务器返回 js 代码,网页端接受响应,然后就直接执行了,这和通过 script 标签引用外部文件的原理是一样的。JSONP由两部分组成:回调函数和数据,回调函数一般是由网页端控制,作为参数发往服务器端,服务器端把该函数和数据拼成字符串返回。

  pjax:pjax是一种基于ajax+history.pushState的新技术,该技术可以无刷新改变页面的内容,并且可以改变页面的URL。(关键点:可以实现ajax无法实现的后退功能)pjax是ajax+pushState的封装,同时支持本地存储、动画等多种功能。目前支持jquery、qwrap、kissy等多种版本。

觉得题目还ok的亲点个推荐哦,题量会不断增加。

  你可能会感兴趣:BAT及各大互联网公司前端笔试面试题--Html,Css篇

  暂且贴出我做出答案的部分。有时间把未做出答案也贴出来。针对文中各题,如有更好的解决方法或者错误之处,各位亲务必告知我,误人子弟实乃罪过。

原文:

js格式化时间小结 废话不多说,先把各种格式化方法贴给大家varmyDate=newDate();myDate.getYear();//获取当前年份(2位)myDate.getFullYear();//获取完整的年份(4位,-)myDate.getMonth();//获

网页中表单按回车就自动提交的问题的解决方案 1、当form表单中只有一个inputtype="text"name="name"/时按回车键将会自动将表单提交。formid="form1"action="post.php"method="post"inputtype="text"name="name"//form再添加一个inp

JavaScript代码复用模式详解 代码复用及其原则代码复用,顾名思义就是对曾经编写过的代码的一部分甚至全部重新加以利用,从而构建新的程序。在谈及代码复用的时候,我们首

标签: 互联网巨头bat有哪些

本文链接地址:https://www.jiuchutong.com/biancheng/384778.html 转载请保留说明!

上一篇:WEB前端设计师常用工具集锦(web前端网页设计师)

下一篇:js格式化时间小结(js当前时间格式化)

  • 实收资本的账务处理是怎样的
  • 在计算应纳税所得额时下列
  • 关税计算怎么算?
  • 进销存工作流程
  • 调研费包括哪些科目
  • 广告公司会议记录内容
  • 年前采购
  • 企业所得税季报可以更正吗
  • 出口发票税率是怎么算的
  • 土地使用权出资入股税费
  • 往来核算在会计哪个科目
  • 存货和应付账款
  • 行政事业单位取暖费交个人所得税吗
  • 打印机需要计提折旧吗
  • 发票入账后查出金额错误
  • 进项税额转出年末要结转吗
  • 公司注册资本会留存多少
  • 税务小规模定律是什么意思
  • 存货扣税比是什么意思?
  • 许可费怎么进行分类
  • 房产税原值包括印花税吗
  • 小配件出口怎么报关
  • 债权投资属于其他非流动金融资产嘛
  • 不锈钢材料开票
  • 客户分批付款怎么说
  • 对子公司投资款要交税吗
  • 减免税款未抵扣增值税
  • 小规模纳税人一个月能开多少税票
  • win 7怎么办
  • 企业给学校捐款的申请怎么写
  • 投标保证金利息怎么做账
  • 工会经费使用具体办法
  • 完工转出产成品成本计算
  • 如何打开mac系统
  • win7系统电脑开机密码忘记了怎么办
  • 简易征收税务处理
  • 其他应收款贷方表示什么
  • pos机刷卡怎么做账务处理
  • 分配结转本月发出材料成本会计分录
  • 债务担保是什么意思
  • laravel框架中文手册
  • vue中的组件有几类
  • thinkphp 多数据库
  • php获取表单数据保存到mysql中
  • php中函数定义没有返回值类型
  • php获取长度
  • 孕妇钙片什么时候吃最好吸收? 已解决
  • 使用灭火器人要站在上风口还是下风口
  • vue3版本网页小游戏
  • 【GitHub Copilot X】基于GPT-4的全新智能编程助手
  • 增值税发票可以重开吗
  • mongodb基本操作
  • 织梦建站详细教程
  • 机动车组织机构代码证更改
  • 原材料用于加工什么
  • 其它收益和递延收益的区别
  • 财务报表未备案可以不填吗
  • 收到个人退回的社保费,怎样做分录
  • 通过sql存储过程发送邮件的方法
  • 轻轻松松在树枝上摘果子用什么成语
  • mac硬盘挂载软件
  • linux的ip查看
  • win7开机后网络一直转圈怎么回事
  • xp系统怎么装系统教程
  • ubuntu搭建go环境
  • win7音频服务未响应
  • linux操作系统内核
  • 怎么处理人际关系
  • win7怎么录屏为什么不是视频
  • glsl编译
  • 插入排序_Python与PHP的实现版(推荐)
  • linux无法使用yum命令
  • 如何用python连接数据库
  • jquery分页插件的使用
  • 脚本 python
  • 座机怎么查来电显示号码
  • 小规模现代服务的税率是多少啊怎么算
  • 卷烟批发环节的消费税一箱150元
  • 国家税务总局山东省电子税务局
  • 大连市国家税务局官网登录
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设