前端面试题

以下都是网上整理出来的JS面试题,答案仅供参考。

2,截取字符串abcdefg的efg

//alert('abcdefg'.substring(4));

3,推断一个字符串中涌现次数最多的字符,统计这个次数

/*var str = 'asdfssaaasasasasaa';
var json = {};

for (var i = 0; i < str.length; i++) {
        if(!json[str.charAt(i)]){
                json[str.charAt(i)] = 1;
        }else{
                json[str.charAt(i)]++;
        }
};
var iMax = 0;
var iIndex = '';
for(var i in json){
        if(json[i]>iMax){
                iMax = json[i];
                iIndex = i;
        }
}
alert('涌现次数最多的是:'+iIndex+'涌现'+iMax+'次');*/

//4,IE与FF剧本兼容性题目
/

*obj.addEventListener(sEv, fn, false);
obj.attachEvent('on'+sEv,fn);
detachevet
removeEventListener
DOMContentLoaded
onreadystatechange  complete
DOMMouseScroll FF
onmousewheel   非FF
event.wheelDelta 上滚120 下-120
event.detail     上滚-3   下3  
obj.getCurrentStyle[attr]
getComputedStyle(obj,false)[attr]
XMLHttpRequest
ActiveXObject('Mircorsoft.XMLHttp')
FF当地能设置读取cookie 其他不可
event  ev
事宜源
srcElement||target
toElement||relatedTarget
obj.setCapture();只要ie认
obj.releaseCapture();*/

//5,躲避javascript多人开辟函数重名题目
定名空间
关闭空间
js模块化mvc(数据层、表现层、掌握层)
seajs
变量转换成对象的属性
对象化

//6,javascript面向对象中继续完成

function Person(name){
        this.name = name;
}

Person.prototype.showName = function(){
        alert(this.name);
}

function Worker(name, job){
        Person.apply(this,arguments)
        this.job = job;
}
for(var i in Person.prototype){
        Worker.prototype = Person.prototype;
}
new Worker('sl', 'coders').showName();

//7,FF下面完成outerHTML

var oDiv = document.createElement('div');
var oDiv1 = document.getElementById('div1');
var oWarp = document.getElementById('warp');

oWarp.insertBefore(oDiv, oDiv1);
oDiv.appendChild(oDiv1);
var sOut = oDiv.innerHTML;
oWarp.insertBefore(oDiv1, oDiv);
oWarp.removeChild(oDiv);
alert(sOut);

//8,编写一个要领 求一个字符串的字节长度;
//假定一个中文占两个字节

var str = '22两是';

alert(getStrlen(str))

function getStrlen(str){
        var json = {len:0};
        var re = /[\u4e00-\u9fa5]/;
        for (var i = 0; i < str.length; i++) {
                if(re.test(str.charAt(i))){
                        json['len']++;
                }
        };
        return json['len']+str.length;
}

//9,编写一个要领 去掉一个数组的反复元素

var arr = [1,2,3,1,43,12,12,1];
var json = {};
var arr2 = [];
for (var i = 0; i < arr.length; i++) {
        if(!json[arr[i]]){
                json[arr[i]] = true;
        }else{
                json[arr[i]] = false;
        }

        if(json[arr[i]]){
                arr2.push(arr[i]);
        }
};

for (var i = 0; i < arr.length; i++) {
        if(!aa(arr[i], arr2)){
                arr2.push(arr[i])
        }
};
function aa(obj, arr){
        for (var i = 0; i < arr.length; i++) {
                if(arr[i] == obj) return true;
                else return false;
        };
}
alert(arr2)

//10,写出3个运用this的典范运用

事宜: 如onclick this->发作事宜的对象
构造函数 this->new 出来的object
call/apply 转变this

//11、怎样深度克隆

var arr = [1,2,43];
var json = {a:6,b:4,c:[1,2,3]};
var str = 'sdfsdf';

var json2 = clone(json);

alert(json['c'])
function clone(obj){
        var oNew = new obj.constructor(obj.valueOf());
        if(obj.constructor == Object){
                for(var i in obj){
                        oNew[i] = obj[i];
                        if(typeof(oNew[i]) == 'object'){
                                clone(oNew[i]);
                        }
                }
        }
        return oNew;
}*

//12,JavaScript中怎样检测一个变量是一个String范例?请写出函数完成

typeof(obj) == 'string'
obj.constructor == String;

//13,网页中完成一个盘算昔时还剩若干时候的倒数计时顺序,要求网页上及时动态显示“××年还剩××天××时××分××秒”

var oDate = new Date();
var oYear = oDate.getFullYear();

var oNewDate = new Date();
oNewDate.setFullYear(oYear, 11, 31, 23, 59, 59);
var iTime = oNewDate.getTime()-oDate.getTime();

var iS = iTime/1000;
var iM = oNewDate.getMonth()-oDate.getMonth();
var iDate =iS

