腾讯前端笔试题整理

注明:非原创,原创的作者找不到。。。

1.js中“5”+4=?

答案:“54”

2.js中void(0)=?

答案:undefined

评:这个在a的href 中可以使用javascript:void(0);

如果使用href=”#”,包含了一个位置信息.默认的锚是#top,也就是网页的上端,当连续快速点击此链接时会导致浏览器巨慢甚至崩溃。
javascript中void是一个操作符,该操作符指定要计算一个表达式但是不返回值。 
javascript:;好些,javascript:void(0);据说某些情况下有浏览器兼容bug。(此点bug我也不知道什么时候能出现,知道的童鞋请指教)。

3.js中NaN*4=?

答案:NaN

评:NaN是强制类型转换,表示非数字,任何类型的数(包括null ,undefined,number)与NaN做运算,结果都是NaN

但是: string类型的与NaN做“+” 运算则转换为string ,而做"*"运算,则结果为NaN.

eg :

"test" + NaN = "testNaN"
"test"  * NaN = NaN

4.js中null*4.5=?

答案:0

评:用typeof null 居然是object,不是很明白。。。下次再详解

注 : string + 任何类型 = string类型 

5.js中alert(5*015===5.075)结果?原因?

答 :false啊,这题怪怪的,估计写错了

6.js中13>>2=? -13>>2=?

答: 13 >> 2 = 3 , -13 >> 2 = -4

评: 左移(<<) 和 右移(>>) ,左移乘以2的次幂,右移除以2的次幂(原则都是往小里算)

7.js中13|5=? 13&5=?

答:13 | 5 = 13 ,13 & 5 = 5;

评:&&与||都有短路左移,&& 优先级高于 ||。

 a() && b() :如果执行a()后返回true,则执行b()并返回b的值;如果执行a()后返回false,则整个表达式返回a()的值,b()不执行;
a() || b() :如果执行a()后返回true,则整个表达式返回a()的值,b()不执行;如果执行a()后返回false,则执行b()并返回b()的值;


8.js中怎么获取当前日期的月份

答: new Date().getMonth() + 1;

评: js中Date对象的考察,另外要注意的是getMonth()函数起始值是0,所以要获取当前的月份数需要+1

Date :

Date() 返回当日的日期和时间。
getDate() 从 Date 对象返回一个月中的某一天 (1 ~ 31)。
getDay() 从 Date 对象返回一周中的某一天 (0 ~ 6)。
getMonth() 从 Date 对象返回月份 (0 ~ 11)。
getFullYear() 从 Date 对象以四位数字返回年份。
getYear() 请使用 getFullYear() 方法代替。
getHours() 返回 Date 对象的小时 (0 ~ 23)。
getMinutes() 返回 Date 对象的分钟 (0 ~ 59)。
getSeconds() 返回 Date 对象的秒数 (0 ~ 59)。
getMilliseconds() 返回 Date 对象的毫秒(0 ~ 999)。
getTime() 返回 1970 年 1 月 1 日至今的毫秒数。
parse() 返回1970年1月1日午夜到指定日期(字符串)的毫秒数。
setDate() 设置 Date 对象中月的某一天 (1 ~ 31)。
setMonth() 设置 Date 对象中月份 (0 ~ 11)。
setFullYear() 设置 Date 对象中的年份(四位数字)。
setHours() 设置 Date 对象中的小时 (0 ~ 23)。
setMinutes() 设置 Date 对象中的分钟 (0 ~ 59)。
setSeconds() 设置 Date 对象中的秒钟 (0 ~ 59)。
setMilliseconds() 设置 Date 对象中的毫秒 (0 ~ 999)。
setTime() 以毫秒设置 Date 对象。
toString() 把 Date 对象转换为字符串。
toTimeString() 把 Date 对象的时间部分转换为字符串。
toDateString() 把 Date 对象的日期部分转换为字符串。
toLocaleString() 根据本地时间格式,把 Date 对象转换为字符串。
toLocaleTimeString() 根据本地时间格式,把 Date 对象的时间部分转换为字符串。
toLocaleDateString() 根据本地时n间格式,把 Date 对象的日期部分转换为字符串。
valueOf() 返回 Date 对象的原始值。

9.js中数组排序方法是?该方法实现了?的排序算法

答: sort,利用的是冒泡排序的思想

评: sort是带参数的

eg : var a = [ 2, 10, 5, 34];

a.sort();   //结果是:[10, 2, 34, 5]

a.sort(function(n1,n2) { return n1 -n2 } ); //从小到大排序,结果是[2,5,10,34]

a.sort(function(n1,n2) { return n2 - n1 }) ; //从打到小的排序,结果是[34,10,5,2]

