一、单选题
1、以下哪条语句会产生运行错误:(a )
A.var obj = ();//语法错误
B.var obj = [];//创建数组
C.var obj = {};//创建对象
D.var obj = //;
原因:var obj = new Array ();是对的;JavaScript 中大括号表示创建对象。var obj = { id:1, name:"jacky" };alert(https://www.doczj.com/doc/d24088510.html,);上例表示创建一个具有属性 id (值为 1)、属性 name (值为 jacky )的对象。属性名称可以用引号引起来成 "id"、"name",也可以不引。
当然除了属性,也可以创建方法。
试验代码
/* window.onload=function()
{ // var obj = ();
var obj1 = [];//object
var obj2 = {};//object
var obj3 = //;//undefine
alert(typeof(obj1));
alert(typeof(obj2));
alert(typeof(obj3));
}*/
function showName()
{ alert(https://www.doczj.com/doc/d24088510.html,); }
var obj = { id:1, name:"jacky", showName:showName };
obj.showName();
2、以下哪个单词不属于javascript 保留字:(b )
A.with
B.parent
C.class
D.void
以下的保留字不可以用作变量,函数名,对象名等,其中有的保留字是为以后JAV ASCRIPT 扩展用的.
abstract boolean break byte case catch char class const continue default do double else
extends false final finally float for function goto if implements import in instanceof int interface long native new null package private protected public return short static super switch synchronized this throw throws transient true try var void while with
3、请选择结果为真的表达式:(c)
A.null instanceof Object(if(!(null instanceof Object))是真的)
B.null === undefined
C.null == undefined
D.NaN == NaN
(1) null确实可以理解为原始类型,不能当Object理解!
null,int,float.....等这些用关键字表示的类型,都不属于Object.
至于可以把null作为参数,只是特殊规定而已.
可以这么理解: 对象的引用代表的是一个内存的值,null是一个空引用,可以理解为内存的值为0;按这个意思对代码
(2) function f1(){ }
1. alert(f1 instanceof Function);//true
2. alert(f1 instanceof Object);//true
3. alert(Function instanceof Object);//true
4. alert(Object instanceof Function);//true
Function 是Object的实例,Object又是Function的实例
Function是函数的构造函数,而Object也是函数,Function自身也是函数Object.prototype是一切原型链的顶点,instanceof会查找整个原型链
alert(Function);
alert(Function.prototype);
alert(Function.__proto__);
alert(Object);
alert(Object.prototype);
alert(Object.__proto__);
alert((function(){}).prototype);
alert((function(){}).__proto__);
alert((function(){}).__proto__.prototype);
alert((function(){}).prototype.__proto__);
alert(Array.__proto__);
alert((123).__proto__);
alert((Number).__proto__);
alert(("test").__proto__);
alert((String).__proto__);
alert((true).__proto__);
alert((Boolean).__proto__);
/* window.onload=function()
{
if(NaN == NaN)
{
alert("ddd");
}
}
*/
二、不定项选择题
4、请选择对javascript理解有误的:(abcd)
A.JScript是javascript的简称
B.javascript是网景公司开发的一种Java脚本语言,其目的是为了简化Java 的开发难度
C.FireFox和IE存在大量兼容性问题的主要原因在于他们对javascript的支持不同上
D.AJAX技术一定要使用javascript技术
5、foo对象有att属性,那么获取att属性的值,以下哪些做法是可以的:(ACE)
A.foo.att
B.foo(“att”)
C.foo[“att”]
D.foo{“att”}
E.foo[“a”+”t”+”t”]
6、在不指定特殊属性的情况下,哪几种HTML标签可以手动输入文本:(a ce)
A.
B.
C.
D.
7、以下哪些是javascript的全局函数:(abc)
A.escape
B.parseFloat
C.eval
D.setTimeout
E.alert
8、关于IFrame表述正确的有:(abcd)
A.通过IFrame,网页可以嵌入其他网页内容,并可以动态更改
B.在相同域名下,内嵌的IFrame可以获取外层网页的对象
C.在相同域名下,外层网页脚本可以获取IFrame网页内的对象
D.可以通过脚本调整IFrame的大小
9、关于表格表述正确的有:(abcde)
A.表格中可以包含TBODY元素
B.表格中可以包含CAPTION元素
C.表格中可以包含多个TBODY元素
D.表格中可以包含COLGROUP元素
E.表格中可以包含COL元素
10、关于IE的window对象表述正确的有:(acd)
A.window.opener属性本身就是指向window对象
B.window.reload()方法可以用来刷新当前页面
C.window.location=”a.html”和window.location.href=”a.html”的作用都是把当前页面替换成a.html页面
D.定义了全局变量g;可以用window.g的方式来存取该变量
三、问答题:
1、谈谈javascript数组排序方法sort()的使用,重点介绍sort()参数的使用及其内部机制
sort的实现的功能类似JAVA的比较器,数据排序从多维数组的第一维开始排序可以自己定义排序方法,很不多的函数
2、简述DIV元素和SPAN元素的区别。
DIV有回车,SPAN没有
3、结合text这段结构,谈谈innerHTML outerHTML innerText之间的区别。innerHTML对象里面的HTML,outerHTML包括对象和里面的
innerText对象里面的文本
4、说几条XHTML规范的内容(至少3条)
属性加引号,不能有不匹配的标签,加定义
5、对Web标准化(或网站重构)知道哪些相关的知识,简述几条你知道的Web 标准?
网页主要由三部分组成:结构(Structure)、表现(Presentation)和行为(Behavior)。对应的网站标准也分三方面:结构化标准语言,主要包括XHTML 和XML;表现标准语言主要包括CSS;行为标准主要包括对象模型(如W3C DOM)、ECMAScript等。
四、程序题:
1、完成foo()函数的内容,要求能够弹出对话框提示当前选中的是第几个单选框。
function foo()
{
// 在此处添加代码
var rg = document.getElementsByName("radioGroup");
for( var i = 0; i < rg.length; i++ )
{
if( rg[i].checked )
{
alert("你选择了第" + (i+1) + "个单选框");
}
}
return false;
}
2、填充注释部分的函数体,使得foo()函数调用弹出”成功”的对话框。代码应尽量简短。
function foo()
{
var str = reverse('a,b,c,d,e,f,g');
alert(str);
if (str == 'g,f,e,d,c,b,a')
alert('成功');
else alert('失败');
}
function reverse(str)
{
// 在此处加入代码,完成字符串翻转功能
var spl = str.split(',');
var newstr="";
for(i=spl.length-1;i>=0;i--)
{
newstr+=spl[i]+',';
}
newstr=newstr.substring(0,newstr.length-1)
return newstr;
}
function reverse(str) {
// 在此处加入代码,完成字符串翻转功能
return str.split(",").reverse().join(",");
}
1.求y和z 的值是多少?
var x = 1;
var y = 0;
var z = 0;
function add(n){n=n+1;}
y = add(x);
function add(n){n=n+3;}
z = add(x);
分析:function add没有返回值,y和z都会是undefined,而且,将add函数改好:
function add(n){return n=n+1;}和function add(n){return n=n+3;}
y和z都会是4,因为后面定义的add会覆盖前面定义的add。
2:javascript是面向对象的,怎么体现javascript的继承关系?
3:javascript怎样选中一个checkbox,怎样设置它无效?
4:在css中:以下语句各代表什么意思?
td{width100%} //表HTML元素 .td{width100%}//类元素
#td{width100%}//ID ##td{width100%}
1、form中的input有哪些类型?各是做什么处理使用的?
text radio checkbox file button image submit reset hidden
submit是button的一个特例,也是button的一种,它把提交这个动作自动集成了。如果表单在点击提交按钮后需要用JS进行处理(包括输入验证)后再提交的话,通常都必须把submit改成button,即取消其自动提交的行为,否则,将会造成提交两次的效果,对于动态网页来说,也就是对数据库操作两次。
button具有name、value属性,能触发onclick事件
submit继承了button submit增加了触发表单onsubmit事件的功能、增加了执行表单的submit()方法的功能
INPUT type=submit按回车提交表单
button提交的是innerTEXT
2、table标签中border,cellpadding td标签中colspan,rowspan分别起什么作用?
border边界 cellpadding边距
cellpadding,是补白,是指单元格内文字与边框的距离
cellspacing,两个单元格之间的距离
colspan跨列数
rowspan跨行数
3、form中的input可以设置readonly和disable,请问这两项属性有什么区别?
readonly不可编辑,但可以选择和复制
disable不能编辑复制选择
4、JS中的三种弹出式消息提醒(警告窗口、确认窗口、信息输入窗口)的命令是什么?
alert confirmprompt
5.题目:当点击按钮时,如何实现两个td的值互换?
用javascript实现此功能。
分析:这个题主要是考变量传值。其次是考如何取元素的值。
第一种代码如下:
1
2
3
4
5
6
7//
8function submitbtn() {
9
10 var tText1 = document.getElementById('txt1');
11 var SubmitBtn1 = document.getElementById('submitBtn1');
12 var tText2 = document.getElementById('txt2');
13 var SubmitBtn2 = document.getElementById('submitBtn2');
14 SubmitBtn1.onclick = function() {
15 var temp = tText1.value;
16 tText1.value = tText2.value;
17 tText2.value = temp;
18 };
19 SubmitBtn2.onclick = function() {
20 var temp = tText2.value;
21 tText2.value = tText1.value;
22 tText1.value = temp;
23 };
24}
25window.onload = function() {
26 submitbtn();
27}
28//]]>
29
30
31
32
33
34
35
36
37
38
第二种代码如下:
1
2
3
4
5
6
7//
8function submitbtn() {
9
10 var tText1 = document.getElementById('txt1');
11 var SubmitBtn1 = document.getElementById('submitBtn1');
12 var tText2 = document.getElementById('txt2');
13 var SubmitBtn2 = document.getElementById('submitBtn2');
14 SubmitBtn1.onclick = function() {
15 var temp = tText1.innerHTML;
16 tText1.innerHTML = tText2.innerHTML;
17 tText2.innerHTML = temp;
18 };
19 SubmitBtn2.onclick = function() {
20 var temp = tText2.innerHTML;
21 tText2.innerHTML = tText1.innerHTML;
22 tText1.innerHTML = temp;
23 };
24}
25window.onload = function() {
26 submitbtn();
27}
28//]]>
29
30
31
32
33
321445 | |
123133 |
43
44
45
6. "闭包"问题
window.onload=function()
{
var ii,a="";
var d=document.getElementsByTagName("DIV");
for(ii=0;ii { if(d[ii].id=="top") { a=d[ii].getElementsByTagName("li"); for(var i=0;i { //a[i].onmouseover=function(){show(i)}; //此处的i是一个变量,在运行sh ow取i的值,很显示你的i每次都会最终变成a.length a[i].onmouseover=new Function("show("+i+")"); //这里的i是一个常量,就是此刻i是值 } } } } function show(z) { alert(z); }
使用注释行的时候,总是提示5.
在一般编程语言中, 参数都是"传值", 假设一个C函数的原型是int Fun(int value);
当你调用这个函数时, Fun函数首先会在自己的函数栈上copy一份参数, 就是这个函数的副本, 当你在Fun外部修改value值, 并不会影响Fun内部的value. 而Javascript的内嵌函数很特殊, 它并不会copy一个参数副本, 所有函数公用一套参数, 所以你在函数外部修改了参数值, 函数内部也会受影响.
这就是为什么你的show函数, 它的z参数是最后一个值, 因为每一次循环, z 都被更改了. 传值和传址的问题
1.判断字符串是否是这样组成的,第一个必须是字母,后面可以是字母、数字、下划线,总长度为5-20
2.截取字符串abcdefg的efg
3.让一个input的背景颜色变成红色
4。给一个页面,写html css
5。div的高宽等于浏览器可见区域的高宽,浏览器滚动,div始终覆盖浏览器的整个可见区域
6。判断一个字符串中出现次数最多的字符,统计这个次数
7。IE与FF脚本兼容性问题
又重新问的是1,4,6,7,这次问出题者的意图,并且让给出7的更多答案,
以及IE FF不兼容的原因
然后看了看简历,没有问简历上的项目,而是让自己随便谈谈
1对于web客户端技术未来趋势发展谈谈看法
javascript + ajax=RIA
Adobe Flash AS 3
Flex
Sliveright
2web开发团队人员应该如何分工协作
布局 CSS 脚本
比如脚本人员长期的积累可能铸造类型YUI这样的产品级脚本库(亮点)
3web开发曾经的团队有没有别人遇到问题,什么问题,向你请教
4如果要实习,什么时候可以
5自己在开发的过程中遇到什么问题,谈谈看法
6web开发脚本开发环境用什么、调试用什么
试过aptana,现在就用editplus
调试肯定用firebug,ie下看页面DOM用IEInspector
7如果有个新技术,现在需要掌握,你会怎么做
新技术的发现我一般是通过RSS工具,比如我用GoogleReader
每天有半个小时左右在看最新的资讯、技术走向
发现新技术,首先有个大概了解,如果有深入的必要
我一般会看他的官网,比如jquery,我会搜索到https://www.doczj.com/doc/d24088510.html,,然后看Docs、samples
如果要用到项目中,有困难的问题,我会svn得到最新的这个技术的源码,深入跟踪进去,看实现原理
一般现在涌现的技术都是opensource
提问时间
1百度web开发脚本是否有做类似YUI库的打算
2百度web开发工程师打算招多少人
百度电话二面回忆 web开发部–web开发工程师
首先是自我介绍
然后谈谈做的web项目
然后开始问技术问题
前端开发的优化问题
答:
产品发布时,js的压缩,即函数名替换、整个文件压缩成一行
css开发的时候注释写清楚,先有个base.css,然后根据不同页面需要再加css,发布的时候将css中的一个定义写成一行,目的是压缩文件大小
最终发布的时候甚至可以将css,js分别压缩成一个文件,甚至css、js通过技巧压缩到一个里边(亮点)
这样的目的是,减少用户访问web产品的http连接数
web前端产品的开发流程
答:首先根据产品的定位、用户群,确定配色,然后纸上设计整体布局,然后png 或者psd出效果图,切出需要的小图片,然后手写代码div+css构造出页面,然后根据功能写脚本
参考126邮箱首页,将所有小图片放到一个图片中,通过css的
background-position实现页面,还是为了优化,减少http连接数
规避javascript多人开发函数重名问题
答:首先是通过命名规范,比如根据不同的开发人员实现的功能,在函数名加前缀,虽然函数名看起来复杂,发布的时候还是可以替换,从而优化。
还有一种办法是,每个开发人员都把自己的函数封装到类中,然后调用的时候即使函数名相同,但是因为是要类.函数名来调用,所以也减少了重复的可能性。
javascript面向对象中继承实现
答:我是用prototype.js extend.js扩展
然后子类中parent.initialize()…
答的不好
正确答案:
// 1. 构造器
function Animal() {};
function Mammal() {};
function Canine() {};
function Dog() {};
// 2. 原型链表
Mammal.prototype = new Animal();
Canine.prototype = new Mammal();
Dog.prototype = new Canine();
prototype.js实现的基本原理
答:
将功能封装
比如Ajax.Request,还是有判断浏览器的代码;Position这样的实现页面元素位置的计算
prototye太大,如果一个页面功能不需要这样的,自己实现,怎么做
答:首先页面、css、脚本分离之后,脚本中将整个模块功能写成一个类var Do={} 其中初始化函数init:function(){},然后最后做Do.init()
其中init会对页面上form中需要交互的元素绑定事件,比如
$(’input1′).onclick=function(){}
IE、FF下面脚本的区别
答:
1.IE有outerHTML,FF没有
2.页面元素id,IE可以直接取,FF必须document.getElementById()
3.Ajax里边FF是new XMLHttpRequest,而IE是
try new ActiveXObject(’Msxml2.XMLHTTP’) try new
ActiveXObject(’Microsoft.XMLHTTP’)
FF下面实现outerHTML
答:.parenet.firstChild .parent.innerHTML
这个没答好
正确答案:原理是,get:取到这个标签的tagname,然后属性循环构造成这个标签的属性
set:把字符串用insertBefore插入到这个元素前面,然后removeChild这个元素
< SCRIPT LANGUAGE=”JavaScript”>
< !–
if(typeof(HTMLElement)!=”undefined” && !window.opera)
{
HTMLElement.prototype.__defineGetter__(”outerHTML”,function()
{
var a=this.attributes, str=”<”+this.tagName, i=0;
for(;i if(a[i].specified) str+=” “+a[i].name+’=”‘+a[i].value+’”‘; if(!this.canHaveChildren) return str+” />”; return str+”>”+this.innerHTML+””+this.tagName+”>”; }); HTMLElement.prototype.__defineSetter__(”outerHTML”,function(s) { var d = document.createElement(”DIV”); d.innerHTML = s; for(var i=0; i this.parentNode.insertBefore(d.childNodes[i], this); this.parentNode.removeChild(this); }); HTMLElement.prototype.__defineGetter__(”canHaveChildren”,function() { return !/^(area|base|basefont|col|frame|hr|img|br|input|isindex|link| meta|param)$/.test(this.tagName.toLowerCase()); }); } //–> < /SCRIPT> IE、FF下面CSS的解释区别 答: 1.png透明背景,FF下面没有问题,IE需要用滤镜通道 2.z-index在IE、FF下面的解释问题, IE会认为第一个z-index=0 3.长字符串,word-wrap:break-all可以解决IE,但是FF需要overflow:hidden 才行 冯舒娅补充: 1、有些标签在ff中不能用,比如button 2、滤镜 3、鼠标cursor:hand cursor:pointer 4、div的高度自适应 5、对box模型解析不一样 6、ul、ol的padding和margin IE都能识别*,标准浏览器(如FF)不能识别*; IE6能识别*,但不能识别 !important; IE7能识别*,也能识别 !important; FF不能识别*,但能识别 !important; 例如style=”*width:10px;!important width:20px;” 这样在IE6下宽度为10px,在IE7下宽度时20px web前端技术的展望 答:javascript ajax;flash AS;Flex;Sliveright 1编写一个方法求一个字符串的字节长度