前端面试题收集整合

2023-10-29

面试题

一、在css布局中,什么场景下出现元素高度塌陷,如何解决元素高度塌陷问题?
父元素的所有子元素设置浮动后会出现元素高度塌陷问题。
1、父元素设置高度;
2、父元素设置浮动;
3、修改父元素的类型:display:inline-block/table;
4、父元素设置overflow:hidden属性
5、额外标签法;
6、伪元素方法;
7、双伪元素。

二、display: none; 和 visibility: hidden;的区别?
display: none;是将该元素移除,不占任何空间位置;
visibility: hidden;是将该元素设置为不可见,但它在网页上的位置还是保留。

三、css定位有几种,各个定位方式有什么区别?
1、相对定位:relative——>相对定位偏移的参考元素是元素本身,它不会使元素脱离文档流。
2、绝对定位:absolute——>绝对定位偏移的参考元素是非静态定位的父级元素,如果父级元素都是静态定位,则相对body进行定位,它会使元素脱离文档流。
3、固定定位:fixed——>固定定位偏移的参考元素是整个文档,它会使元素脱离文档流。
4、静态定位:static——>静态定位就是按照文档流正常显示。

四、js原始数据类型有哪些? 引用类型数据有哪些? 原始数据类型和引用类型的区别?
原始数据类型有数值型Number、字符型String、布尔值Boolean、Null、Undefined、Symbol;引用数据类型有数组、对象、函数。
原始数据类型和引用数据类型的区别:原始数据类型的值保存在栈中;而引用数据类型的值保存在堆中,地址指针保存在栈中。

五、var和const的区别:

1、var声明的变量会挂载在window上,而const声明的变量不会;

2、var声明的变量存在变量提升,而const声明的变量不存在变量提升;

3、var声明的变量不会形成块级作用域,而const声明的变量会形成块级作用域;

4、同一作用域下,var可以声明同名变量,而const不可以;

5、var声明的变量可以不赋值,而const声明变量时必须赋值;

6、var声明的变量的值可以修改,而const声明的变量的值不可以修改。

六、在css布局中,什么场景下会出现外边距合并以及如何解决外边距合并问题?

1、当两个元素是兄弟关系,并且垂直方向上第一个元素设置了margin-bootom和第二个元素设置了margin-top,那么就会出现外边距合并(两个都设置正数,则取两者的最大值;两个都设置负数,则取两者绝对者都最大值;两个是一正一负,则不会合并)。

2、当两个元素是父子关系,并且垂直方向上父元素设置了margin-top属性,子级元素的第一个子元素设置了margin-bottom 属性,则子级元素的第一个子元素的margin-top的属性值会传递给父级。其解决方案如下:

(1)给父级元素设置border;

(2)给父级元素设置overflow:hidden;

(3)不要使用margin,而是使用paading;

(4)给父级元素设置浮动;

(5)给父级元素设置绝对定位或固定定位,不能是相对定位。

七、break、continue、return、throw的作用?

break:跳出循环;

continue:跳出本次循环,进入下次循环;

return:返回值,并中止当前函数;

throw:中止程序并抛出异常。

八、XSS攻击原理与防御?

攻击原理:

XSS(Cross-Site Scripting,跨站脚本)是注入攻击的一种,攻击者通过将代码注入被攻击者的网站中,用户一旦访问访问网页便会执行被注入的恶意脚本。其原理是WEB应用程序混淆了用户提交的数据和JS脚本的代码边界,导致浏览器把用户的输入当成了JS代码来执行。XSS攻击主要分为反射性XSS攻击(Reflected XSS attack)和存储型XSS攻击(Stored XSS Attack)两类。

反射性XSS有称为非持久型XSS(Non-Persistent XSS)。当某个站点存在XSS漏洞时,这种攻击会通过URL注入攻击脚本,只有当用户访问这个URL是才会执行攻击脚本。