a.reverse();  //reverse是将数组反置

10.js中怎么判断chrome浏览器?

答: 

window.navigator.userAgent.search("Chrome") > 0  ? true : false; 

评:考察navigator对象

属性描述
appCodeName 返回浏览器的代码名。
appMinorVersion 返回浏览器的次级版本。
appName 返回浏览器的名称。
appVersion 返回浏览器的平台和版本信息。
browserLanguage 返回当前浏览器的语言。
cookieEnabled 返回指明浏览器中是否启用 cookie 的布尔值。
cpuClass 返回浏览器系统的 CPU 等级。
onLine 返回指明系统是否处于脱机模式的布尔值。
platform 返回运行浏览器的操作系统平台。
systemLanguage 返回 OS 使用的默认语言。
userAgent 返回由客户机发送服务器的 user-agent 头部的值。
userLanguage 返回 OS 的自然语言设置。

 

11.js中var b=”hello”;a=b; 怎么显示出a的值(貌似这题最简单了)

答: 不明白这题考的是什么

12.根据以下xml请写出对应的json(原题写成一行,这里我改成标准xml的显示了)

答:要求xml,虽然不是很会,但是只要将"="左边的当成key值,"="右边的当成value就好了。

13.js中怎么把十进制数123转化成二进制数?

答:

function toBinary ( val )
{
    var binary = "";
    do 
     {
         binary = val % 2 + binary ;
         val =  parseInt ( val / 2 );
    }
    while ( val > 1)
    binary = val + binary; 
    return parseInt(binary)
}

14.js中怎么才能按下回车键可以提交

答: 

document.onkeydown = function( ev )
{
   var event = ev || event ;
   if ( event.keyCode == 13 )
   {
      //do something
   }
}  

评: 键盘事件相应,当然还有事件对象event的兼容

  编程题

1.js中var s=”tencent is sb”,编写js使其变成tencent1 is2 sb3

答:

function change ( str )
{
    var arr = str.split(" ");
    var resultArr =[];
    for ( var i = 0 ; i < arr.length ; i++)
    {
        resultArr.push( arr[i] + (i+1) + "");
    }
  return  resultArr.join(" ");                                                                                                                                                                                                                       
}

2.编写js的类,使其拥有public和private类型的属性和方法

//首先声明,js中没有类这个概念哈,用的只是构造混合模式下的:构造函数+prototype形式
//构造函数中的属性和方法都是私有的
function Test ( args1, args2,args3)
{
   this.args1 = args1;
   this.args2 = args2;
   this.args3 = args3;
   this.fn = function() {}
}
Test.prototype.args4 = "我是共有的";
Test.prototype.fn = function() { 
   //我是公有的方法
}

//多写两句
关于继承
Test2继承于Test
function Test2(arg1,arg2,arg3 ,arg4)
{
  Test.call(this, arg1,arg2,arg3);
this.arg4 = arg4; //子类的新属性

}
Test.prototype = new Test();

3.给定http://id.qq.com/125125,请说出请求头,相关的报文信息(想想httpwatch工具抓包的内容)

答: 

请求头部: 

Host : id.qq.com

Origin : http:// id.qq.com

Referer : http://id.qq.com/125125

评:

请求头部

请求头部由关键字/值对组成,每行一对,关键字和值用英文冒号“:”分隔。请求头部通知服务器有关于客户端请求的信息,典型的请求头有:

User-Agent:产生请求的浏览器类型。

Accept:客户端可识别的内容类型列表。

Host:请求的主机名,允许多个域名同处一个IP地址,即虚拟主机。

