ReactNative面试题

2024-06-03 05:58
文章标签 面试题 reactnative

本文主要是介绍ReactNative面试题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1 . 打印出a的值是?
if(true){let a = 1} alert(a)

答: a is not defined
let不存在变量提升,且作用域只在代码块
这样看你可能有点不太清楚,我们来格式化代码

if (true) {let a = 1
}
alert(a)

这样是不是一目了然了?! 博主第一看的的时候没有仔细看,匆匆就写了个1 ,尴尬.
扩展

1.var 语句用来声明一个或者多个变量,如果出现在函数体内,
那么他定义的是一个局部变量,作用域就是这个函数,2.let 语句声明一个块级作用域的本地变量,并且可选的将其初始化为一个值,
它声明的变量只能是全局或者整个函数块的3.const 与使用 let 语句定义的变量类似, 但是它声明的是常量,不能通过重新赋值更改,并且不能重复声明4.function 函数声明定义一个具有指定参数的函数,一个被函数声明创建的函数是一个 Function 对象,
具有 Function 对象的所有属性、方法和行为5.function* 这种声明方式(function关键字后跟一个星号)会定义一个生成器函数,
它返回一个 Generator 对象,生成器函数在执行时能中途退出,
后面又能重新进入继续执行。而且在函数内定义的变量的状态都会保留,不受中途退出的影响。6.async function 函数声明将定义一个异步函数,返回 AsyncFunction 对象。
调用 async 函数时会返回一个 Promise 对象。当这个 async 函数返回一个值时,
Promise 的 resolve 方法将会处理这个值;当 async 函数抛出异常时,
Promise 的 reject 方法将处理这个异常值。async 函数中可能会有 await 表达式,
这将会使 async 函数暂停执行,等待 Promise 正常解决后继续执行 async 函数并返回解决结果。

综上可见 : let是作用于块级的 , 出了这个块,其他地方就相当于没有这行代码,自然alert(a) 这个a也就是没定义过的了.

2 . const name = ‘mike’;const age = 18;const person = { [name]: true,[age]: true} 问:person的两个key分别是什么?

答 : mike,18
照例先格式化代码:

const name = {a: 'mike'};const age = 18;const person = {[name]: true,[age]: true};
console.log(person) //自己手动加的

打印出来发现,key是mike和18.
在对象字面量中可以使用中括号作为属性,表示属性也能是一个变量了.在ant-design的源码实现中,就大量使用了这种方式来拼接当前元素的className,例如:

let alertCls = classNames(prefixCls, {[`${prefixCls}-${type}`]: true,[`${prefixCls}-close`]: !this.state.closing,[`${prefixCls}-with-description`]: !!description,[`${prefixCls}-no-icon`]: !showIcon,[`${prefixCls}-banner`]: !!banner,}, className);

ant-design是一个认可度非常高的UI组件库,官方使用react的方式进行了实现,除此之外,还有vue也有对应的实现,有兴趣的同学可以去他们的官网了解学习。https://ant.design/index-cn

3.如下面代码实现,使用数组的reduce方法求和,给出4个参数的定义,并给出最终total的值
let total = [1, 2, 3, 4, 5].reduce((total, currentValue) => total + currentValue);

答 : 参数分别为:初始值,遍历时当前的值,当前值的索引,遍历的数组,15
先来了解一下reduce:
reduce() 方法接收一个函数作为累加器(accumulator),数组中的每个值(从左到右)开始合并,最终为一个值。

reduce 为数组中的每一个元素依次执行回调函数,不包括数组中被删除或从未被赋值的元素,
接受四个参数:初始值(或者上一次回调函数的返回值),当前元素值,当前索引,调用 reduce 的数组。回调函数第一次执行时,previousValue 和 currentValue 可以是一个值,
如果 initialValue 在调用 reduce 时被提供,那么第一个 previousValue 等于 initialValue ,
并且currentValue 等于数组中的第一个值;如果initialValue 未被提供,
那么previousValue 等于数组中的第一个值,currentValue等于数组中的第二个值。如果数组为空并且没有提供initialValue, 会抛出TypeError 。
如果数组仅有一个元素(无论位置如何)并且没有提供initialValue, 
或者有提供initialValue但是数组为空,那么此唯一值将被返回并且callback不会被执行。

