`

HTML+JS+CSS面试题

 
阅读更多

1.如何消除一个数组中的重复元素?

var arr1 =[1,2,2,2,3,3,3,4,5,6],
var arr2 = [],
for( var i = 0 , len = arr1.length ; i< len ; i++ ){
    if( arr2.indexOf(arr1[i]) < 0 )
        arr2.push(arr1[i]);
}
document.write(arr2);

 

2.块元素、行元素、空元素

块元素又称为块级元素(block element),块级元素在浏览器显示时,通常会以新行来开始(和结束)。

常见的块元素:

address、blockquote、center、dir、div、dl、form、h1-h6、table、td、th、tr、p、ul、ol等

常见的行元素:

a、b、code、em、img、input、label、select、span、strong、textarea等

常见的空元素:

area、link、col、meta、track等

 

3.浏览器内核

IE浏览器 —— Trident内核

Firefox浏览器 —— Gecko内核

Safari浏览器 —— Webkit内核

Opera浏览器 —— Presto内核

Chrome浏览器 —— Blink内核

 

常用的DOCTYPE具体声明

 

1.htm5  :  <!DOCTYPE html>

 

2.html 4.01  : 严格模式包含所有 HTML 元素和属性,但不包括展示性的和弃用的元素(比如 font),不允许框架集(Framesets);过渡模式包含所有 HTML 元素和属性,包括展示性的和弃用的元素(比如 font),不允许框架集(Framesets);框架模式等同于过渡模式,但允许框架集内容。 


HTML 4.01 Strict :<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

HTML 4.01 Transitional :<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  "http://www.w3.org/TR/html4/loose.dtd">

HTML 4.01 Frameset :<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"  "http://www.w3.org/TR/html4/frameset.dtd">

 

3.XHTML 0.1 :前三种模式同上,XHML 必须以格式正确的 XML 来编写标记。 

XHTML 1.0 Strict :<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 

XHTML 1.0 Transitional :<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

XHTML 1.0 Frameset: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"> 

XHTML 1.1 该 DTD 等同于 XHTML 1.0 Strict,但允许添加模型。<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

 

5.用纯CSS画一个三角形,底边为100px

 

<div id="sanjiaoxing"></div>


#sanjiaoxing{
    width: 0px;
    height: 0px;
    border-left: 50px slide transparent;
    border-right: 50px slide transparent;
    border-bottom: 100px slide transparent;
}

 

6.js随机生成数

 

Math.random();  /*结果为0-1之间的一个随机数(包括0,不包括1)*/
Math.floor(num);  /*参数num为一个数值,函数结果为num的整数部分*/
Math.round(num);  /*参数num为一个数值,函数结果为num四舍五入后的整数*/

Math.ceil(n);  /*返回大于等于n的最小整数。*/
/*用Math.ceil(Math.random()*10);时,主要获取1到10的随机整数,取0的几率极小。*/

Math.round(n);   /*返回n四舍五入后整数的值。*/
/*用Math.round(Math.random());可均衡获取0到1的随机整数。
用Math.round(Math.random()*10);时,可基本均衡获取0到10的随机整数,其中获取最小值0和最大值10的几率少一半。*/

Math.floor(n);   /*返回小于等于n的最大整数。*/
/*用Math.floor(Math.random()*10);时,可均衡获取0到9的随机整数。*/

 

7.请尽可能详尽的解释AJAX的工作原理

创建ajax对象(XMLHttpRequest/ActiveXobject(Microsoft.XMLHttp))

判断数据传输方式(GET/POST)

打开链接open()

发送send()

当ajax对象完成第四步(onreadystatechange)数据接收完成,判断http响应状态(status)200-300之间或者304(缓存)执行回调函数

 

8.原生js实现ajax过程

 

var Ajax={
    get: function (url,fn){
        var obj=new XMLHttpRequest();  // XMLHttpRequest对象用于在后台与服务器交换数据          
        obj.open('GET',url,true);
        obj.onreadystatechange=function(){
            if (obj.readyState == 4 && obj.status == 200 || obj.status == 304) { 
                // readyState==4说明请求已完成
                fn.call(this, obj.responseText);  //从服务器获得数据
            }
        };
        obj.send(null);
    },
    post: function (url, data, fn) {
        var obj = new XMLHttpRequest();
        obj.open("POST", url, true);
        obj.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); // 发送信息至服务器时内容编码类型
        obj.onreadystatechange = function () {
            if (obj.readyState == 4 && (obj.status == 200 || obj.status == 304)) {  // 304未修改
                fn.call(this, obj.responseText);
            }
        };
        obj.send(data);
    }
}

 

jQuery实现ajax

 

$.ajax({
    type: "POST",
    url: "index.php",
    dataType: "json",
    data:{
        "val1": "abc",
        "val2": 123,
        "val3": "456"
    },
    beforeSend: function(){

    },
    success: function(msg){
        console.log(msg)
    },
    error: function(){
         console.log("error")
    }
})

  

 

9.js中怎么检测一个变量是string类型?请写出一个函数实现

 

typeof(obj) == 'string';

obj.constructor == string;

 

10.浏览器标准模式和怪异模式之间的区别是什么?

盒模型解释不通

 

11.JavaScript的typeof返回哪些数据类型?

string  number  boolean  undefined  object  function

 

12.统计一串字符串中字母的个数,或者出现次数最多的字母

var str = "aaaabbbccccddfgh";
var obj  = {};
for(var i=0;i<str.length;i++){
    var v = str.charAt(i);
    if(obj[v] & obj[v].value == v){
        obj[v].count = ++ obj[v].count;
    }else{
        obj[v] = {};
        obj[v].count = 1;
        obj[v].value = v;
    }
}
for(key in obj){
    document.write(obj[key].value +'='+obj[key].count+' '); // a=4  b=3  c=4  d=2  f=1  g=1  h=1 
}

 

 13.变量提升

写出下列程序的输出结果

function test() {
    console.log(a);
    console.log(foo());
    var a = 1;
    function foo() {
        return 2;
    }
}

test();

输出结果为   undefined  2

 

再来看几个例子

    var scope="全局变量";
    function checkscope(){
        var scope="局部变量";
        function nested(){
            var scope = "嵌套作用域内的局部变量";
            alert(scope);//输出:嵌套作用域内的局部变量
        }
        nested();
        alert(scope);//输出:局部变量
    }
    checkscope();
    alert(scope);//输出:全局变量

从上面的例子中可以看到,局部变量的作用域仅仅在函数内部,出了函数体之后,局部变量就会被销毁。在nested()函数中,虽然又声明了一个scope,但是nested()中的scope是局部变量,只是与全局变量的名字相同,并不是全局变量,所以,虽然在该函数中把scope赋值为“嵌套作用域内的局部变量”,但这仅仅是一个与全局变量名称相同的一个变量而已,并没有改变全局变量的值。

 

我们通过下面的这个例子进一步理解函数作用域的问题。

    var scope="全局变量";
    function checkscope(){
        var scope="局部变量";
        function nested(){
            scope = "嵌套作用域内的局部变量";
            alert(scope);//输出:嵌套作用域内的局部变量
        }
        nested();
        alert(scope);//输出:嵌套作用域内的局部变量
    }
    checkscope();
    alert(scope);//输出:全局变量

 上面这部分代码中,在nested()函数中,我们并没有用var来声明scope,所以,在这里的scope的作用域就被提升了,即我们将checkscope中的scope的值重置了,所以在输出的时候输出的结果为“嵌套作用域内的局部变量”。

 

 14.JavaScript中什么是伪数组?如何将伪数组转化为标准数组?

伪数组(类数组):无法直接调用数组方法或期望length属性有什么特殊的行为,但仍可以对真正数组遍历方法来遍历它们。典型的是函数的argument参数,还有像调用getElementByTagName,document.childNodes之类的,它们都返回NodeList对象都属于伪数组。可以使用Array.prototype.slice.call(fakeArray)将数组转化为真正的Array对象。

function log(){
    var args = Array.prototype.slice.call(arguments);
    //为了使用unshift数组方法,将argument转化为真正的数组
    args.unshift('(app)');

    console.log.apply(console, args);
};

 

 15.请分别写出HTML,JavaScript,CSS,Java,PHP,Python的注释代码格式。

<!--
<html>
</html>
--!>

 

//javascript

/*
*javascript
*/

 

/* css */

 

//java

/*
*java
*/

 

//PHP
#PHP
/*
*PHP
*/

 

#Python
'''
Python
'''

 

 

 

 

分享到:
评论

相关推荐

    html+css+js面试题

    ### HTML+CSS+JS面试题知识点解析 #### 1. HTML是什么意思? - **知识点**:HTML(HyperText Markup Language)是一种标记语言,用于构建网页结构。它通过一系列的标签来定义网页的不同部分,如标题、段落、列表等...

    2023最新前端面试题总结HTML5+CSS3+JS+TS4+Vue3+React18+八股文+手写+项目+笔试

    2023年最全前端面试(20w字)HTML5+CSS3+JS+TS4+Vue3+React18+八股文+手写+项目+笔试 (一开始就是在CSDN博客上写的,现在应部分同学的要求,我直接将博客内容复制成pdf

    前端面试题html+css+js+ts+vue+react+uniapp

    在前端开发领域,掌握HTML、CSS、JavaScript是基础,而TypeScript、Vue.js、React以及UniApp等技术则代表着现代Web应用的高级阶段。这些技术的深入理解和运用,对于前端开发者来说至关重要,尤其是在面试环节。以下...

    html5+css3面试题答案.docx

    HTML5 和 CSS3 面试题答案 HTML5 和 CSS3 是当前 Web 开发中两个非常重要的技术,以下是关于 HTML5 和 CSS3 的一些常见面试题答案: 优雅降级和渐进增强 优雅降级(Gracious Degradation)和渐进增强...

    html+css+js面试总结

    在前端开发领域,HTML、CSS和JavaScript是三大核心技术,它们共同构建了网页的结构、样式和交互性。本文将深入探讨这些技术在面试中的常见知识点,帮助你充分准备前端面试。 **HTML(HyperText Markup Language)**...

    前端笔记+html+css+js+vue+工具+计算机网络+操作系统+面试题.zip

    在本压缩包“前端笔记+html+css+js+vue+工具+计算机网络+操作系统+面试题.zip”中,包含了前端开发以及相关技术领域的丰富学习资料。以下将详细阐述其中涉及的知识点: 1. **HTML(HyperText Markup Language)**:...

    前端面试题(css+html+js+jquery+vue+其他)

    前端面试题(css+html+js+jquery+vue+其他)

    新版前端高频面试题笔记+课件+源码(HTML+CSS+JavaScript)

    二.CSS面试题 1.display: none; 与visibility: hidden;的区别 2.外边距折叠(collapsing margins) 3.z-index是什么?在position的值什么时候可以触发? …… 三.JS高频面试题 1.介绍JS有哪些内置对象? 2.如何最小化重绘...

    html+css+js 仿微信红包

    在IT行业中,HTML、CSS和JavaScript是构建网页和交互式用户体验的三大核心技术。"html+css+js 仿微信红包"这个项目旨在利用这三种语言的...在实际开发中,这样的练习也常常被用来作为面试题,以考察候选人的综合技能。

    前端:html+css+js+node+vue 思维导图/面试题

    在前端开发领域,HTML、CSS、JavaScript、Node.js和Vue.js是至关重要的技术栈,它们构建了现代网页和应用程序的基础。下面将详细讲解这些技术及其相关的面试知识点。 1. HTML (HyperText Markup Language) HTML是...

    HTML+CSS+CSS3高频面试题_88题.pdf_前端面试题

    【HTML+CSS+CSS3高频面试题_88题.pdf_前端面试题】这份文档主要涵盖了HTML、CSS和CSS3的常见面试问题,涉及到前端开发的基础知识和最新特性。以下是根据文档部分内容提炼出的关键知识点: 1. **HTML `&lt;img&gt;` 标签的...

    300道HTML、CSS习题及面试题(含答案)

    2. 使用JavaScript或CSS预处理器:实现换肤功能,可以通过JavaScript来动态添加或切换CSS类,或者使用预处理器如SASS或LESS来预编译多套主题样式,通过切换类或注释掉特定的样式规则来改变外观。 3. 性能考虑:在...

    JS、CSS、HTML面试题

    ### CSS面试题知识点: 1. **选择器**:掌握ID选择器(#id),类选择器(.class),元素选择器(tag),以及组合选择器(如后代选择器,子元素选择器,相邻兄弟选择器等)。 2. **盒模型**:理解CSS盒模型,包括...

    html+css+js面试题.pdf

    HTML(HyperText Markup ...综上所述,HTML、CSS和JavaScript是构建网页和实现交互的核心技术,了解并掌握它们是成为一名合格前端开发人员的基础。在面试中,对这些知识点的熟悉度往往能反映出应聘者的专业技能水平。

    前端面试必备1000题HTML+CSS+JS

    "前端面试必备1000题HTML+CSS+JS"是一个全面的题库,旨在帮助准备面试的候选人强化对这些核心技术的理解,提高应对面试的能力。 HTML(HyperText Markup Language)是网页内容的基础结构语言,用于定义网页的元素和...

    html+css+js面试题归类.pdf

    HTML(HyperText Markup Language)是超文本标记语言...以上内容涵盖了HTML、CSS和JavaScript的基本概念和常见用法,这些都是前端开发面试中常见的知识点。理解并掌握这些基础,对于成为一名合格的前端开发者至关重要。

    JAVA面试重点话术+常见面试题指南+基础笔试100道+1000道 互联网大厂面试精华

    Java 集合、JVM、多线程、并发编程、设计模式、Spring全家桶、Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、MongoDB、Redis、MySQL、RabbitMQ、Kafka、Linux、Netty、Tomcat、Python、HTML、CSS、...

    CSS+JavaScript面试题.docx

    【CSS+JavaScript面试题解析】 1. HTML 中定义表格的宽度用 `80px` 与 `80%` 的区别在于,`80px` 定义的是一个固定宽度,表示表格的宽度为80个像素;而 `80%` 是相对宽度,表示表格的宽度占其父元素宽度的80%,会...

Global site tag (gtag.js) - Google Analytics