Accept: application/json, text/javascript, */*; q=0.01
Accept-Encoding: gzip, deflate
Accept-Language:zh-CN,zh;q=0.8
Connection:keep-alive
Content-Length:0
Content-Type:application/json
Cookie:__gads=ID=ed1fcec11020e105:T=1441114370:S=ALNI_MYF-l5tzoS-I5CxTgPc0FR27707oA; .CNBlogsCookie=C66DF5F61539E6BD6A022586096B07166B9F2EFEF90D79352762C8DC689B3AC27C253F040B3C6D0F21B85D48F26086A2DB70444AE8C38357FF076724428A34C956B06ECC48F70DAC52F397425A2BDC321A852B00; SyntaxHighlighter=javascript; _gat=1; _ga=GA1.2.317876818.1441114370; SERVERID=9b2e527de1fc6430919cfb3051ec3e6c|1441369787|1441369726
Host: i.cnblogs.com
Origin:http://i.cnblogs.com
Referer:http://i.cnblogs.com/EditPosts.aspx?postid=4781872&update=1
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.155 Safari/537.36
X-Requested-With:XMLHttpRequest

HTTP响应也由三个部分组成,分别是:状态行、消息报头、响应正文。

Cache-Control:private, s-maxage=0
Connection:keep-alive
Content-Length:11
Content-Type:application/json; charset=utf-8
Date:Fri, 04 Sep 2015 12:29:47 GMT
Set-Cookie:SERVERID=9b2e527de1fc6430919cfb3051ec3e6c|1441369787|1441369726;Path=/
X-AspNet-Version:4.0.30319
X-AspNetMvc-Version:5.1
X-Frame-Options:SAMEORIGIN
X-Powered-By:ASP.NET
X-UA-Compatible:IE=10

4.说出一些常用的网络优化工具

答:论坛,QQ群,博客,友情链接平台,微博,邮箱

面试官问的题

1.css的样式在不同类型的浏览器之间的显示差异如何解决

2.在css中用一行css代码实现在不同类型的浏览器(如IE6,IE7,IE8)之间显示出不同的样式

3.页面上有左中右三列,左右两列列宽固定,中间列自适应,要求纸上手写代码

补充一道今天腾讯面试官问我的问题。

1.常见的js框架有哪些?

答:

MVC框架

JavaScript的MVC框架中人气最高的为以下四个。

  1. AngularJS
  2. Backbone.JS
  3. Ember.js
  4. Knockout.js(严格来说并不是MVC框架,而是MVVM(Model -View-ViewModel)框架)

其中AngularJS的人气明显超越其他三者,2014年要学习MVC框架者不妨从AngularJS入手。

DOM操作

在可用于操作html的DOM(Document Object Model)的框架中,人气最高的为以下四个。

  1. jQuery
  2. Prototype JavaScript framework
  3. Zepto
  4. YUI Library

如预想的那样,jQuery的人气明显超越其他三者,其地位没有任何一个框架可以比拟。

移动开发框架

在针对iphone/Android等移动设备进行web网站开发时用来创建应用程序界面的框架中,人气最高的为以下四个:

  1. jQuery Mobile
  2. Sencha Touch 2
  3. Enyo
  4. jQT(原jQTouch)

其中jQuery Mobile的人气明显高于其他三者,2014年仍将维持这种现状。另外,由于越来越多的开发者开始采用自适应网站设计,移动开发框架的整体人气开始下降。

模板引擎

在模板引擎中,人气最高的为以下三个(虽然Jade也颇具人气,但主要被用于Node.js中,故未被统计在内):

  1. Underscore.js
  2. Handlebars.js
  3. mustache.js

其中Underscore.js始终维持着较高人气。

图形图像绘制

目前已出现了各种绘制图形图像用JavaScript框架,其中有的使用WebGL API绘制3D图形图像,有的可被用于绘制各种精美的统计图。其中人气最高的为以下5个。

  1. three.js
  2. D3.js
  3. KineticJS
  4. EaselJS
  5. Processing.js

2.进制之间的转化,利用的是parseInt和toString

function change ( num , origin , target )  //num为一串数字,origin为原先的进制数,target为目标进制数
{
    parseInt( ""+ num , origin ).toString( target );    
}
//好好讲一下这个parseInt哈
作用是:parseInt() 函数可解析一个字符串,并返回一个整数。
parseInt(string, radix)
参数描述
string 必需。要被解析的字符串。
radix

可选。表示要解析的数字的基数。该值介于 2 ~ 36 之间。

如果省略该参数或其值为 0,则数字将以 10 为基础来解析。如果它以 “0x” 或 “0X” 开头,将以 16 为基数。

如果该参数小于 2 或者大于 36,则 parseInt() 将返回 NaN。

 这个radix取 : 取0或者不取的时候,看str啦,一般默认就是10进制,但是如果str以'0x'或者'0X'开头的话,则默认是16进制。
         取1 或者大于等于37的数,则返回NaN(哇。。。好想看一下它内部的解析源码到底是什么样的)
取2~36则对应的就是多少进制
再来说说这个str,如何以" "(空格开头,无论多少个空格他都会过滤掉),还可以以"+"(解析为正数)或者"-"(解析为负数)开头,但是"+"或者"-"都只能只有一个,多余一个解析为NaN.
有意思的是以"0" 开头的数,解析时会将"0"去除掉。
举几个例子:
parseInt("-0.23"); //-0
parseInt("+0.23"); //0
parseInt("-+0.23"); //NaN
parseInt("-023"); //-23
parseInt("12",2); //1 (当检测到数字大于等于基数时,会自动停止啦!)
parseInt("2",2); //NaN
原文地址:https://www.cnblogs.com/shixiaomiao/p/4781872.html