再来看,我们现在第一个参数是previousValue, 是上一次回调函数返回的值而现在是第一次执行, 没有上一次的回调函数返回值,所以是数组的第一个值,currentValue是数组的第二个值, 之后箭头函数求和:1+2=3, 第一次算的结果是3,也就意味着下一次的previousValue即total是3,currentValue是数组第三个元素为3,求和为6, …
然后依次是6+4 , 10+6 最终为15 .

例如执行下面的代码

[0,1,2,3,4].reduce(function(previousValue, currentValue, index, array){
return previousValue + currentValue;
});
回调被执行四次,每次的参数和返回值如下表:

执行次数previousValuecurrentValueindexarrayreturn value
first call011[0,1,2,3,4]1
second call122[0,1,2,3,4]3
third call333[0,1,2,3,4]6
fourth call644[0,1,2,3,4]10

reduce 的返回值是回调函数最后一次被调用的返回值(10)。

4. reactJS中和子组件如何通信

答: 一般是控制子组件的显示状态,可以用改变props,
或者调用子组件的方法进行:子组件事件传递给父组件回调就好

5. reactJS兄弟组件之间如何通信

答 : 事件用通知:DeviceEventEmitter、数据传递刷新等用Redux, mobx ,数据库

6. 传入setState函数的第二个参数作用是什么

答 : setState方法调用刷新完毕后执行回调

7. reactJS中如何去写组件

答:
建议把生命周期写完整

export default class NAME extends React.Component{constructor(props){super(props);this.state={a:1 }}componentWillMount...componentDidMount......render...componentWillUnmount...
}
8. 下面的输出结果是?
window.name='window'
function foo(){
setTimeout(()=>{
alert('name:'+this.name)
},1000)}
foo.call({'name:foo'})

答: 箭头函数初始化时就绑定了作用域,为foo函数的代码块,所以输出为foo

9. 使用es6的class封装一个Car对象,有name和color两个属性,以及一个print方法,实现以下结果:let myCar = new Car(‘奇瑞’,’红色’);myCar.print(); // 打印出汽车名称:奇瑞 颜色:红色

答:

class Car = {super(name,color){this.name=name;this.color=color;}print(){console.log(`汽车名称`${this.name}颜色:${this.color})}
}
10. 完成isNumber函数,返回Promise对象给调用者。isNumber(num){coding….}

答:

isNumber(num) {return new Promise((resolve, reject) => {resolve(typeof num == 'number')})}
11. 使用async、await以及Promise实现调用asyncPrint函数后可以指定多少毫秒后打印出传入的值,比如asyncPrint(‘hello’,500),实现500ms后输出hello

答:

delayFunc() {return new Promise((resolve) => {setTimeout(() => {resolve}, delay)})}asyncPrint = async (str, delay) => {await this.delayFunc(delay);alert(str)}
12. reactJS在生命周期中哪一部调用AJAX请求?

答 : ComponentDidMount

13. reactJS的props.children.map函数来遍历会收到异常提示,为什么?应该如何遍历?

答 : this.props.children 的值有三种可能:如果当前组件没有子节点,它就是 undefined;如果有一个子节点,数据类型是 object ;如果有多个子节点,数据类型就是 array 。系统提供React.Children.map()方法安全的遍历子节点对象

这篇关于ReactNative面试题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1026168

相关文章

荣耀嵌入式面试题及参考答案

在项目中是否有使用过实时操作系统? 在我参与的项目中,有使用过实时操作系统。实时操作系统(RTOS)在对时间要求严格的应用场景中具有重要作用。我曾参与的一个工业自动化控制项目就采用了实时操作系统。在这个项目中,需要对多个传感器的数据进行实时采集和处理,并根据采集到的数据及时控制执行机构的动作。实时操作系统能够提供确定性的响应时间,确保关键任务在规定的时间内完成。 使用实时操作系统的

一些其他面试题

