所谓的动态类型语言,意思就是类型的检查是在运行时做的。
而静态类型语言的类型判断是在运行前判断(如编译阶段),比如C#、java就是静态类型语言,静态类型语言为了达到会采取一些类型鉴别手段,如继承、接口,而动态类型语言却不需要,所以一般动态语言都会采用dynamic typing,常出现于中.
脚本语言是一种解释性的语言,例如、vbscript,javascript,installshield script,ActionScript等等,它不象c\c++等可以编译成二进制代码,以的形式存在,脚本语言不需要编译,可以直接用,由解释器来负责解释。
弱类型、事件驱动(参考:)
null表示"没有对象",即该处不应该有值。典型用法是:
当使用RegExp()构造函数的时候,不仅需要转义引号(即\"表示"),并且还需要双反斜杠(即\\表示一个\)。**使用正则表达字面量的效率更高。 ** **邮箱**的正则匹配:
(1) 作为函数的参数,表示该函数的参数不是对象。
(2) 作为对象原型链的终点。###22?看下面代码,给出输出结果。
###23?写一个function,清除字符串前后的空格。(兼容所有浏览器) 对象的一个成员,它表示对函数对象本身的引用,这有利于匿名函数的递归或者保证函数的封装性,例如下边示例的递归计算1到n的自然数之和。而该属性仅当相关函数正在执行时才可用。还有需要注意的是callee拥有length属性,这个属性有时候用于验证还是比较好的。arguments.length是实参长度,arguments.callee.length是形参长度,由此可以判断调用时形参长度是否和实参长度一致。 callee实现阶乘: 使用callee不用fn就是为了避免强耦合
我几天前参加了一个在旧金山的 (注释: Free Code Camp 是一个让一群人聚在一起学习JavaScript的和web技术的组织), 在那里有一些人用提JavaScript问题的方式来为前端开发工作的面试做练习和准备。在一番搜寻之后,我找不到任何一个问题清单能让我告诉某人:如果你能做到这些,你就能找到工作。这里有的问题还可以,有的就显得很蠢,但是所有的这些都是不完整的,或者在现实生活里根本不会问的。
所以,根据我在面试台上的经验,我提供了一些在我面试前端工程师时我曾经问过或者被问过的问题,注意,有些公司(比如谷歌),更加关注于设计高效的算法,所以如果你想在这些地方工作,除了下面我讲的东西,你还需要做做。如果你对我所讲的有什么疑问(或者我犯了某些错误),.
我将会在添加回答或者更新这些问题的答案 (可以自由的对记录进行增添或者改进).
我将会从这几个方面来组织问题: 概念, 编程, 调试以及系统设计:
能够用语言清晰的回答这些问题(不通过代码) :
什么是时间复杂度?为什么它很有用?
原型继承是如何工作的?它和类式继承有什么区别? (在我看来这不是一个有用的问题,但是很多人喜欢问)
this
是如何工作的?
什么是事件冒泡?它是怎么工作的? (在我看来这也是一个不好的问题,但是很多人喜欢问)
讲一下服务端和客户端通信的方式有哪些,一些高层级的网络协议如何是工作的?(IP, TCP, HTTP/S/2, UDP, RTC, DNS, 等等)
什么是REST?我们为什么要使用它?
如果一个网站速度很慢,如何诊断和修复?网站性能优化的方式有哪些?以及这些方式的适用场景。
你用过哪些框架?它们的优点和缺点是什么?为什么要使用它们?这些框架解决了哪些问题?
实现以下函数 (遵循每个问题进行测试):
reverse
- 实现一个倒序给定字符串的函数 (不要使用内置的 函数).
isPalindrome
- 判断给定的字符串是否是回文,返回 true
或者 false
(大小写和空格不敏感)
missing
- 给定一个无序且数字不重复的数组,数字范围从1到n,返回序列中缺失的数字(序列里没有缺失或者只少了一个)。你能让它的复杂度为O(n)吗?提示:有一个聪明的公式可以使用
fib2
- 就像之前实现的 fib
函数, 现在要能够处理到50的数字(提示:使用缓存).
uniq
- 数字数组去重. 你能让它的复杂度为O(n)吗?
intersection
- 找到两个数组之中相同的元素并返回一个数组。你能让它的复杂度为O(M + N)吗?(M和N分别是两个数组的长度)?
提示: 对于接下来你将实现的这些数据结构,建议是不需要去熟背它们,而是只要能够根据给定的API,Google它们是如何工作的,然后再进行实现就可以了。更高一级的建议是思考它们的用途以及权衡和其它数据结构相比它们的利弊
permute
- 返回一个字符串数组,包含给定字符串的所有排列
{}
) 或者 Map
. 这里提供了一个获取字符串并返回数字的 hash()
函数 (返回的数字通常是独一无二的,但是有时候两个不同的字符串会返回相同的数字):
对于接下来的问题,首先要理解并解释为什么给定的代码段不能运行,然后给出几个修改方案,并重写代码以实现你的方案来让程序正确工作
0
, 1
, 2
, 3
顺序输出数字, 但是它并没有按我的预期工作 (这是一个你偶尔会遇到的一个错误,一些人很喜欢在面试里问这个问题).
bark()
方法, 但是我却得到一个错误. 为什么?
如果你不了解 “系统设计” 的含义, .
告诉我如何实现一个全栈的自动完成部件。用户能够输入文本,然后从服务端返回结果
你会如何设计前端架构来支持以下特性:
将数据渲染为一棵树形结构 (项目可以有父母/孩子 - 它不只是一个平行列表)
支持复选框,单选按钮,图标和常规列表项 - 项目来自多个表单
组件的API是怎么样的?
后端API是什么样子的?
对于完全按照预期的操作,有哪些性能方面的考虑?有什么边界情况吗 (比如,用户操作过快或者网络速度很慢)?
你会如何设计网络堆栈和后端来支持快速的性能:前/后端如何通信?数据在后端如何储存?这些方法如何扩展到能支持大量数据和大量用户?
告诉我一个全栈的Twitter的如何实现 (这是从我的朋友那厚脸皮抄袭过来的 ).
你如何获取和渲染微博?
当一条新的微博来了要如何更新?你如何知道新的微博什么时候来?
怎么搜索微博? 怎么按作者搜索? 说说你的数据库,后端和接口如何设计
如果你想知道和学习更多知识,下面将提供一些高质量的资源,我认为很有帮助
可以通过设置domin来实现
存储结构 将对象加工可观察 函数式 vs 面向对象
把数据放到 body 里面,必须用 POST 方式取,这是 HTTP 协议限制的。