【华为OD技术面试真题 - 技术面】- 前端面试题(1)

本文介绍了华为OD面试中的前端技术面试题,涵盖CSS盒模型、元素脱离文档流、JavaScript内存中的堆栈概念、原型与原型链、变量声明关键字的区别、箭头函数与普通函数的不同,以及用户名输入框的已存在性校验实现。同时,讨论了CSS中元素的垂直和水平居中方法、XSS和CSRF攻击,以及移动端与PC端开发的区别。

华为OD面试真题题库

专栏:华为OD面试真题题库
目录: 最新华为OD面试手撕代码真题目录以及八股文真题目录

封面

1. 请详细解释一下CSS中的盒模型概念

CSS盒模型(Box Model)是CSS布局的基础,它描述了元素在网页布局中所占的空间方式。每个HTML元素可以看作是一个盒子,由四个部分组成:内容(Content)、内边距(Padding)、边框(Border)和外边距(Margin)。

  1. 内容(Content):这是元素的实际内容,如文本、图片等。

  2. 内边距(Padding):内容周围的空白区域,内边距是透明的。

  3. 边框(Border):围绕在内边距和内容外的边界,边框是可见的。

  4. 外边距(Margin):边框外部的空白区域,用于分隔元素与其他元素,外边距是透明的。

盒模型的总宽度和总高度计算方式如下:

总宽度 = 左边距 + 左边框 + 左内边距 + 内容宽度 + 右内边距 + 右边框 + 右边距
总高度 = 上边距 + 上边框 + 上内边距 + 内容高度 + 下内边距 + 下边框 + 下边距

需要注意的是,CSS有两种盒模型:标准模型和IE模型(又称怪异模型)。两者的主要区别在于宽度和高度的计算方式不同。在标准模型中,width和height指的是内容的宽度和高度;而在IE模型中,width和height包含了内容、内边距和边框的宽度和高度。可以通过box-sizing属性来指定使用哪种盒模型,如box-sizing: content-box表示使用标准模型,box-sizing: border-box表示使用IE模型。

2.请列举哪些CSS属性可以使元素脱离文档流

  1. 使用float属性:当元素被设置为float(如float: left或float: right)时,它会脱离文档流,并向左或向右浮动。其他文档流中的元素会围绕它流动。需要注意的是,浮动元素之后通常需要清除浮动,以防止布局混乱。

  2. 使用position属性:当元素的position属性被设置为absolute或fixed时,元素会脱离文档流。绝对定位元素的位置相对于最近的已定位祖先元素(如果没有则相对于初始包含块),固定定位元素的位置相对于视口。

  3. 使用display属性:当元素的display属性被设置为flex或grid时,其子元素会脱离文档流,而按照弹性布局或网格布局进行排列。

示例代码:

/* 使用float属性 */
### 华为OD技术面试真实题目及答案 #### 技术常见问题与解答 #### 跨域请求解决方案 在前端开发中,跨域请求问题是常见的挑战之一。以下是几种常用的解决跨域问题的方法: - **CORS(跨源资源共享)** CORS是一种基于HTTP头的机制,允许服务器声明哪些资源可以被其他域名下的页访问。通过设置`Access-Control-Allow-Origin`响应头来指定允许访问该资源的外部域名[^2]。 ```javascript // 浏览器发起跨域请求的例子 fetch('https://api.example.com/data', { method: 'GET', mode: 'cors' }) .then(response => response.json()) .then(data => console.log(data)); ``` #### Java基础知识问答 关于Java的基础知识也是华为OD技术面试中的一个重要部分。下是一些典型的问题及其解答: - **Java堆栈的概念** Java程序运行时会创建两种类型的内存区域:堆和栈。其中,**栈(Stack)**用于存储局部变量、方法参数以及返回地址等短期存在的数据;而**堆(Heap)**则用来保存对象实例和其他动态分配的数据结构。两者的主要区别在于生命周期管理和垃圾回收机制的不同[^3]。 - **线程安全的Map实现类** 在多线程环境中使用的线程安全映射表主要有以下几种: - `ConcurrentHashMap`: 提供高效的并发读写操作支持; - `Hashtable`: 是较早版本中提供的同步化哈希表容器; - `Collections.synchronizedMap()`: 可以将任意Map转换成具有基本同步特性的新Map实例。 - **常用的数据结构** 对于日常工作或算法练习来说,经常接触到的一些重要Java集合框架成员包括但不限于: - List接口下实现了数组列表(`ArrayList`)、链表(`LinkedList`); - Set接口提供了不可重复元素集合的功能, 如HashSet; - Map接口定义了键值对关联关系, 上述提到过的ConcurrentHashMap就是其一种具体形式. - **ArrayList特性** ArrayList内部采用连续空间存储元素,默认情况下按照插入顺序保持稳定排列,因此它是**有序**的序列容器. ```java List<String> list = new ArrayList<>(); list.add("first"); list.add("second"); System.out.println(list); // 输出:[first, second] ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

算法大师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值