阿里二面:那你来说说定时任务?单机、分布式、调度框架下的定时任务实现是怎么完成的?懵了。。_哔哩哔哩_bilibili 1.定时算法 累加,第二层每一个格子是第一层的总时间400 ms= 20 * 20ms 2.MQ消息丢失 阿里二面:高并发场景下引进消息队列有什么问题?如何保证消息只被消费一次?真是捏了一把汗。。_哔哩哔哩_bilibili 发送消息失败

zookeeper相关面试题

zk的数据同步原理?zk的集群会出现脑裂的问题吗?zk的watch机制实现原理?zk是如何保证一致性的?zk的快速选举leader原理?zk的典型应用场景zk中一个客户端修改了数据之后,其他客户端能够马上获取到最新的数据吗?zk对事物的支持? 1. zk的数据同步原理? zk的数据同步过程中,通过以下三个参数来选择对应的数据同步方式 peerLastZxid:Learner服务器(Follo

java常用面试题-基础知识分享

什么是Java? Java是一种高级编程语言,旨在提供跨平台的解决方案。它是一种面向对象的语言,具有简单、结构化、可移植、可靠、安全等特点。 Java的主要特点是什么? Java的主要特点包括: 简单性:Java的语法相对简单,易于学习和使用。面向对象:Java是一种完全面向对象的语言,支持封装、继承和多态。跨平台性:Java的程序可以在不同的操作系统上运行,称为"Write once,

【Kubernetes】常见面试题汇总(三)

目录 9.简述 Kubernetes 的缺点或当前的不足之处? 10.简述 Kubernetes 相关基础概念? 9.简述 Kubernetes 的缺点或当前的不足之处? Kubernetes 当前存在的缺点(不足)如下: ① 安装过程和配置相对困难复杂; ② 管理服务相对繁琐; ③ 运行和编译需要很多时间; ④ 它比其他替代品更昂贵; ⑤ 对于简单的应用程序来说,可能不

【附答案】C/C++ 最常见50道面试题

文章目录 面试题 1:深入探讨变量的声明与定义的区别面试题 2:编写比较“零值”的`if`语句面试题 3:深入理解`sizeof`与`strlen`的差异面试题 4:解析C与C++中`static`关键字的不同用途面试题 5:比较C语言的`malloc`与C++的`new`面试题 6:实现一个“标准”的`MIN`宏面试题 7:指针是否可以是`volatile`面试题 8:探讨`a`和`&a`

Laravel 面试题

PHP模块 PHP7 和 PHP5 的区别,具体多了哪些新特性? 性能提升了两倍 结合比较运算符 (<=>) 标量类型声明 返回类型声明 try…catch 增加多条件判断,更多 Error 错误可以进行异常处理 匿名类,现在支持通过new class 来实例化一个匿名类,这可以用来替代一些“用后即焚”的完整类定义 …… 了解更多查看文章底部链接 PHP7 新特性 为什么 PHP

【吊打面试官系列-Redis面试题】说说 Redis 哈希槽的概念?

大家好,我是锋哥。今天分享关于 【说说 Redis 哈希槽的概念?】面试题,希望对大家有帮助; 说说 Redis 哈希槽的概念? Redis 集群没有使用一致性 hash,而是引入了哈希槽的概念,Redis 集群有 16384 个哈希槽,每个 key 通过 CRC16 校验后对 16384 取模来决定放置哪个槽, 集群的每个节点负责一部分 hash 槽。

【Kubernetes】常见面试题汇总(一)

目录 1.简述 etcd 及其特点? 2.简述 etcd 适应的场景? 3.简述什么是Kubernetes? 4.简述 Kubernetes和 Docker的关系? 1.简述 etcd 及其特点? (1)etcd 是Core0s 团队发起的开源项目,是一个管理配置信息和服务发现(service discovery)的项目,它的目标是构建一个高可用的分布式键值(keyvalue)数据

2018秋招C/C++面试题总结

博主从8月中旬开始大大小小面试了十几家公司,至今也许是告一段落吧,希望后面会有好结果,因此总结记录一些C/C++方向常见的问题。和大家一起学习! 参考了互联网的各种资源,自己尝试归类整理,谢谢~ 一、C和C++的区别是什么? C是面向过程的语言,C++是在C语言的基础上开发的一种面向对象编程语言,应用广泛。 C中函数不能进行重载,C++函数可以重载 C++在C的基础上增添类,C是一个结构