存储型XSS也被称为持久型XSS(persistent XSS),这种类型的XSS攻击更常见,危害也更大。它和反射型XSS类似,不过会把攻击代码存储到数据库中,任何用户访问包含攻击代码的页面都会被殃及。

如何防御:

防范XSS攻击最主要的方法是对用户输入的内容进行HTML转义,转义后可以确保用户输入的内容在浏览器中作为文本显示,而不是作为代码解析。

九、简述浏览器渲染页面机制?

1、根据html文件构建DOM树和CSSOM树。构建DOM树期间,如果遇到JS,阻塞DOM树及CSSOM树的构建,优先加载JS文件,加载完毕后,再继续构建DOM树及CSSOM树;

2、构建渲染树;

3、页面的重绘与重排(也称回流)。页面渲染完成后,若JS操作了DOM节点,根据JS对DOM操作动作的大小,浏览器对页面进行重绘或重排。

十、简述一个完整的HTTP事务处理过程?

一个完整的HTTP事务的处理过程是:域名解析——>发起TCP3次握手——>建立TCP连接后发起http请求——>服务器端响应http请求,浏览器得到html代码——>浏览器解析html代码,并请求html代码中的资源——>浏览器对页面进行渲染并呈现给用户。

十一、前端性能优化有哪些?

前端性能优化有:减少HTTP请求次数、使用CDN、避免空的src和href、为文件头指定Expires、使用gzip压缩内容、把CSS放到顶部、 把JS放到底部、避免使用CSS表达式、将CSS和JS放到外部文件中、权衡DNS查找次数、精简CSS和JS、避免跳转、 删除重复的JS和CSS、配置ETags、可缓存的AJAX、使用GET来完成AJAX请求、减少DOM元素数量、避免404、减少Cookie的大小、使用无cookie的域、不要使用滤镜、不要在HTML中缩放图片、缩小favicon.ico并缓存。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

前端面试题收集整合 的相关文章

