面试问题总结(一)

1、如何使div居中
答案源自百度知道:http://zhidao.baidu.com/link?url=yKaq6EFuTVIHt3mOq5perwRVhSEKOGjfXrPMKusrfrcLcfcn4859uJUSkTuRMW-vCPcfFjyVkaGcvnOBhtp2Tq
首先需要position:absolute;绝对定位。而层的定位点,使用外补丁margin负值的方法。负值的大小为层自身宽度高度除以二。
如:一个层宽度是400,高度是400。使用绝对定位距离上部与左部都设置成50%。
而margin-top的值为-200。margin-left的值为-200。
这样我们就实现了层垂直居中于浏览器的样式编写。
.center{
position:absolute;
top:50%;
left:50%;
margin:-200px 0 0 -200px;
width:400px;
height:400px;
}

2、IE6的兼容性问题
答案源自网络。
(1)双外边距bug
浮动元素设置了外边距margin,IE6会呈现为双倍的距离。
解决方法:
1、该元素加上 _display:inline。
2、_margin:一半的边距。
(2)z-index bug
在定位元素(相对定位或绝对定位)比较多,层级较复杂时,IE6的显示效果可能
与其他浏览器大相径庭。父元素及其兄弟元素position:relative,他们的子元素是position:absolute,也许你设置了某个子元素的z-index为页面中最高的值,
IE6下这个元素可能还是会被其他元素覆盖。这是因为IE6是拼爹的,儿子再牛逼,
老子不给力也不行
解决方法:给出现问题的元素的父级加上较高的z-index。
(3)、iframe背景不透明
iframe在非IE浏览器中默认背景色是透明的,但在IE浏览器中默认是白色背景,
包括IE6-、IE6、IE7、IE8,在背景色是白色的页面下是没有问题的,
但是在非白色背景色下就很郁闷。
需要在iframe标签里加上属性:
allowtransparency="true"
(4)ie6img于块元素中,底边多出空白 
解决方法:父级设置overflow: hidden; 或 img { display: block; }
(5)ie6li之间会有间距 
解决方法:float: left;
(6)ie6块级元素高度小于19px的时候需要写font-size=1px等解决,
ie6不支持块级元素高度太小,会默认调大。

3、css position属性值及区别
absolute:生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位。
元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。
relative:生成相对定位的元素,相对于其正常位置进行定位。
因此,"left:20" 会向元素的 LEFT 位置添加 20 像素。
fixed:生成绝对定位的元素,相对于浏览器窗口进行定位。
元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。
static:默认值。没有定位,元素出现在正常的流中(忽略 top, bottom, 
left, right 或者 z-index 声明)。
inherit:规定应该从父元素继承 position 属性的值。

4、数组去重方法
答案整理自
http://www.cnblogs.com/novus/archive/2011/06/30/1921132.html
http://blog.csdn.net/chengxuyuan20100425/article/details/8497277
法一:(建立新数组,把不重复的项放到新数组中)
Array.prototype.unique=function(){
var n=[];
for(var i=0;i<this.length;i++){
 if(n.indexOf(this[i])==-1)n.push(this[i]);
}
return n;
}
法二:(用hash和临时数组)
Array.prototype.unique=function(){
var res=[],hash={};
if(!hash[this[i]]){
res.push(this[i]);
hash[this[i]]=true;
}
return res;
}
法三:(先排序,相同的项必然相邻,前项比后项)
Array.prototype.unique=function(){
var res=new Array();
this.sort();
for(var i=0;i<this.length;i++){
 if(this[i]==this[i+1]){
continue;
}
res[res.length]=this[i];
}
return res;
}
5、js如何实现继承
答案源自http://www.jb51.net/article/44875.htm
继承解释参考http://www.ruanyifeng.com/blog/2011/06/
designing_ideas_of_inheritance_mechanism_in_javascript.html
(1)原型式继承
function Person(name,age){ 
this.name=name; 
this.age=age; 

Person.prototype.sayHello=function(){ 
alert("使用原型得到Name:"+this.name); 

var per=new Person("马小倩",21); 
per.sayHello(); //输出:使用原型得到Name:马小倩 


function Student(){} 
Student.prototype=new Person("洪如彤",21); 
var stu=new Student(); 
Student.prototype.grade=5; 
Student.prototype.intr=function(){ 
alert(this.grade); 

stu.sayHello();//输出:使用原型得到Name:洪如彤 
stu.intr();//输出:5 

(2)构造函数继承

function Parent(name){ 
this.name=name; 
this.sayParent=function(){ 
alert("Parent:"+this.name); 



function Child(name,age){ 
this.tempMethod=Parent; 
this.tempMethod(name); 
this.age=age; 
this.sayChild=function(){ 
alert("Child:"+this.name+"age:"+this.age); 



var parent=new Parent("江剑臣"); 
parent.sayParent(); //输出:“Parent:江剑臣” 
var child=new Child("李鸣",24); //输出:“Child:李鸣 age:24” 
child.sayChild(); 

(3)call、apply方法

6、Ajax的工作机制?同步与异步的区别?
工作机制:(1)初始化对象并发出XMLHttpRequest请求;
(2)指定响应处理函数
XMLHttpReq.onreadystatechange = function() { };或XMLHttpReq.onreadystatechange = 函数名;
(3)发出HTTP请求
XMLHttpReq.open("GET", url, true);
XMLHttpReq.send(null); // 发送请求
(4)处理服务器返回的信息
同步与异步的区别:false同步就代表一个请求对应一个响应对象,
只有当这个过程完整个结束后,下一个请求才能进来,
true异步就是执行当前请求的同时,其他请求也可以执行,
其实概念和多线程执行时差不多的!

7、var arr=[];与var arr=new Array();的区别;
new Array() 会实例化一个对象变量,而var arr=[],等于是直接声明一个变量。
很明显实例一个对象对性能的损耗比直接声明一个对象来的大些。

8、事件冒泡,如何阻止事件冒泡?
调用js的阻止函数e.stopPropagation()或者
window.event.cancelBubble = true; 
9、页面中的flash效果?
10、java什么是多态?
父亲的行为像儿子而不是儿子的行为像父亲。
eg:
public interface Parent//父类接口
{
public void simpleCall();
}
public class Child_A implements Parent
{
public void simpleCall()
{
//具体的实现细节;
}
}

public class Child_B implements Parent
{
public void simpleCall()
{
//具体的实现细节;
}
}
Parent pa = new Child_A();
pa.simpleCall()则显然是调用Child_A的方法;
Parent pa = new Child_B();
pa.simpleCall()则是在调用Child_B的方法。
11、MVC三层架构(知道过程)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值