web前端面试题及答案

web前端面试题

1.overflow:hidden是否形成新的块级格式化上下文?

A:会形成
B:不会

答案:会。 分析: BFC:它是一个独立的渲染区域,只有Block-level box参与, 它规定了内部的Block-level
Box如何布局,并且与这个区域外部毫不相干。
那些元素会产生BFC:
1根元素
2float属性不为none
3position为absolute或fixed
4display为inline-block, table-cell,table-caption, flex, inline-flex
5overflow不为visible

2.当下列的HTML代码加载时会触发新的HTTP代码请求吗?
...
    <div style="display:none">
        <img src="mypic.jpg" alt="My photo">
    </div>

3关于继承性下列说法正确的是?

A 元素中所有的属性都可以继承的
B font-size font-family color 属性是可以继承的
C margin border padding width height 是不可以继承的
D 以上说法都正确

CSS:表单元素不继承body的字体属性,所以排除DA,
margin border padding width height 是不可以继承的,这个是可以继承的,所以C错。
所以正确答案是B,(很勉强,但是要记得:CSS表单元素不继承body的字体属性)

4下面那些Hack只有IE6,IE7才能识别?

A selector{ +property:value; }
B selector{ _property:value; }
C selector{ *property:value; }
D *html selector{ +property:value;}

分析 答案是B
下划线hack(适用于IE6及其以下版本) _width: [BorderBox Model];
星号hack(适用于IE7以下版本) *width: [BorderBox Model];
星号 HTML hack(适用于IE4-6) * html p {font-size: 5em; }
星号加号HACK(适用于IE7)
虽然IE7不再识别以前的* html hack,但它使用了一个相似的新的hack。
*:first-child+html p { font-size: 5em; }
或者:
*+html p { font-size: 5em; }

5下面对BFC规范理解正确的是?

A BFC格式化上下文,一个创建了新的BFC的盒子是一个独立布局的,盒子里边的子元素的样式不会影响到外边元素的。
B 在同一个BFC中的两个毗邻的块级盒子在垂直方向(和布局方面方向有关系)的margin会发生折叠
C W3C css2.1规范中的一个概念,他决定了元素如何对其内容进行布局,以及与其他元素的关系和相互作用
D 以上说法都不对。

A正确 B正确 C正确 答案ABC
Box垂直方向的距离由margin决定。属于同一个BFC的两个相邻Box的margin会发生重叠

6javascript的typeof返回那些数据类型

1)number;
2)string;
3)boolean;
4)object
5)function;
6)undefined.

7简述null和undefined区别:

null不存在对象
undefined存在此对象,但没有初始化.

8简述在创建对象的过程中new操作符具体干了什么?
答案
    var obj  = {};
    obj.__proto__ = Base.prototype;
    Base.call(obj);

具体做了三件事:
第一行,创建了一个空对象
第二行,将obj__proto__(当然IE这个是没有的,这里好说事,所以这么说)指向Base.prototype
第三行,Base函数对象的this替换成obj,然后再调用Base函数。

8call和applay()方法区别

对于第一个参数意义都一样,但对第二个参数:
apply传入的是一个参数数组,也就是将多个参数组合成为一个数组传入,而call则作为call的参数传入(从第二个参数开始)

### Web前端相关面试题及其答案 #### 1. 对 JavaScript 的理解? JavaScript 是一种动态编程语言,具有弱类型特征,主要用于浏览器端开发。它支持事件驱动、函数优先以及异步处理机制。JavaScript 可分为三个部分:ECMAScript(核心语法)、DOM(文档对象模型)和 BOM(浏览器对象模型)。其主要特点包括跨平台兼容性、丰富的库生态以及强大的社区支持[^1]。 #### 2. 下列代码输出的值是什么? 假设代码如下: ```javascript let a = 1; function test() { console.log(a); } test(); ``` 由于 `a` 被声明在全局作用域下,在函数内部可以访问到全局变量 `a`,因此输出的结果为 `1`[^3]。 #### 3. 将下列代码改写为依次输出 0 到 9? 原代码可能是一个简单的循环结构,以下是实现逐秒打印的方法: ```javascript for (let i = 0; i < 10; i++) { setTimeout(() => { console.log(i); }, i * 1000); // 延迟时间设置为每秒增加 } ``` #### 4. 如何区分数组对象、普通对象和函数对象? 可以通过内置方法 `Array.isArray()` 来检测是否为数组;对于普通对象,可以直接使用 `typeof obj === 'object' && !Array.isArray(obj)` 进行判断;而函数对象则可通过 `typeof func === 'function'` 实现识别。 #### 5. 面向对象与面向过程的区别? - **面向对象**强调的是类的概念,通过封装数据成员和行为成员形成独立的对象实体,便于维护扩展。 - **面向过程**更关注解决问题的具体步骤流程描述,通常按照顺序逐步完成任务目标。 #### 6. 面向对象的三大基本特性? 继承(Inheritance)、封装(Encapsulation) 和 多态(Polymorphism)。 #### 7. XML 和 JSON 的区别? | 特性 | XML | JSON | |--------------|------------------------------|-----------------------------| | 数据格式 | 文本 | 文本 | | 易读性 | 较差 | 更好 | | 解析效率 | 较低 | 较高 | | 支持的数据类型 | 字符串为主 | 数字、布尔值等多种类型 | #### 8. Web Worker 和 WebSocket 的差异? - **Web Worker**: 主要用于后台运行脚本而不影响页面性能表现的技术手段之一; - **WebSocket**: 提供了一个持久连接通道使得服务器能够实时推送消息给客户端。 #### 9. JavaScript 中垃圾回收的主要方法? 主要包括引用计数法(reference counting garbage collection) 和标记清除算法(mark-and-sweep algorithm),其中后者更为常用并有效解决了者存在的循环引用问题[^1]。 #### 10. 使用 new 操作符创建实例的过程? 当调用new运算符时会发生四件事情: 1. 创建一个新的空对象。 2. 设置这个新对象的原型(__proto__)指向构造器函数prototype属性所指代的那个对象。 3. 执行构造器函数中的代码, 并将this绑定至新建出来的那个对象上. 4. 返回该新生成的对象如果构造器显式返回另一个非null对象,则最终结果将是那个被返回的对象而不是默认的新建对象[^1]。 #### 11. JS 延迟加载的方式有哪些? 常见的几种方式包括但不限于defer/async 属性应用于script标签内联或者外部文件链接处;动态插入 script 元素节点等等[^1]。 #### 12. WEB 应用从服务端主动推送到客户端的方式都有哪些? 主要有轮询(polling), 长轮询(long polling), Server-Sent Events(SSEs) ,以及最高效的 WebSocket 技术等几种主流方案可供选择[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值