电子商务网站建设的案例分析题,中小企业怎么优化网站,去年做哪个网站致富,竹子建站seo设置怎么做RN面试题1.React Native相对于原生的ios和Android有哪些优势#xff1f;1.性能媲美原生APP 2.使用JavaScript编码#xff0c;只要学习这一种语言 3.绝大部分代码安卓和IOS都能共用 4.组件式开发#xff0c;代码重用性很高 5.跟编写网页一般#xff0c;修改代码后即可自动刷…RN面试题1.React Native相对于原生的ios和Android有哪些优势1.性能媲美原生APP 2.使用JavaScript编码只要学习这一种语言 3.绝大部分代码安卓和IOS都能共用 4.组件式开发代码重用性很高 5.跟编写网页一般修改代码后即可自动刷新不需要慢慢编译节省很多编译等待时间 6.支持APP热更新更新无需重新安装APP缺点 内存占用相对较高 版本还不稳定一直在更新现在还没有推出稳定的1.0版本1 优势性能方面媲美原生App。绝大部分代码同时适用IOS/Android一套代码两套系统适用。使用Javascript编码上手容易。组件式开发易于管理维护代码复用率高。代码更改后会自动刷新节省等待时间。支持热更新更新无需重新安装App。2 劣势RN组件库不全第三方组件库也不全当遇到某些特殊功能需要花费大量时间、精力完成性能方面也无法媲美原生还是会有一些损耗特别是大数据交换时系统适配方面 IOS版本略好android发展较慢编程方面 ios和android代码并非通用有可能需要维护两套代码或者在代码中做一些条件判断或编译开发人员还是需要会原生开发不然自定义组件无法编码开发复杂应用必须精通原生开发开发效率并不比原生开发的熟手快。很多问题包括兼容性问题解决任然需要原生开发。升级RN版本或需要大动干戈尤其向下兼容不好2、RN生命周期propsstatecomponentWillMountrendercomponentDidMountComponentWillReceivePropsshouldComponentUpdatecomponentWillUpdatecomponentDidUpdatecomponentWillUnmount生命周期 调用次数 能否使用 setSate() getDefaultProps 1(全局调用一次) 否 getInitialState 1 否 componentWillMount 1 是 render 1 否 componentDidMount 1 是 componentWillReceiveProps 0 是 shouldComponentUpdate 0 否 componentWillUpdate 0 否 componentDidUpdate 0 否 componentWillUnmount 1 否3.当你调用setState的时候发生了什么事当调用 setState 时React会做的第一件事情是将传递给 setState 的对象合并到组件的当前状态。 这将启动一个称为和解reconciliation的过程。 和解reconciliation的最终目标是以最有效的方式根据这个新的状态来更新UI。 为此React将构建一个新的 React 元素树您可以将其视为 UI 的对象表示。 一旦有了这个树为了弄清 UI 如何响应新的状态而改变React 会将这个新树与上一个元素树相比较 diff 。 通过这样做 React 将会知道发生的确切变化并且通过了解发生什么变化只需在绝对必要的情况下进行更新即可最小化 UI 的占用空间。4.props和state相同点和不同点1.不管是props还是state的改变都会引发render的重新渲染。 2.都能由自身组件的相应初始化函数设定初始值。不同点 1.初始值来源state的初始值来自于自身的getInitalStateconstructor函数props来自于父组件或者自身getDefaultProps若key相同前者可覆盖后者。2.修改方式state只能在自身组件中setState不能由父组件修改props只能由父组件修改不能在自身组件修改。3.对子组件props是一个父组件传递给子组件的数据流这个数据流可以一直传递到子孙组件state代表的是一个组件内部自身的状态只能在自身组件中存在。5.shouldComponentUpdate 应该做什么其实这个问题也是跟reconciliation有关系。 “和解 reconciliation 的最终目标是以最有效的方式根据新的状态更新用户界面”。 如果我们知道我们的用户界面UI的某一部分不会改变 那么没有理由让 React 很麻烦地试图去弄清楚它是否应该渲染。 通过从 shouldComponentUpdate 返回 false React 将假定当前组件及其所有子组件将保持与当前组件相同6、UI方面的圆角图片点击事件阴影FlatList常用属性和用法extraData FlatList data{DATA} renderItem{renderItem} keyExtractor{item item.id} /FlatList和ScrollView其实最大的区别就是在渲染上的区别。ScrollView会一次性的把所有内容全部渲染出来而FlatList会惰性渲染子元素只在它们将要出现在屏幕中时开始渲染。他们都是基于VirtualizedList的一个封装。7. 使用技巧不定参数不定参数是在函数中使用命名参数同时接收不定数量的未命名参数。这只是一种语法糖在以前的javascript中我们可以通过arguments变量来达到这一目的。不定参数的格式是三个据点后跟代表所有不定参数的变量名。比如下面这个例子中...x代表了所有传入add函数的参数。模板字符串不会转义特殊字符因此需要自己处理其中的安全隐患。模板字符串并不能够代替模板框架原因是模板字符串没有内置的循环语法和条件语句。因此对于常规的普通字符串拼接我们可以使用它来完成会让你的代码看起来更简洁一些。${name}8. let 和const关键字 我们可以把let看成var只是它定义的变量被限定在了特定范围内才能使用而离开这个范围则无效。const则更直观从来定义常量。9、reactJS中和子组件如何通信答: 一般是控制子组件的显示状态可以用改变props或者调用子组件的方法进行:子组件事件传递给父组件回调就好10、何时在javascript中使用reduce()、map()、foreach()和filter()reduce()reduce() 方法接收一个函数作为累加器数组中的每个值从左到右开始缩减最终计算为一个值。map()、foreach()都是用于遍历List、Arrayfilter()方法创建一个新的数组新数组中的元素是通过检查指定数组中符合条件的所有元素。11、本地缓存AsyncStorage 它是一个简单、异步、持久化的键值对存储系统它对于App来说是全局的。可以用来替代LocalStorage。官网推荐在此基础上封装一层不要直接使用。在IOS上AsyncStorage 在原生端的实现是把较小值存放在序列化的字典中而把较大值写入单独的文件。在Android上AsyncStorage会尝试使用RocksDB,或退而选择SQLite。实践多个结果加载耗时操作需要统一结果如何处理 Promise.all组件封装export default class NAME extends React.Component{ constructor(props){ super(props); this.state{ a:1 } } componentWillMount... componentDidMount... ... render ... componentWillUnmount...}代码习惯StyleSheet.create高级React Hooks用法https://www.jianshu.com/p/d600f749bb19动画使用12、JavaScript面试题1.js中let和const有什么用在现代js中letconst是创建变量的不同方式。 在早期的js中咱们使用var关键字来创建变量。 letconst关键字是在ES6版本中引入的其目的是在js中创建两种不同类型的变量一种是不可变的另一种是可变的。const:它用于创建一个不可变变量。不可变变量是指其值在程序的整个生命周期中永不改变的变量。let: let用于创建一个可变变量可变变量是像var这样的普通变量可以任意次数地更改。2. JS 中的主要有哪几类错误JS有三类的错误:加载时错误加载web页面时出现的错误(如语法错误)称为加载时错误它会动态生成错误。运行时错误由于滥用html语言中的命令而导致的错误。逻辑错误这些错误是由于对具有不同操作的函数执行了错误的逻辑而导致的3. 如何通过类别名获取 dom 元素在 JS 中使用document.getElementsByClassName() 方法来获取具有类名的元素。4.JS的作用域链是什么及其作用一般情况下变量取值到创建这个变量的函数的作用域中取值。但是如果在当前作用域中没有查到值就会向上级作用域去查直到查到全局作用域这么一个查找过程形成的链条就叫做作用域链。JS中的作用域链主要用于解析变量的值。 如果没有这个在不同的作用域内定义了许多变量JS很难为变量选择某个值。5.解释JS中的MUL函数MUL表示数的简单乘法。在这种技术中将一个值作为参数传递给一个函数而该函数将返回另一个函数将第二个值传递给该函数然后重复继续。例如:x*y*z可以表示为function mul (x) { return function (y) { return function (z) { return x * y * z;}}
}6.用纯JS编写一个程序来反转字符串使用内置函数内置函数reverse()直接反转字符串。strjQuery;
str str.split()
str str.reverse()
str str.join()
alert(str);首先将字符串拆分为数组然后反转数组最近将字符连接起来形成字符串。使用循环:首先计算字符串中的字符数然后对原始字符串应用递减循环该循环从最后一个字符开始打印每个字符直到count变为零。7.JS中如何将页面重定向到另一个页面东莞vi设计https://www.houdianzi.com/dgvi/https://www.houdianzi.com/dgvi/ 豌豆资源网站大全https://55wd.com使用 location.hrefwindow.location.href “https://www.onlineinterviewquestions.com/”使用 location.replace window.location.replace( https://www.onlineinterviewquestions.com/;);8. 列出JS中的一些设计模式:设计模式是软件设计中常见问题的通用可重用解决方案以下是一些设计模式是创建模式该模式抽象了对象实例化过程。结构型模式这些模式处理不同的类和对象以提供新功能。行为模式也称发布-订阅模式定义了一个被观察者和多个观察者的、一对多的对象关系。并行设计模式这些模式处理多线程编程范例。架构设计模式这些模式用于处理架构设计。9. JS中的Array.splice()和Array.slice()方法有什么区别话不多说来看第一个例子var arr[0,1,2,3,4,5,6,7,8,9];//设置一个数组
console.log(arr.slice(2,7));//2,3,4,5,6
console.log(arr.splice(2,7));//2,3,4,5,6,7,8
//由此我们简单推测数量两个函数参数的意义,
slice(start,end)第一个参数表示开始位置,第二个表示截取到的位置(不包含该位置)
splice(start,length)第一个参数开始位置,第二个参数截取长度接着看第二个var xy[0,1,2,3,4,5,6,7,8,9]
console.log(x.slice(2,5));//2,3,4
console.log(x);[0,1,2,3,4,5,6,7,8,9]原数组并未改变
//接下来用同样方式测试splice
console.log(y.splice(2,5));//2,3,4,5,6
console.log(y);//[0,1,7,8,9]显示原数组中的数值被剔除掉了slice和splice虽然都是对于数组对象进行截取,但是二者还是存在明显区别,函数参数上slice和splice第一个参数都是截取开始位置,slice第二个参数是截取的结束位置(不包含),而splice第二个参数(表示这个从开始位置截取的长度),slice不会对原数组产生变化,而splice会直接剔除原数组中的截取数据!10.如何在JS中动态添加/删除对象的属性咱们可以使用object.property_name value向对象添加属性delete object.property_name 用于删除属性。例如let user new Object();
// adding a property
user.nameAnil;
user.age 25;
console.log(user);
delete user.age;
console.log(user);11.解释一下什么是 promise promise是js中的一个对象用于生成可能在将来产生结果的值。 值可以是已解析的值也可以是说明为什么未解析该值的原因。promise 可以有三种状态:pending初始状态既不是成功也不是失败fulfilled意味着操作完全成功rejected意味着操作失败一个等待状态的promise对象能够成功后返回一个值也能失败后带回一个错误当这两种情况发生的时候处理函数会排队执行通过then方法会被调用。12. 数组去重复的方法有哪些1.使用 setfunction uniquearray(array) { let unique_array Array.from(set(array)) return unique_array;
}2.使用 filterfunction unque_array (arr) {let unique_array arr.filter(function(elem, index, self) {return index self.indexOf(elem);})return unique_array;
}console.log(unique_array(array_with_duplicates));3.使用 for 循环Array dups_names [Ron, Pal, Fred, Rongo, Ron];
function dups_array(dups_names) {let unique {};names.forEach(function(i) {If (!unique[i]) {unique[i] true; }});
return Object.keys(unique);} // Ron, Pal, Fred, Rongo
Dups_array(names);13. undefinednull 和 undeclared 有什么区别1.null表示没有对象即该处不应该有值转为数值时为0。典型用法是1 作为函数的参数表示该函数的参数不是对象。2 作为对象原型链的终点。2.undefined表示缺少值就是此处应该有一个值但是还没有定义转为数值时为NaN。典型用法是1变量被声明了但没有赋值时就等于undefined。2) 调用函数时应该提供的参数没有提供该参数等于undefined。3对象没有赋值的属性该属性的值为undefined。4函数没有返回值时默认返回undefined。3.undeclaredjs语法错误没有申明直接使用js无法找到对应的上下文。14.列出JS基本和非基本数据类型之间的一些区别1.目前JS中有6种基本数据类型: Undefined、Null、Boolean、Number、Symbol 和 String。还有1种复杂的数据类型————ObjectObject本质上是由一组无序的名值对组成的。Object、Array和Function则属于引用类型。2.基本数据类型是不可变的而非基本数据类型是可变的。3.基本数据类型是不可变的因为它们一旦创建就无法更改但非基本数据类型刚可更改意味着一旦创建了对象就可以更改它。4.将基本数据类型与其值进行比较这意味着如果两个值具有相同的数据类型并具有相同的值那么它们是严格相等的。5.非基本数据类型不与值进行比较。例如如果两个对象具有相同的属性和值则它们严格不相等。15. 如何在现有函数中添加新属性只需给现有函数赋值就可以很容易地在现有函数中添加新属性。例如现有一个对象person通过下面的代码来为 person 添加新的属性person.country “India”;16. JS中的深拷贝与浅拷贝的区别深拷贝递归地复制新对象中的所有值或属性而拷贝只复制引用。在深拷贝中新对象中的更改不会影响原始对象而在浅拷贝中新对象中的更改原始对象中也会跟着改。在深拷贝中原始对象不与新对象共享相同的属性而在浅拷贝中它们具有相同的属性。17. 如何在JavaScript中每x秒调用一个函数在JS中咱们使用函数 setInterval() 在每x秒内调用函数。如setInterval(function (){ alert(Hello); }, 3000);18. 解释一下JS的展开操作符展开运算符在需要多个参数/变量/元素的位置展开表达式它用三个点...。如var mid [3, 4];
var newarray [1, 2, ...mid, 5, 6];
console.log(newarray);
// [1, 2, 3, 4, 5, 6]19. JS中的宿主对象与原生对象有何不同宿主对象:这些是运行环境提供的对象。这意味着它们在不同的环境下是不同的。例如浏览器包含像windows这样的对象但是Node.js环境提供像Node List这样的对象。原生对象:这些是JS中的内置对象。它们也被称为全局对象因为如果使用JS内置对象不受是运行环境影响。20. 解释JS中的高阶高阶函数是JS函数式编程的最佳特性。它是以函数为参数并返回函数作为结果的函数。一些内置的高阶函数是map、filter、reduce 等等。21. JS 中 和 区别是什么1、对于string,number等基础类型和有区别1不同类型间比较之比较“转化成同一类型后的值”看“值”是否相等如果类型不同其结果就是不等。2同类型比较直接进行“值”比较两者结果一样。2、对于Array,Object等高级类型和没有区别进行“指针地址”比较。3、基础类型与高级类型和有区别1对于将高级转化为基础类型进行“值”比较。2因为类型不同结果为false。22. JS中的匿名函数是什么匿名函数就是没有函数名的函数如(function(x, y){alert(x y);
})(2, 3);这里创建了一个匿名函数(在第一个括号内)第二个括号用于调用该匿名函数并传入参数。23. 是否可以在JS中执行301重定向JS完全运行在客户端上。301是服务器作为响应发送的响应代码。因此在JS中不可能执行301重定向。24. 解释JS中的事件冒泡和事件捕获事件捕获和冒泡: 在html DOM API中有两种事件传播方法它们决定了接收事件的顺序。两种方法是事件冒泡和事件捕获。第一个方法事件冒泡将事件指向其预期的目标第二个方法称为事件捕获其中事件向下到达元素。事件捕获捕获过程很少被使用但是当它被使用时它被证明是非常有用的。这个过程也称为滴流模式。在这个过程中事件首先由最外层的元素捕获然后传播到最内部的元素。例如:divulli/li/ul
/div从上面的示例中假设单击事件发生在li元素中在这种情况下捕获事件将首先处理div然后处理ul最后命中目标元素li。事件冒泡冒泡的工作原理与冒泡类似事件由最内部的元素处理然后传播到外部元素。divulli/li/ul
/div从上面的例子中假设click事件确实发生在冒泡模型中的li元素中该事件将首先由li处理然后由ul处理最后由div元素处理。24. 如何将文件的所有导出作为一个对象import * as objectname from ‘./file.js’用于将所有导出的成员导入为对象。 可以使用对象的点.运算符来访问导出的变量或方法如objectname.member1;
objectname.member2;
objectname.memberfunc();25. 解释一下什么是箭头函数箭头函数是在es6或更高版本中编写函数表达式的简明方法。箭头函数不能用作构造函数也不支持thisargumentssuper或new.target关键字它最适合非方法函数。 通常箭头函数看起来像 const function_name {}。const greet(){console.log(hello);}greet();25 解释 JS 中的提升JS允许将声明移动到顶部的默认行为称为提升。JS中创建函数的两种方法是函数声明和函数表达式。函数声明具有特定参数的函数称为函数声明在JS中创建变量称为声明。如hoisted(); // logs foo
function hoisted() {console.log(foo);
}函数表达式当使用表达式创建函数时称为函数表达式。如notHoisted(); // TypeError: notHoisted is not a function
var notHoisted function() {console.log(bar);
};26. module.exports 和 exports 之间有什么区别module和exports是Node.js给每个js文件内置的两个对象。可以通过console.log(module)和console.log(exports)打印出来。如果你在main.js中写入下面两行然后运行$ node main.js:console.log(exports);//输出{}
console.log(module);//输出Module {..., exports: {}, ...} 注...代表省略了其他一些属性从打印咱们可以看出module.exports和exports一开始都是一个空对象{}实际上这两个对象指向同一块内存。这也就是说module.exports和exports是等价的有个前提不去改变它们指向的内存地址。例如exports.age 18和module.export.age 18这两种写法是一致的都相当于给最初的空对象{}添加了一个属性通过require得到的就是{age: 18}。27. import 和 exports 是什么import和exports 帮助咱们编写模块化的JS代码。使用import和exports咱们可以将代码分割成多个文件。import只允许获取文件的某些特定变量或方法。可以导入模块导出的方法或变量。 //index.jsimport name,age from ./person; console.log(name);console.log(age);//person.jslet name Sharad, occupationdeveloper, age 26;export { name, age}; 28. 列出一些单元测试框架下面是一些最流行的JS单元测试框架:Unit.jsJasmineKarmaChaiAVAMochaJSUnitQUnitJest29. JS中有哪些不同类型的弹出框可用在JS中有三种类型的弹出框可用分别是AlertConfirmPrompt30. 如何将 JS 日期转换为ISO标准toISOString() 方法用于将js日期转换为ISO标准。 它使用ISO标准将js Date对象转换为字符串。如var date new Date();
var n date.toISOString();
console.log(n);
// YYYY-MM-DDTHH:mm:ss.sssZ31. 如何在JS中克隆对象Object.assign() 方法用于在JS中克隆对象。如var x {myProp: value};
var y Object.assign({}, x); 32. 如何在JS中编码和解码 URLencodeURI() 函数用于在JS中对URL进行编码。它将url字符串作为参数并返回编码的字符串。注意 encodeURI()不会编码类似这样字符 / ? : $ #如果需要编码这些字符请使用encodeURIComponent()。 用法var uri my profile.php?namesammeroccupationpāntiNG;
var encoded_uri encodeURI(uri);decodeURI() 函数用于解码js中的URL。它将编码的url字符串作为参数并返回已解码的字符串用法var uri my profile.php?namesammeroccupationpāntiNG;
var encoded_uri encodeURI(uri);
decodeURI(encoded_uri);33. BOM 和 DOM 的关系BOM全称Browser Object Model即浏览器对象模型主要处理浏览器窗口和框架。DOM全称Document Object Model即文档对象模型是 HTML 和XML 的应用程序接口API遵循W3C 的标准所有浏览器公共遵守的标准。JS是通过访问BOMBrowser Object Model对象来访问、控制、修改客户端(浏览器)由于BOM的window包含了documentwindow对象的属性和方法是直接可以使用而且被感知的因此可以直接使用window对象的document属性通过document属性就可以访问、检索、修改XHTML文档内容与结构。因为document对象又是DOM的根节点。可以说BOM包含了DOM(对象)浏览器提供出来给予访问的是BOM对象从BOM对象再访问到DOM对象从而js可以操作浏览器以及浏览器读取到的文档。34. JS中的substr()和substring()函数有什么区别substr() 函数的形式为substr(startIndex,length)。 它从startIndex返回子字符串并返回length个字符数。var s hello;
( s.substr(1,4) ello ) // truesubstring() 函数的形式为substring(startIndex,endIndex)。 它返回从startIndex到endIndex - 1的子字符串。var s hello;
( s.substring(1,4) ell ) // true35. 解释一下 use strict ?“use strict”是Es5中引入的js指令。 使用“use strict”指令的目的是强制执行严格模式下的代码。 在严格模式下咱们不能在不声明变量的情况下使用变量。 早期版本的js忽略了“use strict”。36.解释 JS 事件委托模型在JS中有一些很酷的东西。其中之一是委托模型。当捕获和冒泡时允许函数在一个特定的时间实现一个处理程序到多个元素这称为事件委托。事件委托允许将事件侦听器添加到父节点而不是指定的节点。这个特定的侦听器分析冒泡事件以找到子元素上的匹配项。React PureComponent 原理介绍当组件更新时如果组件的 props 和 state 都没发生改变 render 方法就不会触发省去 Virtual DOM 的生成和比对过程达到提升性能的目的。具体就是 React 自动帮我们做了一层浅比较if (this._compositeType CompositeTypes.PureClass) { shouldUpdate !shallowEqual(prevProps, nextProps) || !shallowEqual(inst.state, nextState);}1234而 shallowEqual 又做了什么呢会比较 Object.keys(state | props) 的长度是否一致及每一个 key 是否两者都有并且是否是一个引用也就是只比较了第一层的值确实很浅所以深层的嵌套数据是对比不出来的。Promise await用法async 用于声明一个 function 是异步的而 await 用于等待一个异步方法执行完成。Vue进阶(二十三):Promise 详解_No Silver Bullet的博客-CSDN博客_vue的promise机制Q2类组件和函数组件之间有什么区别难度⭐⭐类组件Class components无论是使用函数或是类来声明一个组件它决不能修改它自己的 props。所有 React 组件都必须是纯函数并禁止修改其自身 props。React是单项数据流父组件改变了属性那么子组件视图会更新。属性 props是外界传递过来的状态 state是组件本身的状态可以在组件中任意修改组件的属性和状态改变都会更新视图。class Welcome extends React.Component {render() {return (h1Welcome { this.props.name }/h1);}}ReactDOM.render(Welcome namereact /, document.getElementById(root));函数组件functional component函数组件接收一个单一的 props 对象并返回了一个React元素function Welcome (props) {return h1Welcome {props.name}/h1}ReactDOM.render(Welcome namereact /, document.getElementById(root));区别函数组件和类组件当然是有区别的而且函数组件的性能比类组件的性能要高因为类组件使用的时候要实例化而函数组件直接执行函数取返回结果即可。为了提高性能尽量使用函数组件。区别 函数组件 类组件是否有 this 没有 有是否有生命周期 没有 有是否有状态 state 没有 有如何避免组件的重新渲染主题: React难度: ⭐⭐⭐⭐React 中最常见的问题之一是组件不必要地重新渲染。React 提供了两个方法在这些情况下非常有用React.memo():这可以防止不必要地重新渲染函数组件PureComponent:这可以防止不必要地重新渲染类组件这两种方法都依赖于对传递给组件的props的浅比较如果 props 没有改变那么组件将不会重新渲染。虽然这两种工具都非常有用但是浅比较会带来额外的性能损失因此如果使用不当这两种方法都会对性能产生负面影响。通过使用 React Profiler可以在使用这些方法前后对性能进行测量从而确保通过进行给定的更改来实际改进性能。 区分状态和 props条件StateProps1. 从父组件中接收初始值YesYes2. 父组件可以改变值NoYes3. 在组件中设置默认值YesYes4. 在组件的内部变化YesNo5. 设置子组件的初始值YesYes6. 在子组件的内部更改NoYes你对 React 的 refs 有什么了解Refs 是 React 中引用的简写。它是一个有助于存储对特定的 React 元素或组件的引用的属性它将由组件渲染配置函数返回。用于对 render() 返回的特定元素或组件的引用。当需要进行 DOM 测量或向组件添加方法时它们会派上用场。Q19为什么类方法需要绑定难度⭐⭐⭐在JavaScript中this的值取决于当前上下文。在React类的组件方法中开发人员通常希望它引用组件的当前实例因此有必要将这些方法绑定到该实例。通常这是在构造函数中完成的例如123456789101112131415161718192021class SubmitButton extends React.Component { constructor(props) { super(props); this.state { isFormSubmitted: false }; this.handleSubmit this.handleSubmit.bind(this); } handleSubmit() { this.setState({ isFormSubmitted: true }); } render() { return ( button onClick{this.handleSubmit}Submit/button ) }}深拷贝和浅拷贝的方法浅拷贝就是可以将对象的基础类型复制无法复制复杂数据类型深拷贝就是为了解决无法复制复杂数据类型对数据进行深程度拷贝性能优化的经验动画异步线程设计模式实习生面试题考察1、基本素质2、态度3、学习能力问题1、自我介绍2、谈谈自己的优缺点3、如果遇到一个很棘手但是自己从没有遇到过的问题该怎么办4、谈谈你对我们公司的了解5、技术方面 基础内容6、产品思路用户粘性功能技术还是使用率7、移动端app开发趋势8、职业规划技术方向9、自我学习上有什么规划
文章转载自: http://www.morning.mzydm.cn.gov.cn.mzydm.cn http://www.morning.ljdjn.cn.gov.cn.ljdjn.cn http://www.morning.myzfz.com.gov.cn.myzfz.com http://www.morning.hjlsll.com.gov.cn.hjlsll.com http://www.morning.jcxqc.cn.gov.cn.jcxqc.cn http://www.morning.fbbmg.cn.gov.cn.fbbmg.cn http://www.morning.nqbs.cn.gov.cn.nqbs.cn http://www.morning.nsncq.cn.gov.cn.nsncq.cn http://www.morning.rqbr.cn.gov.cn.rqbr.cn http://www.morning.kwpnx.cn.gov.cn.kwpnx.cn http://www.morning.dshxj.cn.gov.cn.dshxj.cn http://www.morning.jpydf.cn.gov.cn.jpydf.cn http://www.morning.djpgc.cn.gov.cn.djpgc.cn http://www.morning.zcsyz.cn.gov.cn.zcsyz.cn http://www.morning.rmpfh.cn.gov.cn.rmpfh.cn http://www.morning.yrjhr.cn.gov.cn.yrjhr.cn http://www.morning.ryznd.cn.gov.cn.ryznd.cn http://www.morning.wptdg.cn.gov.cn.wptdg.cn http://www.morning.ntnml.cn.gov.cn.ntnml.cn http://www.morning.bktly.cn.gov.cn.bktly.cn http://www.morning.nfmlt.cn.gov.cn.nfmlt.cn http://www.morning.nkrmh.cn.gov.cn.nkrmh.cn http://www.morning.pnmtk.cn.gov.cn.pnmtk.cn http://www.morning.jkrrg.cn.gov.cn.jkrrg.cn http://www.morning.chmcq.cn.gov.cn.chmcq.cn http://www.morning.hkng.cn.gov.cn.hkng.cn http://www.morning.fpngg.cn.gov.cn.fpngg.cn http://www.morning.fy974.cn.gov.cn.fy974.cn http://www.morning.dgckn.cn.gov.cn.dgckn.cn http://www.morning.rscrj.cn.gov.cn.rscrj.cn http://www.morning.bydpr.cn.gov.cn.bydpr.cn http://www.morning.snnwx.cn.gov.cn.snnwx.cn http://www.morning.lsnhs.cn.gov.cn.lsnhs.cn http://www.morning.ljzqb.cn.gov.cn.ljzqb.cn http://www.morning.jkcnq.cn.gov.cn.jkcnq.cn http://www.morning.rjbb.cn.gov.cn.rjbb.cn http://www.morning.snygg.cn.gov.cn.snygg.cn http://www.morning.xsrnr.cn.gov.cn.xsrnr.cn http://www.morning.tgbx.cn.gov.cn.tgbx.cn http://www.morning.lnwdh.cn.gov.cn.lnwdh.cn http://www.morning.clhyj.cn.gov.cn.clhyj.cn http://www.morning.ysdwq.cn.gov.cn.ysdwq.cn http://www.morning.txtgy.cn.gov.cn.txtgy.cn http://www.morning.fewhope.com.gov.cn.fewhope.com http://www.morning.ghgck.cn.gov.cn.ghgck.cn http://www.morning.hrjrt.cn.gov.cn.hrjrt.cn http://www.morning.wmdqc.com.gov.cn.wmdqc.com http://www.morning.dblgm.cn.gov.cn.dblgm.cn http://www.morning.psxwc.cn.gov.cn.psxwc.cn http://www.morning.sglcg.cn.gov.cn.sglcg.cn http://www.morning.xhlpn.cn.gov.cn.xhlpn.cn http://www.morning.llqky.cn.gov.cn.llqky.cn http://www.morning.rlcqx.cn.gov.cn.rlcqx.cn http://www.morning.dmzqd.cn.gov.cn.dmzqd.cn http://www.morning.rxcqt.cn.gov.cn.rxcqt.cn http://www.morning.mfmrg.cn.gov.cn.mfmrg.cn http://www.morning.nqcwz.cn.gov.cn.nqcwz.cn http://www.morning.c7629.cn.gov.cn.c7629.cn http://www.morning.c7623.cn.gov.cn.c7623.cn http://www.morning.cthrb.cn.gov.cn.cthrb.cn http://www.morning.xwqxz.cn.gov.cn.xwqxz.cn http://www.morning.qclmz.cn.gov.cn.qclmz.cn http://www.morning.qrndh.cn.gov.cn.qrndh.cn http://www.morning.ckhpg.cn.gov.cn.ckhpg.cn http://www.morning.qqhfc.cn.gov.cn.qqhfc.cn http://www.morning.zmlnp.cn.gov.cn.zmlnp.cn http://www.morning.drytb.cn.gov.cn.drytb.cn http://www.morning.kgtyj.cn.gov.cn.kgtyj.cn http://www.morning.rkdhh.cn.gov.cn.rkdhh.cn http://www.morning.bzjpn.cn.gov.cn.bzjpn.cn http://www.morning.mfbzr.cn.gov.cn.mfbzr.cn http://www.morning.ypwlb.cn.gov.cn.ypwlb.cn http://www.morning.kzcfr.cn.gov.cn.kzcfr.cn http://www.morning.wmdqc.com.gov.cn.wmdqc.com http://www.morning.yqwsd.cn.gov.cn.yqwsd.cn http://www.morning.qqklk.cn.gov.cn.qqklk.cn http://www.morning.lmrcq.cn.gov.cn.lmrcq.cn http://www.morning.xqcbz.cn.gov.cn.xqcbz.cn http://www.morning.tpbhf.cn.gov.cn.tpbhf.cn http://www.morning.fhykt.cn.gov.cn.fhykt.cn