阿里前端面试题 - 中国红客帝国官网-Honker EmPire For China - Powered by H.E.C
网络爱好者的栖息之地,让我们的网络技术更上一层楼!!!

阿里前端面试题

无法 资源分享

1.关于 JavaScript 中的函数,以下说法正确的有:

        

A.在已知名称的函数的函数体声明语句之外,不能获知该函数的形参个数

        

B.在函数内部,可以通过 arguments 获取函数的实参个数

        

C.因为 arguments Array 的实例,因此可以使用数组的方法去操作它

        

D.对同一个函数 foo,使用 new foo() foo() 调用的结果是一样的

        

E.如果一个函数中没有使用 return 语句,则它默认返回 null

        

F.如果函数的实参是一个引用对象,则对应形参会和该实参指向同一个对象

 

 

2.关于浏览器资源加载,下列说法哪些是错误的?

        

A.link 标签是专门用来加载 CSS 文件的标签

        

B.浏览器允许并行加载资源,所以js的加载、执行时间不会影响后续资源的加载

        

C.浏览器不允许其他资源与 CSS 并行加载,所以 CSS 加载完成前,其后续的js脚本不会被执行

        

D.CSS 会阻塞 DOM 渲染,所以最好将引入 CSS link 标签放置在 body 结尾处

        

E.@import CSS3 引入的新加载方法

        

F.script 标签的 defer 属性和 async 属性,都是表示异步加载的属性,其不同点在于,async 属性不会导致脚本执行乱序,而defer

 

 

3.以下关于 JavaScript delete 操作符描述正确的是:

        

使用 var 声明的属性不能从全局作用域或函数的作用域中删除

        

Math.PI 可以被 delete 操作删除

        

如果删除的属性在对象上不存在,会抛出异常

        

如果删除成功,则会返回改对象属性的原始值,否则返回 false

        

delete 操作只会在对象自身的属性上起作用,不会影响从原型链上继承过来的属性 

 

任何用letconst声明的属性不能够从它被声明的作用域中删除

 

 

4.以下代码中,哪些能够使得 a 属性的值变为 2

1.png

 

func.call(foo, 2)

        

func.apply(foo, 2)

        

foo.bar(2)

        

func.bind(foo)(2)

        

func(2)

        

func.call(null, 2)

 

 

5.下面字符串和正则表达式 /[ABCD]{2,3}[a-z0-9]+/ 匹配的是:

        

BC

        

CD1

        

CCab

        

CCab

        

ABD5

        

CDEv

 

 

6.以下关于 ES6 中变量声明的说法错误的是:

        

通过 let 声明的变量可以在后期重新赋值

        

通过 let 声明的变量只在当前块级作用域内生效

        

通过 const 声明的变量重新赋值会导致报错

        

在同一块级作用域内不能通过 let 声明2个同名的变量

        

块级作用域内通过 let 声明的变量不能在外部访问

        

let var 一样存在变量声明提升的问题

 

 

7.以下哪个标签不属于 svg 元素:

        

<circle>

        

<ellipse>

        

<rectangle>

        

<marker>

        

<polyline>

        

<animate>

 

 

8.以下关于 JavaScript 中对象的描述正确的是:

        

在新的标准中,JavaScript 可以通过 class 关键字来定义一个类

        

JavaScript 对象的继承链中必然会有 Object

        

typeof 一个变量返回为 'object', 可以判定这个变量是原生对象

        

所有的对象都需要通过 new 来构造

        

ES6 中的 extends 继承方式底层实现并不依赖于原型对象和原型链JavaScript 中所有的对象都有 prototype 属性

 

 

9.关于 ES6 的模块(Module)实现,以下表述正确的是?

        

ES6 Module 的实现和 ES6 之前的 CommonJS 方案一致

        

ES6 Module 中禁止 this 指向全局对象

        

ES6 Module 内部的值一旦在 export 之后就无法再被修改

        

ES6 Module 在一个文件中 import 同一个模块,模块被 import 几次就会执行几次

        

ES6 Module 目前还没有浏览器实现,都必须要通过 babel 转换之后才能使用

        

ES6 Module 默认不会启用严格模式

 

 

10.在常见的 HTTP 请求的说法不正确的是的是:

        

403 状态码表示 Forbidden(资源不能够使用)

        

Expires, Cache-ControlLast-Modified 都是和缓存相关的头

        

GET 如果有请求参数,请求参数是在 HTTP 请求行的资源路径上

        

HTTP 请求中常见的方法包含 GET / POST / UPDATE / DELETE

        

GET 请求在客户端中能够被缓存

        

POST 请求查询字符串(名称/值对)是在 POST 请求的 HTTP 消息主体中发送的

 

 

11.请使用面向对象的思路,实现一个表格组件,满足如下条件:(可使用任意前端框架或原生 JavaScript 实现,但不得使用已有的表格组件)

const columns = [

  { text: 'Name', key: 'name' },

  { text: 'Age', key: 'age' },

  { text: 'Gender', key: 'gender' }

];

const data = [

  { name: 'Tom', age: 5, gender: 1 },

  { name: 'Jerry', age: 2, gender: 0 },

];

提供一个传入表头配置的方式,将 columns 渲染为表头

提供一个传入数据的方式,将 data 渲染为表格的两行,并且单元格与对应的表头列对齐

提供一种实现自定义单元格的机制,能够把 gender 信息转化为文本,0 转化为 Female1 转化为 Male

将表格主体的奇数行背景色设置为 #c0c0c0

 

 

12.下面的 data 数组里的每一个元素都是一个子数组, 现在需要将这些子数组里的元素进行交叉排列后填充到下面的表格内, 表格可以通过 sheet.setValue(row, column, value) 的形式来填充, 请完成下面的 fillSheet 函数。注意:

1. data 数组的层级关系只包含2级,但是data数组和子数组的长度(子元素个数)都是不确定的

2. 不用具体实现表格,直接调用 sheet.setValue 方法填值即可,如果你需要验证最终效果,可以直接使用逗号(cell)和换行(row)来示意

2.png

 

var data = [

    ['CNY'],

    [2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024],

    ['cdeshiBBu', 'hmceshi']

];

 

  13.小明所在的公司主要是做智能楼宇建设的,他们目前接到这样一个需求:需要做一个手机端的H5应用,物业人员在刚建成的大楼做质量巡检的时候发现的一些设计、装修、设备损坏等问题时能够通过拍照并附带文字备注的形式将问题记录下来并上上传到管理平台;但是很多楼宇的网络环境比较复杂,手机网络覆盖不完全,有的地方信号很弱或者没有信号。如果你是这个应用的前端架构师,你会如何设计这个H5应用在复杂网络环境下的前端架构,以满足小明公司遇到的业务场景提高用户体验?

标签: 暂无标签

免责声明:

本站提供的资源,都来自网络,版权争议与本站无关,所有内容及软件的文章仅限用于学习和研究目的。不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负,我们不保证内容的长久可用性,通过使用本站内容随之而来的风险与本站无关,您必须在下载后的24个小时之内,从您的电脑/手机中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。侵删请致信E-mail:22365412@qq.com

同类推荐
评论列表