腾讯前端笔试题整理

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

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

 

posted on 2015-09-04 20:45 施小喵 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/shixiaomiao/p/4781872.html

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值