//2.你能形貌一下你制造一个网页的事情流程吗?

//3.你能形貌一下渐进加强和文雅降级之间的差别吗?

//4. 请诠释一下什么是语义化的HTML。
//内容运用特定标签,经由过程标签就能够也许相识团体页面的规划散布

//6. 你怎样对网站的文件和资本举行优化?

//7. 为何应用多个域名来存储网站资本会更有用?
//确保用户在差别区域能用最快的速率翻开网站,个中某个域名崩溃用户也能经由过程其他忧郁接见网站

//8.请说出三种减低页面加载时候的要领
1、紧缩css、js文件
2、兼并js、css文件,削减http要求
3、外部js、css文件放在最底下
4、削减dom操纵,尽量用变量替换不必要的dom操纵

//9.什么是FOUC?你怎样来防止FOUC?
因为css引入运用了@import 或许存在多个style标签以及css文件在页面底部引入使得css文件加载在html以后致使页面闪灼、花屏
用link加载css文件,放在head标签内里

//10.文档范例的作用是什么?你晓得若干种文档范例?
!文档范例,一个文档范例标记是一种规范通用标记言语的文档范例声明,它的目标是要通知规范通用标记言语剖析器,它应当运用什么样的文档范例定义(DTD)来剖析文档。
影响浏览器对html代码的编译衬着
<!doctype html>
html2.0
xHtml
html5

//11.浏览器规范形式和奇异形式之间的区分是什么?
盒模子诠释差别
(因为火狐的一直表现的很一致,不种我们费心。所以这里我们重点说IE浏览器)
IE6,7,8浏览器的规范形式照样奇异形式 盒子模子的 差别
规范盒子盒型 width=width
IE盒子模子 width=width+padding+border
2)能够设置行内元素的高宽
在Standards形式下,给span等行内元素设置wdith和height都不会见效,而在quirks形式下,则会见效。
3)可设置百分比的高度
在standards形式下,一个元素的高度是由其包括的内容来决议的,假如父元素没有设置高度,子元素设置一个百分比的高度是无效的。
4)用margin:0 auto设置程度居中在IE下会失效
运用margin:0 auto在standards形式下能够使元素程度居中,但在quirks形式下却会失效,quirk形式下的解决办法,用text-align属性:
body{text-align:center};#content{text-align:left}
5)quirk形式下设置图片的padding会失效
6)quirk形式下Table中的字体属性不能继续上层的设置
7)quirk形式下white-space:pre会失效

http://blog.csdn.net/freshlover/article/details/11616563
http://elf8848.iteye.com/blog/563999

//2.哈希表
具有散列(映照)特征的数据模子

//3.闭包
子函数能被外部调用到,则该作用连上的一切变量都会被保留下来。

//4.请诠释什么是Javascript的模块形式,并举出有用实例。
js模块化mvc(数据层、表现层、掌握层)
seajs
定名空间

//5.你怎样构造本身的代码?是运用模块形式,照样运用典范继续的要领?
对内:模块形式
对外:继续

//9* 你怎样优化本身的代码?
代码重用
防止全局变量(定名空间,关闭空间,模块化mvc..)
拆分函数防止函数过于痴肥
解释

//10.你能诠释一下JavaScript中的继续是怎样事情的吗?
/子构造函数中实行父构造函数,并用call\apply转变this
克隆父构造函数原型上的要领
/

//11.useraget.nav

//12.请尽量详实的诠释AJAX的事情道理。
建立ajax对象(XMLHttpRequest/ActiveXObject(Microsoft.XMLHttp))
推断数据传输体式格局(GET/POST)
翻开链接 open()
发送 send()
当ajax对象完成第四步(onreadystatechange)数据吸收完成,推断http相应状况(status)200-300之间或许304(缓存)实行回调函数

var xmlHttp;  
function createXMLHttpRequest() {  
    if (window.ActiveXObject) {  
        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");  
    }  
    else if (window.XMLHttpRequest) {  
        xmlHttp = new XMLHttpRequest();  
    }  
}  
var okFunc = function(){  
    if(xmlHttp.readyState == 4) {  
        if(xmlHttp.status == 200) {  
            $("#msg").html(xmlHttp.responseText);  
        }  
    }  
}  
var startAjax = function(){  
    $("#msg").html("Loading...");  
    createXMLHttpRequest();  
    if( !xmlHttp){  
        return alert('create failed');  
    }  
    xmlHttp.open("POST", "Test", true);  
    xmlHttp.onreadystatechange = okFunc;  
    xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");  
    xmlHttp.send(document);  
}  
$(document).ready(function(){  
    $("#start").click(startAjax);  
    $.post("Test",{'name':'Hello','age':22});  
});
    原文作者:daysun
    原文地址: https://segmentfault.com/a/1190000002635169
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