随机推荐

  • [Nginx]使用nginx的image_filter_module来处理图片

    我司APP针对不同尺寸的手机需要展示不同尺寸的图片 同时 在App的不同功能模块中 图片展示的大小也不同 然而 旅游线路上传之初 图片只存在一种适用于网站的尺寸 所以这就导致以下问题 1 图片过大导致 APP加载图片速度慢 2 消耗用户过多
  • 第二届西安邮电大学网络安全大赛(部分re)

    文章目录 ez MATH eazy encode easy re ez MATH 下载文件后打开 include
  • Intellij IDEA问题整理

    TOC Intellij IDEA问题整理 1 IDEA中SQL文本换行 问题描述 在Navicat中编写完一大坨SQL后 点击美化SQL后 看着很舒心的SQL语句 复制到IDEA中很长很长的一段 设置完自动换行后 可读性不高 解决方法 1
  • Linux 防火墙

    sudo ufw status 如果你是root 则去掉sudo ufw status 可检查防火墙的状态 我的返回的是 inactive 默认为不活动 sudo ufw version防火墙版本 ufw 0 29 4ubuntu1 Cop
  • 如何解决SpringBoot的@DeleteMapping注解的方法不被调用

    1 前端代码
  • 计算机网络 笔记 1 电路交换 报文交换 分组交换

    一 介绍 1 电路交换 应用实例 电话机 从电话发明至今 过程 建立连接 占用通信资源 gt 通话 一直占用通信资源 gt 释放连接 归还通信资源 特点 在通话的全部时间内 通话的两个用户始终占用端到端的通信资源 分析 电路交换主要应用在电
  • 阿里十年架构师用140个案例整合出Java微服务架构实战,看完我直接精通,年轻人你耗子尾汁

    微架构的出现 很好地适应了这个时代对快速发展变化的要求 它不再提倡一体化的项目设计 而是对项目进行有效的 业务区 可以简单理解为不同的子系统 划分 并利用合理的技术对业务性能做出提升和改善 同时又极大地简化了配置文件的使用与 profile
  • win7共享遇到的问题

    两台win7笔记本之间需要共享文件夹 所有的设置都弄了 包括 1 网络和共享中心 更改高级共享设置 允许共享文件夹 关闭密码保护 2 右键需要共享的文件夹 属性 共享 权限添加读写控制 打开桌面的网络 双击 总是弹出用户名和密码 不知道输入
  • EMQ X+TDengine 搭建 MQTT 物联网可视化平台

    物联网数据采集涉及到大量设备接入 海量的时序数据传输 EMQ X MQTT 服务器 与 TDengine 大数据平台的组合技术栈完全能够胜任场景中的海量时间序列监测数据的传输 存储和计算 数据入库后 往往需要其他方式如数据可视化系统将数据按
  • Qt自定义开关按钮控件

    Qt自定义开关按钮控件 最近的项目需要在页面中添加一个开关按钮 样式类似于iOS的wifi开关按钮 在网上借鉴了别人的代码 稍作修改可以呈现出想要的效果 代码如下 switchcontrol h include
  • leetcode 326. Power of Three(3的次方)

    问题描述 Given an integer write a function to determine if it is a power of three Follow up Could you do it without using an
  • Linux进程

    目录 1 进程 1 1 什么是进程 1 2 如何来描述进程 PCB process control block 1 3 task struct 1 4 如何查看进程 1 5 获取标识符 1 6 如何创建一个进程呢 1 7 进程的状态 1 7
  • 5705. 判断国际象棋棋盘中一个格子的颜色

    给你一个坐标 coordinates 它是一个字符串 表示国际象棋棋盘中一个格子的坐标 下图是国际象棋棋盘示意图 如果所给格子的颜色是白色 请你返回 true 如果是黑色 请返回 false 给定坐标一定代表国际象棋棋盘上一个存在的格子 坐
  • VMware Workstation Player安装CentOS 7和基本配置

    本文主要分享使用VMware Workstation Player 15安装CentOS 7的过程 最后还有CentOS 7的基本设置 1 环境准备 下载安装VMware VMware Workstation Player 15 下载Cen
  • Hive 单表列行转换和多表列行转换

    一 单表列行转换 描述 表中记录了各年份各部门的平均绩效考核成绩 表名 t1 表结构 a 年份 b 部门 c 绩效得分 表内容 a b c 2014 B 9 2015 A 8 2014 A 10 2015 B 7 多行转多列 问题1 将上述
  • 51单片机模块化编程

    一 传统方式编程 所有的函数均放在main c 里 若使用的模块比较多 则一个文件内会有很多的代码 不利于代码的组织和管理 而且很影响编程者的思路 模块化编程 把各个模块的代码放在不同的 c 文件里 在 h 文件里提供外部可调用函数的声明
  • 无法解决 equal to 运算中 \"Chinese_PRC_CI_AS\" 和 \"Chinese_PRC_CS_AS\" 之间的排序规则冲突。

    无法解决 equal to 运算中 Chinese PRC CI AS 和 Chinese PRC CS AS 之间的排序规则冲突 之所以会出现这种错误 是因为服务器不能用不同的排序规则来比较两段文本 但是发果用collate关键字显式的创
  • linux驱动arm蜂鸣器响,ARM11 硬件 PWM驱动蜂鸣器设备代码

    include include include include include include include include include include include include include include include
  • C++基础知识 - 函数模板

    函数模板 C 提供了模板 template 编程的概念 所谓模板 实际上是建立一个通用函数或类 其类内部的类型和函数的形参类型不具体指定 用一个虚拟的类型来代表 这种通用的方式称为模板 模板是泛型编程的基础 泛型编程即以一种独立于任何特定类
  • 前端面试题收集整合

    面试题 一 在css布局中 什么场景下出现元素高度塌陷 如何解决元素高度塌陷问题 父元素的所有子元素设置浮动后会出现元素高度塌陷问题 1 父元素设置高度 2 父元素设置浮动 3 修改父元素的类型 display inline block t