前端面试题收集整合

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(使用前将#替换为@)

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

  • 摩卡 - Chai Karma“套件未定义”

    我对 jscript tdd 很陌生 遇到了问题 希望有人能告诉我我在做什么 在浏览器中运行测试 通过 HTML 文件 一切正常 通过节点和业力运行它们我得到以下异常 我想在 node js 主机的 karma 中使用 Mocha 和 Ch
  • 可以在初始 DOM 解析期间/之前修改 DOM 吗?

    是否可以在初始 DOM 解析期间或之前修改 DOM 或者我是否必须等到 DOM 被解析和构建之后才能与其交互 更具体地说 是否有可能阻止 DOM 中的脚本元素使用用户脚本 内容脚本或 Chrome 或 Firefox 中的类似脚本运行 在解
  • 引导程序提前输入未填充承诺的响应

    我的引导程序预输入如下
  • 最大宽度调整以适应文本?

    不是最好的标题 但无论如何 我有一个元素max width和一些文字 如果文本长度超过一行所能容纳的长度 我会得到以下结果 My text here hello everyone 换句话说 它占据了完整的最大宽度 但由于单词向下移动 右侧有
  • 在打字稿中导入 json

    我是 typescript 的新手 在我的项目中 我们使用 typescript2 在我的要求之一中 我需要导入 json 文件 所以我创建了 d ts 文件如下 test d ts declare module json const va
  • Draggable JS Bootstrap 模式 - 性能问题

    对于工作中的项目 我们在 JavaScript 中使用 Bootstrap Modal 窗口 我们想让一些窗口可移动 但我们遇到了 JQuery 的性能问题 myModal draggable handle modal header Exa
  • 防止 iOS 键盘在 cordova 3.5 中滚动页面

    我正在使用 Cordova 3 5 和 jQuery mobile 构建 iOS 应用程序 我在大部分应用程序中禁用了滚动功能 但是 当我选择输入字段时 iOS 键盘会打开并向上滚动页面 我不想要这个功能 由于输入足够高 键盘不会覆盖它 我
  • 如何纠正流警告:解构(缺少注释)

    我正在编写一个小型 React Native 应用程序 并且正在尝试使用 Flow 但我无法在任何地方真正获得有关它的正确教程 我不断收到错误 destructuring Missing annotation 有关 station 这段代码
  • 如何制作没有 ng-repeat 的模板并使用 Angular-drag-and-drop-lists 将数据传递到 $scope?

    我想用角度拖放列表 https github com marceljuenemann angular drag and drop lists使用我自己的网格模板到所见即所得编辑器 如何构建我自己的 HTML 模板而不需要ng repeat因
  • DataTables row.add 到特定索引

    我正在替换这样的行项目 var targetRow entity row dataTable targetRow closest table dataTable DataTable dataTable row targetRow remov
  • 有没有办法在 onclick 触发时禁用 iPad/iPhone 上的闪烁/闪烁?

    所以我有一个有 onclick 事件的区域 在常规浏览器上单击时 它不会显示任何视觉变化 但在 iPad iPhone 上单击时 它会闪烁 闪烁 有什么办法可以阻止它在 iPad iPhone 上执行此操作吗 这是一个与我正在做的类似的示例
  • 从数据库检查数据的异步解决方案各种循环子句

    我想要做的是异步检查数据库并从中获取结果 在我的应用程序中我试图实现Asynchronously将此步骤解决为 从数据库中检查手机号码JsonArray循环子句的种类 Create JsonArray从结果 打印创建的数组 我学到了足够多的
  • 在移动设备上滚动

    这个问题更多的是一个建议研究 我确实希望它对其他人有帮助 并且它不会关闭 因为我不太确定在哪里寻求有关此事的建议 在过去的 6 个月里 我一直在进行移动开发 我有机会处理各种设备上的各种情况和错误 最麻烦的是滚动问题 当涉及到在网站的多个区
  • 如何创建适合屏幕宽度的等宽/高框? [复制]

    这个问题在这里已经有答案了 我正在尝试建立一个网站 其中有很多宽度和高度相等的框 例如 我有一个页面 其中并排有两个相同大小的框 简单的解决方案是将宽度和高度设置为 50vw 这在出现滚动条之前效果很好 我已经用谷歌搜索了几个小时 但无法理
  • Three.js 各种大小的粒子

    我是 Three js 的新手 正在尝试找出添加 1000 个粒子的最佳方法 每个粒子都有不同的大小和颜色 每个粒子的纹理是通过绘制画布创建的 通过使用粒子系统 所有粒子都具有相同的颜色和大小 为每个粒子创建一个粒子系统是非常低效的 有没有
  • 使用css bootstrap时如何仅向一列添加右边框?

    我正在尝试使用CSS引导框架 http getbootstrap com css tables在我的项目中 我正在使用带有以下类的表table table bordered table striped 我想删除除第一列之外的所有列的边框 这
  • 如何使用 crypto-js 解密 AES ECB

    我正在尝试将加密数据从 flash 客户端 发送到服务器端的 javascript 在 asp 中作为 jscript 运行 有几个 javascript Aes 库 但它们实际上没有文档记录 我正在尝试使用 crypto js 但无法让代
  • 在 Javascript 中连接空数组

    我正在浏览一些代码 我想知道这有什么用处 grid push concat row 根据我的理解 它等同于 grid push row 为什么要大惊小怪 连接 你想使用 concat当您需要展平数组并且没有由其他数组组成的数组时 例如 va
  • 在 CKEditor 中设置字体大小和字体系列

    我正在使用 ckeditor 我想问一下这个插件如何设置font family和font size 我尝试过使用 CKEDITOR config font defaultLabel Arial CKEDITOR config fontSiz
  • 如何使用asm.js进行测试和开发?

    最近我读到asm js规范 看起来很酷 但是是否有任何环境 工具来开发和测试这个工具 这还只是处于规范阶段吗 您可以尝试使用 emscripten 和 ASM JS 1 并从侧分支在 firefox 构建中运行它 有关 asm js 的链接

随机推荐

  • [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