注明:非原创,原创的作者找不到。。。
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框架中人气最高的为以下四个。
其中AngularJS的人气明显超越其他三者,2014年要学习MVC框架者不妨从AngularJS入手。
DOM操作
在可用于操作html的DOM(Document Object Model)的框架中,人气最高的为以下四个。
- jQuery
- Prototype JavaScript framework
- Zepto
- YUI Library
如预想的那样,jQuery的人气明显超越其他三者,其地位没有任何一个框架可以比拟。
移动开发框架
在针对iphone/Android等移动设备进行web网站开发时用来创建应用程序界面的框架中,人气最高的为以下四个:
- jQuery Mobile
- Sencha Touch 2
- Enyo
- jQT(原jQTouch)
其中jQuery Mobile的人气明显高于其他三者,2014年仍将维持这种现状。另外,由于越来越多的开发者开始采用自适应网站设计,移动开发框架的整体人气开始下降。
模板引擎
在模板引擎中,人气最高的为以下三个(虽然Jade也颇具人气,但主要被用于Node.js中,故未被统计在内):
- Underscore.js
- Handlebars.js
- mustache.js
其中Underscore.js始终维持着较高人气。
图形图像绘制
目前已出现了各种绘制图形图像用JavaScript框架,其中有的使用WebGL API绘制3D图形图像,有的可被用于绘制各种精美的统计图。其中人气最高的为以下5个。
- three.js
- D3.js
- KineticJS
- EaselJS
- 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