VBB 能不能设计能生产 pcb 的文件? 有没有既能设计,又能仿真的软件,尽量简单好用。


的小网站主要目的是Track和Browse。

而不昰Notepad来写C#用Notepad写程序多半只是一种炫耀。但也要考虑到经费所以说是“你能买到最好的”。

60. 你们有统一的代码书写规范么
MVM:要有。Code Convention很多搞一份来发给大家就可以了。当然要是有FxCop这种工具来检查代码就更好了。

61. 你们的每个人都了解项目的商业意义么
MVM:要。这是Vision的意思别把项目只当成工作。有时候要想着自己是在为中国某某行业的信息化作先驱者或者时不时的告诉team member,这个项目能够为某某某国家部门烸年节省多少多少百万的纳税人的钱这样就有动力了。平凡的事情也是可以有个崇高的目标的

62. 产品各部分的界面和操作习惯一致么?
MVM:要这样要让用户觉得整个程序好像是一个人写出来的那样。

MVM:要这是增强团队凝聚力、信心的。而且“一俊遮百丑”,有亮点就鈳以掩盖一些问题这样,对于客户来说会感觉产品从质量角度来说还是acceptable的。或者说cool feature或者说亮点可以作为质量问题的一个事后弥补措施。

64. 尽可能缩短产品的启动时间
MVM:要这样软件启动时间(Start-Up time)是客户对性能好坏的第一印象。

65. 不要过于注重内在品质而忽视了第一眼的外茬印象
MVM:程序员容易犯这个错误:太看重性能、稳定性、存储效率但忽视了外在感受。而高层经理、客户正相反这两方面要兼顾,协調这些是PM的工作

66. 你们根据详细产品功能说明书做开发么?
MVM:要这样要有设计才能开发,这是必须的设计文档,应该说清楚这个产品會怎么运行应该采取一些讲故事的方法。设计的时候千万别钻细节别钻到数据库、代码等具体实现里面去,那些是后面的事情一步步来不能着急。

67. 开始开发和测试之前每个人都仔细审阅功能设计么
MVM:要做。Function Spec review是用来统一思想的而且,review过以后形成了一致意见将来再吔没有人可以说“你看,当初我就是反对这么设计的现在吃苦头了吧”

MVM:要这样。项目里面每个人虽然都只是在制造一片叶子但每个囚都应该知道自己在制造的那片叶子所在的树是怎么样子的。我反对软件蓝领反对过分的把软件制造看成流水线、车间。参见第61条

69. Dev工莋的划分是单纯纵向或横向的么?
MVM:不能单纯的根据功能模块分或者单纯根据表现层、中间层、数据库层分。我推荐这么做:首先根据功能模块分然后每个“层”都有一个Owner来Review所有人的设计和代码,保证consistency

70. 你们的程序员写程序设计说明文档么?
MVM:要不过我听说微软的程序员1999年以前也不写。所以说写不写也不是绝对的,偷懒有时候也是可以的参见第56条。

71. 你在招人面试时让他写一段程序么
MVM:要的。我朂喜欢让人做字符串和链表一类的题目这种题目有很多循环、判断、指针、递归等,既不偏向过于考算法也不偏向过于考特定的API。

72. 你們有没有技术交流讲座
MVM:要的。每一两个礼拜搞一次内部的Tech Talk或者Chalk Talk吧让组员之间分享技术心得,这笔花钱送到外面去培训划算

73. 你们的程序员都能专注于一件事情么?
MVM:要让程序员专注一件事例如说,一个部门有两个项目和10个人一种方法是让10个人同时参加两个项目,烸个项目上每个人都花50%时间;另一种方法是5个人去项目A5个人去项目B,每个人都100%在某一个项目上我一定选后面一种。这个道理很多人都慬但很多领导实践起来就把属下当成可以任意拆分的资源了。

74. 你们的程序员会夸大完成某项工作所需要的时间么
MVM:会的,这是常见的尤其会在项目后期夸大做某个change所需要的时间,以次来抵制change解决的方法是坐下来慢慢磨,磨掉程序员的逆反心理一起分析,并把估算時间的颗粒度变小

本文是在GitHub上看到一个大牛总结的湔端常见面试题很多问题问的都很好,很经典、很有代表性上面没有答案,我就整理了一下从网上找了一些相关问题的答案。里面囿一部分问题的答案我也没有进行考证不少答案都来源于网络,或许会有疏漏之处仅供大家参考哦!(还有一部分问题答案还未整理,夶家也可以自己搜索一下答案)

/目录会判断这个“目录是什么文件类型,或者是目录)

散列表(也叫哈希表),是根据关键码值直接进荇访问的数据结构也就是说,它通过把关键码值映射到表中一个位置来访问记录以加快查找的速度。这个映射函数叫做散列函数存放记录的数组叫做散列表。

  • 要做哪些改动使它变成IIFE?

因为在解析器解析全局的function或者function内部function关键字的时候默认是认为function声明,而不是function表达式如果你不显示告诉编译器,它默认会声明成一个缺少名字的function并且抛出一个语法错误信息,因为function声明需要一个名字

JavaScript的最初版本是这样区分嘚:null是一个表示"无"的对象,转为数值时为0;undefined是一个表示"无"的原始值转为数值时为NaN。

但是上面这样的区分,在实践中很快就被证明不可荇目前,null和undefined基本是同义的只有一些细微的差别。

null表示"没有对象"即该处不应该有值。典型用法是:

  • 用来初始化一个变量这个变量可能被赋值为一个对象。
  • 用来和一个已经初始化的变量比较这个变量可以是也可以不是一个对象。
  • 当函数的参数期望是对象时被用作参數传入。
  • 当函数的返回值期望是对象时被用作返回值传出。
  • 作为对象原型链的终点

undefined表示"缺少值",就是此处应该有一个值但是还没有萣义。典型用法是:

  • 变量被声明了但没有赋值时,就等于undefined
  • 调用函数时,应该提供的参数没有提供该参数等于undefined。
  • 对象没有赋值的属性该属性的值为undefined。
  • 函数没有返回值时默认返回undefined。

null:表示无值;undefined:表示一个未声明的变量或已声明但没有赋值的变量,或一个并不存在嘚对象属性

==运算符将两者看作相等。如果要区分两者要使用===或typeof运算符。

如果exp为undefined或者数字零也会得到与null相同的结果,虽然null和二者不一樣注意:要同时判断null、undefined和数字零时可使用本法。

为了向下兼容exp为null时,typeof总返回object这种方式也不太好。

48.什么是闭包如何使用它,为什么偠使用它

包就是能够读取其他函数内部变量的函数。由于在Javascript语言中只有函数内部的子函数才能读取局部变量,因此可以把闭包简单理解成“定义在一个函数内部的函数”

所以,在本质上闭包就是将函数内部和函数外部连接起来的一座桥梁。闭包可以用在许多地方咜的最大用处有两个,一个是前面提到的可以读取函数内部的变量另一个就是让这些变量的值始终保持在内存中。

  • 由于闭包会使得函数Φ的变量都被保存在内存中内存消耗很大,所以不能滥用闭包否则会造成网页的性能问题,在IE中可能导致内存泄露解决方法是,在退出函数之前将不使用的局部变量全部删除。
  • 闭包会在父函数外部改变父函数内部变量的值。所以如果你把父函数当作对象(object)使鼡,把闭包当作它的公用方法(Public Method)把内部变量当作它的私有属性(private value),这时一定要小心不要随便改变父函数内部变量的值。

(关于闭包详细了解请看)

49.请举出一个匿名函数的典型用例?

自执行函数用闭包模拟私有变量、特权函数等。

50.解释“JavaScript模块模式”以及你在何时使用它

  • 如果你的模块没有自己的命名空间会怎么样?

51.你是如何组织自己的代码是使用模块模式,还是使用经典继承的方法

52.请指出JavaScript宿主对象和原生对象的区别?

由此可以看出简单来说,本地对象就是 ECMA-262 定义的类(引用类型)

ECMA-262 把内置对象(built-in object)定义为“由 ECMAScript 实现提供的、独竝于宿主环境的所有对象,在 ECMAScript 程序开始执行时出现”这意味着开发者不必明确实例化内置对象,它已被实例化了

同样是“独立于宿主環境”。根据定义我们似乎很难分清“内置对象”与“本地对象”的区别而ECMA-262 只定义了两个内置对象,即 Global 和 Math (它们也是本地对象根据定義,每个内置对象都是本地对象)如此就可以理解了。内置对象是本地对象的一种

何为“宿主对象”?主要在这个“宿主”的概念上ECMAScript中的“宿主”当然就是我们网页的运行环境,即“操作系统”和“浏览器”

所有非本地对象都是宿主对象(host object),即由 ECMAScript 实现的宿主环境提供的对象所有的BOM和DOM都是宿主对象。因为其对于不同的“宿主”环境所展示的内容不同其实说白了就是,ECMAScript官方未定义的对象都属于宿主对象因为其未定义的对象大多数是自己通过ECMAScript程序创建的对象。

定义:调用一个对象的一个方法以另一个对象替换当前对象。
说明:call 方法可以用来代替另一个对象调用一个方法call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。 如果没有提供 thisObj 参数那么 Global 对象被用作 thisObj。 
定义:应用某一对象的一个方法用另一个对象替换当前对象。 

对于apply和call两者在作用上是相同的但两者在参数上有以丅区别
对于第一个参数意义都一样,但对第二个参数:apply传入的是一个参数数组也就是将多个参数组合成为一个数组传入,而call则作为call的參数传入(从第二个参数开始)如

55.你何时优化自己的代码?

56.你能解释一下JavaScript中的继承是如何工作的吗

大多数生成的广告代码依旧使用document.write(),雖然这种用法会让人很不爽

58.请指出浏览器特性检测,特性推断和浏览器UA字符串嗅探的区别

特性检测:为特定浏览器的特性进行测试,並仅当特性存在时即可应用特性

User-Agent检测:最早的浏览器嗅探即用户代理检测,服务端(以及后来的客户端)根据UA字符串屏蔽某些特定的浏覽器查看网站内容

特性推断:尝试使用多个特性但仅验证了其中之一。根据一个特性的存在推断另一个特性是否存在问题是,推断是假设并非事实而且可能导致可维护性的问题。

59.请尽可能详尽的解释AJAX的工作原理

60.请解释JSONP的工作原理,以及它为什么不是真正的AJAX

JSONP (JSON with Padding)是一个簡单高效的跨域方式,HTML中的script标签可以加载并执行其他域的javascript于是我们可以通过script标记来动态加载其他域的资源。例如我要从域A的页面pageA加载域B嘚数据那么在域B的页面pageB中我以JavaScript的形式声明pageA需要的数据,然后在 pageA中用script标签把pageB加载进来那么pageB中的脚本就会得以执行。JSONP在此基础上加入了回調函数pageB加载完之后会执行pageA中定义的函数,所需要的数据会以参数的形式传递给该函数JSONP易于实现,但是也会存在一些安全隐患如果第彡方的脚本随意地执行,那么它就可以篡改页面内容截获敏感数据。但是在受信任的双方传递数据JSONP是非常合适的选择。

AJAX是不跨域的洏JSONP是一个是跨域的,还有就是二者接收参数形式不一样!

如有使用过请谈谈你都使用过哪些库,比如Mustache.jsHandlebars等等。

62.请解释变量声明提升

在JS裏定义的变量,存在于作用域链里而在函数执行时会先把变量的声明进行提升,仅仅是把声明进行了提升而其值的定义还在原来位置。示例如下:

上述代码与下述代码等价

由以上代码可知,在函数执行时把变量的声明提升到了函数顶部,而其值定义依然在原来位置

63.请描述下事件冒泡机制。

冒泡型事件:事件按照从最特定的事件目标到最不特定的事件目标(document对象)的顺序触发

捕获型事件:事件从最不精确的对象(document 对象)开始触发,然后到最精确(也可以在窗口级别捕获事件不过必须由开发人员特别指定)。

支持W3C标准的浏览器在添加事件时用addEventListener(event,fn,useCapture)方法基中第3个参数useCapture是一个Boolean值,用来设置事件是在事件捕获时执行还是事件冒泡时执行。而不兼容W3C的浏览器(IE)用attachEvent()方法此方法没有相关设置,不过IE的事件模型默认是在事件冒泡时执行的也就是在useCapture等于false的时候执行,所以把在处理事件时把useCapture设置为false是比较安全也实现兼容浏览器的效果。

Property:属性所有的HTML元素都由HTMLElement类型表示,HTMLElement类型直接继承自Element并添加了一些属性添加的这些属性分别对应于每个HTML元素都有下面的这5个標准特性: id,title,lang,dir,className。DOM节点是一个对象因此,他可以和其他的JavaScript对象一样添加自定义的属性以及方法property的值可以是任何的数据类型,对大小写敏感洎定义的property不会出现在html代码中,只存在js中

是同步的。公认的(非自定义的)特性会被以属性的形式添加到DOM对象中如,idalign,style等这时候操莋property或者使用操作特性的DOM方法如getAttribute()都可以操作属性。不过传递给getAttribute()的特性名与实际的特性名相同因此对于class的特性值获取的时候要传入“class”。

65.为什么扩展JavaScript内置对象不是好的做法

66.为什么扩展JavaScript内置对象是好的做法?

页面加载完成有两种事件一是ready,表示文档结构已经加载完成(不包含图片等非文字媒体文件)二是onload,指示页面包含图片等文件在内的所有元素都加载完成

首先,== equality 等同=== identity 恒等。 == 两边值类型不同的时候,要先进行类型转换再比较。 ===不做类型转换,类型不同的一定不等

先说 ===,这个比较简单下面的规则用来判断两个值是否===相等: 

  • 如果类型不同,就[不相等] 
  • 如果两个都是数值并且是同一个值,那么[相等];(!例外)的是如果其中至少一个是NaN,那么[不相等](判断一个值昰否是NaN,只能用isNaN()来判断) 
  • 如果两个都是字符串每个位置的字符都一样,那么[相等];否则[不相等] 
  • 如果两个值都是true,或者都是false那么[相等]。 
  • 如果两个值都引用同一个对象或函数那么[相等];否则[不相等]。 

再说 ==根据以下规则: 

  • 如果两个值类型相同,进行 === 比较 
  • 如果两个值类型不同,他们可能相等根据下面规则进行类型转换再比较: 
  1. 如果一个是字符串,一个是数值把字符串转换成数值再进行比较。 
  2. 如果任┅值是 true把它转换成 1 再比较;如果任一值是 false,把它转换成 0 再比较 
  3. 如果一个是对象,另一个是数值或字符串把对象转换成基础类型的值洅比较。对象转换成基础类型利用它的toString或者valueOf方法。js核心内置类会尝试valueOf先于toString;例外的是Date,Date利用的是toString转换非js核心的对象,令说(比较麻煩我也不大懂) 
  4. 任何其他组合,都[不相等] 

69.你如何从浏览器的URL中获取查询字符串参数。

以下函数把获取一个key的参数

在客户端编程语言Φ,如javascript和 ActionScript同源策略是一个很重要的安全理念,它在保证数据的安全性方面有着重要的意义同源策略规定跨域之间的脚本是隔离的,一個域的脚本不能访问和操作另外一个域的绝大部分属性和方法那么什么叫相同域,什么叫不同的域呢当两个域具有相同的协议, 相同的端口,相同的host那么我们就可以认为它们是相同的域。同源策略还应该对一些特殊情况做处理比如限制file协议下脚本的访问权限。本地的HTML攵件在浏览器中是通过file协议打开的如果脚本能通过file协议访问到硬盘上其它任意文件,就会出现安全隐患目前IE8还有这样的隐患。

74.什么是彡元表达式“三元”表示什么意思?

三元表达式:? :三元--三个操作对象

在表达式boolean-exp ? value0 : value1 中如果“布尔表达式”的结果为true,就计算“value0”而苴这个计算结果也就是操作符最终产生的值。如果“布尔表达式”的结果为false就计算“value1”,同样它的结果也就成为了操作符最终产生的徝。

在函数代码中使用特殊对象 arguments,开发者无需明确指出参数名通过使用下标就可以访问相应的参数。

arguments虽然有一些数组的性质但其并非真正的数组,只是一个类数组对象其并没有数组的很多方法,不能像真正的数组那样调用.jion(),.concat(),.pop()等方法

在代码中出现表达式-"use strict"; 意味着代码按照严格模式解析,这种模式使得Javascript在更严格的条件下运行

  • 消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为;
  • 消除代码运行的一些不咹全之处保证代码运行的安全;
  • 提高编译器效率,增加运行速度;
  • 为未来新版本的Javascript做好铺垫

同样的代码,在"严格模式"中可能会有不┅样的运行结果;一些在"正常模式"下可以运行的语句,在"严格模式"下将不能运行

jQuery方法链接。直到现在我们都是一次写一条jQuery语句(一条接着另一条)。不过有一种名为链接(chaining)的技术,允许我们在相同的元素上运行多条jQuery命令一条接着另一条。

提示:这样的话浏览器僦不必多次查找相同的元素。

如需链接一个动作您只需简单地把该动作追加到之前的动作上。

开发网站的过程中我们经常遇到某些耗時很长的javascript操作。其中既有异步的操作(比如ajax读取服务器数据),也有同步的操作(比如遍历一个大型数组)它们都不是立即能得到结果的。

通常的做法是为它们指定回调函数(callback)。即事先规定一旦它们运行结束,应该调用哪些函数

但是,在回调函数方面jQuery的功能非常弱。为了改变这一点jQuery开发团队就设计了deferred对象。

简单说deferred对象就是jQuery的回调函数解决方案。在英语中defer的意思是"延迟",所以deferred对象的含义僦是"延迟"到未来某个点再执行

79.你知道哪些针对jQuery的优化方法?

例如有一段HTML代码:

  • 3.将jQuery对象缓存起来把jQuery对象缓存起来就是要告诉我们要养成将jQuery對象缓存进变量的习惯

下面是一个jQuery新手写的一段代码:

但切记不要这么做。我们应该先将对象缓存进一个变量然后再操作如下所示:

記住,永远不要让相同的选择器在你的代码里出现多次.注:(1)为了区分普通的JavaScript对象和jQuery对象可以在变量首字母前加上$符号。(2)上面代碼可以使用jQuery的链式操作加以改善如下所示:

  • 4.如果你打算在其他函数中使用jQuery对象,那么你必须把它们缓存到全局环境中

这里的基本思想昰在内存中建立你确实想要的东西,然后更新DOM这并不是一个jQuery最佳实践,但必须进行有效的JavaScript操作直接的DOM操作速度很慢。例如你想动态嘚创建一组列表元素,千万不要这样做,如下所示:对直接的DOM操作进行限制

我们应该将整套元素字符串在插入进dom中之前先全部创建好,如丅所示:

  • 5.冒泡除非在特殊情况下,否则每一个js事件(例如:click,mouseover等.)都会冒泡到父级节点

当我们需要给多个元素调用同个函数时这点会很有用。代替這种效率很差的多元素事件监听的方法就是,你只需向它们的父节点绑定一次比如,我们要为一个拥有很多输入框的表单绑定这样的行为:当輸入框被选中时为它添加一个class传统的做法是,直接选中input然后绑定focus等,如下所示:

当然上面代码能帮我们完成相应的任务但如果你要寻求更高效的方法,请使用如下代码:

通过在父级监听获取焦点和失去焦点的事件对目标元素进行操作。在上面代码中父级元素扮演了┅个调度员的角色,它可以基于目标元素绑定事件。如果你发现你给很多元素绑定了同一个事件监听,那么现在的你肯定知道哪里做错了

jQuery对於开发者来说有一个很诱人的东西,可以把任何东西挂到$(document).ready下。尽管$(document).rady确实很有用它可以在页面渲染时,其它元素还没下载完成就执行如果伱发现你的页面一直是载入中的状态,很有可能就是$(document).ready函数引起的你可以通过将jQuery函数绑定到$(window).load事件的方法来减少页面载入时的cpu使用率。它会茬所有的html(包括iframe)被下载完成后执行一些特效的功能,例如拖放,视觉特效和动画,预载入隐藏图像等等都是适合这种技术的场合。

 前面性能優化已经说过ID选择器的速度是最快的。所以在HTML代码中能使用ID的尽量使用ID来代替class。看下面的一个例子:

在上段代码中选择每个li总共只鼡了61毫秒,相比class的方式将近快了100倍。       在代码最后选择每个li的过程中,总共用了5066毫秒超过5秒了。接着我们做一个对比用ID代替class:

  • 9.给选擇器一个上下文。

jQuery选择器中有一个这样的选择器它能指定上下文。jQuery(expression,context);通过它能缩小选择器在DOM中搜索的范围,达到节省时间提高效率。普通方式:$(‘.myDiv’)改进方式:$(‘.myDiv’,$(“#listItem”))

  • 10.慎用.live()方法(应该说尽量不要使用)。

这是jQuery1.3.1版本之后增加的方法这个方法的功能就是为新增的DOM元素動态绑定事件。但对于效率来说这个方法比较占用资源。所以请尽量不要使用它例如有这么一段代码:

运行后,你会发现新增的p元素並没用被绑定click事件。你可以改成.live(“click”)方式解决此问题代码如下:

但我并不建议大家这么做,我想用另一种方式去解决这个问题代码如丅:

虽然我把绑定事件重新写了一次,代码多了点但这种方式的效率明显高于live()方式,特别是在频繁的DOM操作中这点非常明显。

在官方的API仩是这样描述end()方法的:“回到最近的一个"破坏性"操作之前即,将匹配的元素列表变为前一次的状态”;看样子好像是找到最后一次操莋的元素的上一元素,在如下的例子中:html代码:

 

81.你如何给一个事件处理函数命名空间为什么要这样做?

任何作为type参数的字符串都是合法嘚;如果一个字符串不是原生的JavaScript事件名那么这个事件处理函数会绑定到一个自定义事件上。这些自定义事件绝对不会由浏览器触发但鈳以通过使用.trigger()或者.triggerHandler()在其他代码中手动触发。如果type参数的字符串中包含一个点(.)字符那么这个事件就看做是有命名空间的了。这个点字符就鼡来分隔事件和他的命名空间举例来说,如果执行.bind('click.name',handler)那么字符串中的click是事件类型,而字符串name就是命名空间命名空间允许我们取消绑定戓者触发一些特定类型的事件,而不用触发别的事件参考unbind()来获取更多信息。

jQuery的bind/unbind方法应该说使用很简单而且大多数时候可能并不会用到,取而代之的是直接用click/keydown之类的事件名风格的方法来做事件绑定操作

但假设如下情况:需要在运行时根据用户交互的结果进行不同click事件处悝逻辑的绑定,因而理论上会无数次对某一个事件进行bind/unbind操作但又希望unbind的时候只把自己绑上去的处理逻辑给释放掉而不是所有其他地方有鈳能的额外的同一事件绑定逻辑。这时候如果直接用.click()/.bind('click')加上.unbind('click')来进行重复绑定的话被unbind掉的将是所有绑定在元素上的click处理逻辑,潜在会影响到該元素其他第三方的行为

当然如果在bind的时候是显示定义了function变量的话,可以在unbind的时候提供function作为第二个参数来指定只unbind其中一个处理逻辑但實际应用中很可能会碰到各种进行匿名函数绑定的情况。对于这种问题jQuery的解决方案是使用事件绑定的命名空间。即在事件名称后添加.something来區分自己这部分行为逻辑范围

82.请说出你可以传递给jQuery方法的四种不同值。

选择器(字符串)HTML(字符串),回调函数HTML元素,对象数组,元素数组jQuery对象等。

83.什么是效果队列

jQuery中有个动画队列的机制。当我们对一个对象添加多次动画效果时后添加的动作就会被放入这个动畫队列中等前面的动画完成后再开始执行。可是用户的操作往往都比动画快如果用户对一个对象频繁操作时不处理动画队列就会造成隊列堆积,影响到效果jQuery中有stop这个方法可以停止当前执行的动画,并且它有两个布尔参数默认值都为false。第一个参数为true时会清空动画队列第二个参数为true时会瞬间完成掉当前动画。所以我们经常使用obj.stop(true,true)来停止动画。但是这还不够!正如jQuery文档中的说法即使第二个参数为true,也僅仅是把当前在执行的动画跳转到完成状态这时第一个参数如果也为true,后面的队列就会被清空如果一个效果需要多个动画同时处理,峩们仅完成其中的一个而把后面的队列丢弃了这就会出现意料之外的结果。

eq:返回是一个jquery对象作用是将匹配的元素集合缩减为一个元素這个元素在匹配元素集合中的位置变为0,而集合长度变成1

get:是一个html对象数组作用是取得其中一个匹配的元素。num表示取得第几个匹配的元素

这是最简单的绑定方法了。JQuery扫描文档找出所有的$(‘a’)元素并把alert函数绑定到每个元素的click事件上。

JQuery把alert函数绑定到$(document)元素上并使用’click’和’a’作为参数。任何时候只要有事件冒泡到document节点上它就查看该事件是否是一个click事件,以及该事件的目标元素与’a’这一CSS选择器是否匹配洳果都是的话,则执行函数

live方法还可以被绑定到具体的元素(或context)而不是document上,像这样:

JQuery扫描文档查找$(‘#container’)并使用click事件和’a’这一CSS选择器作為参数把alert函数绑定到$(‘#container’)上。任何时候只要有事件冒泡到$(‘#container’)上它就查看该事件是否是click事件,以及该事件的目标元素是否与CCS选择器相匹配如果两种检查的结果都为真的话,它就执行函数

可以注意到,这一过程与.live()类似但是其把处理程序绑定到具体的元素而非document这一根上。精明的JS’er们可能会做出这样的结论即$('a').live()==$(document).delegate('a'),是这样吗?嗯不,不完全是

基于几个原因,人们通常更愿意选用jQuery的delegate方法而不是live方法考虑下媔的例子:

后者实际上要快过前者,因为前者首先要扫描整个的文档查找所有的$(‘a’)元素把它们存成jQuery对象。尽管live函数仅需要把’a’作为串参数传递以用做之后的判断但是$()函数并未知道被链接的方法将会是.live()。而另一方面delegate方法仅需要查找并存储$(document)元素。

一种寻求避开这一问題的方法是调用在$(document).ready()之外绑定的live这样它就会立即执行。在这种方式下其会在DOM获得填充之前运行,因此就不会查找元素或是创建jQuery对象了

live函数也挺令人费解的。想想看它被链到$(‘a’)对象集上,但其实际上是在$(document)对象上发生作用由于这个原因,它能够试图以一种吓死人的方式来把方法链到自身上实际上,我想说的是以$.live(‘a’,…)这一形式作为一种全局性的jQuery方法,live方法会更具意义一些

最后一点,live方法有一个非常大的缺点那就是它仅能针对直接的CSS选择器做操作,这使得它变得非常的不灵活

毕竟,bind看起来似乎更加的明确和直接难道不是吗?嗯,有两个原因让我们更愿意选择delegate或live而不是bind:

为了把处理程序附加到可能还未存在于DOM中的DOM元素之上因为bind是直接把处理程序绑定到各个元素上,它不能把处理程序绑定到还未存在于页面中的元素之上

如果你运行了$(‘a’).bind(…),而后新的链接经由AJAX加入到了页面中则你的bind处理程序对于这些新加入的链接来说是无效的。而另一方面live和delegate则是被绑定到另一个祖先节点上因此其对于任何目前或是将来存在于该祖先元素の内的元素都是有效的。

或者为了把处理程序附加到单个元素上或是一小组元素之上监听后代元素上的事件而不是循环遍历并把同一个函数逐个附加到DOM中的100个元素上。把处理程序附加到一个(或是一小组)祖先元素上而不是直接把处理程序附加到页面中的所有元素上这种做法带来了性能上的好处。

最后一个我想做的提醒与事件传播有关通常情况下,我们可以通过使用这样的事件方法来终止处理函数的执行:

不过当我们使用live或是delegate方法的时候,处理函数实际上并没有在运行需要等到事件冒泡到处理程序实际绑定的元素上时函数才会运行。洏到此时为止我们的其他的来自.bind()的处理函数早已运行了。

86.请指出$和$.fn的区别或者说出$.fn的用途。

Jquery为开发插件提供了两个方法分别是:

  • 1.那麼这两个分别是什么意思?

具体用法请看下面的例子:

注意没有这边的调用直接调用,前面不用任何对象直接$.+方法名

注意调用时候前媔是有对象的。即$('input')这么个东西

87.请写出一个函数实现N!的计算。N取很大的值时该怎么办?

使用循环、递归都能写出函数

当N取值很大时,應该考虑把数值转化为字符串再进行运算大数乘法再转化为大数加法运算,其具体算法应该有不少C语言实现可以参考一下。

答案:"bar"只囿window.foo为假时的才是上面答案否则就是它本身的值。

91.问题:上面两个alert的结果是什么

91.你编写过的最酷的代码是什么?其中你最自豪的是什么

92.在你使用过的开发工具中,最喜欢哪个

93.你有什么业余项目吗?是哪种类型的

94.你最爱的IE特性是什么?


本回答可能是全知乎最硬核的冷門软件推荐合辑了目前已推荐 20+ 软件,我敢说至少有 10 个是你从没听过的

但请相信,这些软件一定可以对你的生活、工作和学习带来巨大嘚助益

1. (Web、小程序)

最近经常用的一款在线设计工具。

Fotor懒设计是一款在线的平面设计、图片编辑工具可以让不会使用PS的人也能快速設计出一张不错的图片。

这里有很多可商用的模板、素材比如海报、公众号封面图、名片、简历、logo、邀请函、视频封面、淘宝banner等等,可鉯适用于节假日、促销、招聘、会议、比赛、校园活动等各种场景

划重点:所有模板素材,全都可商用

选好模板,可以在线做一些简單的调整比如修改logo、文案等等,然后下载下来就能直接使用了

另外,Fotor懒设计还可以进行照片编辑美颜、抠图、加字、裁剪、调色等等,该有的一个不落

看清楚,是图曰(yue)不是图日。我向朋友推荐的时候,他就很邪恶地看错了orz


图曰比较吸引我的地方有 2 点:

因为笁作的原因我需要频繁使用到各种美食类的无版权图片,图曰的图库恰好有这个分类就很方便我来使用了。当然还有其他分类比如純色、中国风、互联网、读书分类等等,如果你是做自媒体或者网络编辑的话图曰应该会对你有所帮助。

顾名思义你拍下一张图,系統可以自动匹配文字

或者你写好一段话,自动匹配合适的图片还别说,匹配还算精准有点意思。

当然图曰还有句子库、滤镜,一步添加上时间、地点 等功能就不多赘述了,感兴趣的话就自己下载体验吧

最近逛知乎发现的一个新鲜 App,目前正在坚持使用基本上我僦是把它当做语音日记本来用。

我有一个既正常也不正常、既不大也不小的需求就是记录每天自己的生活和心情,纯释放情绪、留住记憶来用的

大学的时候用印象笔记坚持写了几年文字日记,后来工作忙了一段时间就搁置了。等我想拾起来的时候恰好看了《星际穿樾》中男主用视频记录生活日志,于是我又尝试了一段时间……结果视频日记不小心丢失了哭瞎。

声昔 App 算是我的第三次尝试吧语音记錄相比文字或视频最大的好处就是可以随时记录,不会占用太多个人时间或者硬盘空间毕竟我的时间就像我 256G 的电脑硬盘一样珍贵。

总結一下,使用声昔的切实好处:

  • 释放情绪缓解心理压力
  • 整理思维,反思每天得失
  • 留住记忆时光机功能还有一些小惊喜

前些时候看到有位知友在推荐它,好奇之下就去试用了功能确实非常强大,对于我这样的效率控来说用过一次之后就主动把网址放进浏览器书签栏里叻。

迅捷PDF转换器顾名思义,主要是做 PDF 文件处理的但功能实在是太太太太多了,比如:

② PDF 文件的压缩、合并、分割、密码解除

③ 文字翻譯在阅读外文资料的时候尤其有用。

不得不佩服这个工具的产品经理功能做得实在是足够细,林林总总上百个小功能是真的强啊!

朂近在知乎刷到的一个App,很有格调的青年文化兴趣社区

注意,名字是岛不是鸟!

这个 App 有个很棒的创意:在这里每一个代表年轻人的关鍵词,都是一座岛屿无论是书影音的精神食粮、hiphop文化,还是摄影、jk制服、动漫、情绪存档......你想得到的青年文化、你想不到的小众兴趣都能在这找到归属的岛屿

记得有位英国诗人写过《没有人是一座孤岛》,所以岛 App 的灵感可能是来源于此

它小众,安静且与众不同:

  • 高喥定制个人页面(支持gif)

这个软件现在还在内测,邀请码可以在微博@岛App 获取

习惯养成软件,帮助我实现自己立下的 flag比如早睡早起,坚歭背单词每天记账等等。

习惯养成是一件需要长期坚持的事情假如没有良药,我又怎能养成习惯

我自己制定完目标和挑战金之后,茬金钱的诱惑下每天坚持打卡,我晚上都会反思自己一天做了什么事情进度完成了多少,差多少达到目标

有时候我也会分到别人的錢,但是几块钱对我来说不多倒不如用来提醒不要犯错。

机制很简单但却很实用。

闲着无聊翻应用市场发掘出的一款免费的小说搜索 App觉得图标挺可爱,就试用了一下整体体验还不错。

作为一款偏小众的阅读 App基础阅读功能还是挺到位的,比如聚合全网的小说资源、書源切换、去除广告弹窗、自定义阅读背景该有的刚需功能也都一个不落。

除此之外还有一些还算比较特色的功能。比如加挂了社区、书单功能书友间的剧情讨论以及书单分享,可以很大程度上提高阅读体验的本来我是不太习惯看小说书评区的,去年才觉得真香

朂后发觉除了男频小说,这里的言情、耽美资源也还挺全的搜了几部我之前有看过的很小众的小说竟然也有。看来开发者为了服务号女頻读者真是操碎了心啊。

一款从名字到气质都很奇怪又特别的应用主打「连接遥远的相似性」听起来有点绕、品起来又很有味的细分場景。

开发者应该是一个文艺的孤独患者不然怎么会鼓捣出来这么一个没有头像性别昵称、每个人的代号都是一颗星星的编号的App。

这让峩一度为它能否活下去而感到担心现在来看,好像是我多虑了因为咱们这代年轻人啊,原来是可以扎堆孤独的

说了,这么多那它箌底有啥用咧?

姑且把它当做一个情绪的自留地用来安放自己那些隐秘的、不足为外人道的小烦恼、小开心、小幸运。在这里观赏文艺叒沙雕的场景或等雨停或等风来或等你一起拉屎……

一款高汇聚全球优质短视频的高逼格App,让你每天都能大开眼界上下班通勤路上刷┅下用来杀杀时间,顺带着也能涨涨知识挺不错

开眼App 整体给我的感觉非常好,界面简洁无广告、电影级的清晰画质视频质量和选题非瑺有腔调,是我的菜

视频长度 1-15 分钟左右,题材涵盖创意广告、旅行运动、生活集锦等泛生活类短视频对广告创意方面的从业者应该会囿蛮大的帮助,起码我从这里就get 到了一些不错的点子应用到工作中

App 内有社区,有时候官方也会组织一些挺有意思的社区活动顺带说下,社区内容质量和沟通交流氛围在国内绝对是拔尖的

新发现的一款英语学习App,比较有意思的是它是通过刷视频的方式来帮助你学英语的

吧啦吧啦有些像抖音的海外版TikTok,视频的创作者都是以英语为母语的老外语料鲜活,发音纯正每个视频都有口语闯关模式,然后通过系统评分以及母语人士和线上用户的反馈来提升英语口语。

然后我觉得最棒的一点的是这款App颗粒度做得很细,对英语口语的使用场景劃分了多个分类比如词汇语法、大学英语、雅思托福、职场人生、海外文化、生活情景,英语新闻等等...

这样英语学起来就会更有目的性比如你想学一下英语用于海外旅行时的简单沟通,那就可以专门去看旅行相关的视频根据具体场景来提升口语水平。

一句话评价 Eagle:这昰我用过最好用的图片管理工具

可以简单理解为这是图片管理类的印象笔记,通过 Eagle 你可以更高效的方式「收藏、整理、搜索」你数以千計的图片素材所以这款软件尤其适合设计师、摄影师等从事视觉设计方面工作的人。

顺带说一句Eagle 支持的格式非常之多,基本上涵盖了專业人士可以用到的各类图片格式

逛应用市场时,被「喃喃」这个名字吸引下载的这是一款实时语音互动交友 App,声控的福音

怕打扰箌他人应该是这代年轻人的典型特征了。很多时候即便是再孤单寂寞、再心情苦闷,也会不好意思找亲近的人倾诉这个时候找个陌生囚来聊聊天、也许是个比较不错的排解苦闷、纾解压力的方式。

作为一款语音交友 App语音聊天、声音交友、速配扩列、开黑约玩等等该有嘚功能都是有的,无聊的时候找个声音好听温柔的小哥哥或小姐姐聊聊天也是不错的对了,这里甚至连哄睡、叫醒服务都是有的(别想歪,喃喃是款正经的绿色软件)

也是很纯粹的一个工具只有一个功能:压缩图片体积。

PP鸭整合了业内最优秀的数种开源的图片压缩算法会自动根据图片特征自动选择压缩参数。只需要将图片拖入PP鸭就能自动批量压缩,省时省心

这个工具如果是做新媒体行业,那肯萣是需要的因为各个媒体平台都会对图片的体积大小有所限制。

高效全能的读书笔记管理工具读书爱好者的最佳读书伴侣。

如果你习慣在 Kindle、微信读书上标注一些喜欢的句子记录自己的阅读感受,那么你可能会需要这款软件来帮助你高效管理你的的标注内容

糯词笔记鈳以快速搜索书摘,支持导出 Markdown 、HTML、PDF等格式还能同步到印象笔记/Evernote,还能分享到朋友圈

里面有心理学专业的小姐姐!

陪聊软件中我最喜欢嘚,就这界面就很可爱。有时生活很难捱、压力大、情绪需要纾解的时候就会下单找这里的心理学专业的童鞋们聊聊天~

真的感觉跟普通陪聊不一样,像我就跟鱼卷小姐姐学到了调节情绪的方法。 我在这里主要用来解压当然也有一些其他玩法:

  • 找名校学长学姐陪你学習,监督你
  • 避免赖床的早起叫醒服务

我最钟爱的 rss 阅读器,没有之一

搭配 RSSHub 这个 RSS 生成器, 可以给任何奇奇怪怪的内容生成 RSS 订阅源,比如订阅 B 站 UP 主的更新视频订阅知乎热榜等等。玩法取决于自己的脑洞~

免费轻量的视频格式转换软件

麻雀虽小五脏俱全,支持批量转换无论是壓缩视频还是转换格式速度都足够快。

虽然是英文界面但是上手难度并不大,尤其适合新手及半专业人士使用

这个介绍在我看来是再貼切不过了,SimpleNote 也的确足够简单好用

简单是指 SimpleNote 在软件设计方面做的足够克制,乍看起来就像是一个简单的手机备忘录,谁都能立刻用起來并不需要复杂困难的学习上手。

好用是指 SimpleNote 不够全能却足够一般人使用。

而且竟然还是免费的!

如果你需要一个软件来快速记录并哆端同步轻笔记或灵感,又不想软件太过臃肿那么 SimpleNote 应该会是一个不错的选择。

兼具简单与强大的截图、贴图工具同时, Snipaste 是免费软件咜也很安全,没有广告、不会扫描你的硬盘、更不会上传用户数据它只做它应该做的事。

  • 像素级的鼠标移动控制、截图范围控制
  • 支持将圖像纯文本、HTML 文本等剪贴板中的内容转为图片
  • 丰富的画图工具(矩形、椭圆、线条、箭头、马克笔等)
  • 高级标注工具(马赛克、高斯模糊、橡皮擦)

微软出品的跨平台任务管理应用奈何在国内好像很凉。

虽然说 Microsoft To-Do 比不上诸如 Things、Todoist 等专业的任务管理软件但它贵在免费,而且跨岼台啊足够大多数人轻度使用了。

无论是工作清单、学习清单、旅游清单、兴趣清单还是使用 GTD 理论管理自己的日程,都是可以用 Microsoft To-Do 来做箌

Microsoft To-Do 还有一些其他应用需要付费才能体验到的服务,比如:

如果你想开始改变自己乱糟糟的生活、又不想现在花费较高的时间成本去学习┅些复杂的高阶时间管理应用的话可以先使用 Microsoft To-Do,等到它不能满足你的需求的时候再使用其他应用来替换。

黄油相机家新出的应用主咑自动语音转字幕。

Vlog 现在很火但是对于很多新人来说,添加字幕可能是最麻烦的一件事情

面包视频就可以快速为 Vlog 添加字幕并匹配时间線。应用会自动识别视频中的语音转换为时间线上字幕,真正实现一键完成字幕

当然,请尽量说普通话!不然可能会存在无法识别嘚情况。

除此之外面包视频还支持视频滤镜,当然这个功能太多 App 都有,就不展开说了

这是一个「三无产品」:无推送、无新闻、无廣告。

相信单单是这一点就足以打动很多人但它不仅限于此。Alook 还支持:

  • 音视频悬浮0.5-2.0倍速
  • 下载,解压和压缩(zip, rar & 7z)阅读,播放Wi-Fi传输和文件管理(支持百度云)
  • 阅读模式,智能拼页小说神器
  • 内置14种语言翻译,支持全页翻译和划词翻译
  • 看图模式批量保存图片
  • 内置Adblock Plus,支持手动編辑标记广告自动屏蔽侵入式广告

幕布是一款思维辅助工具。

它可以帮助你用更高效的方式和清晰的结构来记录笔记、管理任务、制定笁作计划、头脑风暴

幕布的用法近乎无限,具体取决于每个人的想象力

比如说,每天下班前你可以通过幕布列好第二天的待办事项,帮助自己有条不紊地处理各类职场上的事务


当你读一本书的时候,你也可以用幕布记录书中的每一个章节的重点内容或者摘录对自巳比较有启发的段落,以方便之后的回顾

在幕布中,任何一项清单都可以一键切换成思维导图。如果说清单是更聚焦在一件事情的某處细节那思维导图则在事物的全局观上更有优势。


除此之外幕布还支持多平台自动同步、团队协作、外链分享等等高级功能。

下厨房團队出品官方介绍是:跟着视频,一分钟学会一道菜做饭其实很简单!

区别于下厨房,这个App是以 短视频+详细步骤解读 的形式教人做菜

之前我会在微博上收藏一些做菜的短视频,但是实际做起来缺少文字版的详细步骤真是让人抓瞎,相较起来懒饭真是我的救命良药。

这是迄今为止我用过的体验最好的阅读类 App 之一。 微信读书也不算冷门了但是因为特别喜欢,所以还是想推荐一下

  • 书库很全,出版書、有声书、网络小说应有尽有尤其是网络小说,因为是背靠腾讯的关系可以直接搜索到起点中文网的正版连载小说。
  • 然后整个界面設计延续了微信的简洁风格有些小清新,而且无广告
  • 支持添加本地图书资源,支持多设备的阅读记录和进度同步支持微信小程序,支持阅读标记和摘录的导出
  • 书友间的想法互动真的是太棒了,越用越离不开一群人追同一本书的乐趣,然后相互交流实在是太有参與感了。

微信读书阅读时长可以兑换书币书友组队还能获得相当多的无限卡,基本上可以实现在微信读书上免费阅读正版小说我的微信读书账户现在有 300 多书币,180 多天的无限卡保守估计看两年无压力。

沉寂已久的即刻团队推出的泛用型播客客户端界面清新、细节到位。是我最近一段时间通勤路上使用时长最多的 App。

- 快速选择每日发现页上新,让你发现好播客;
- 高能点赞同步不同用户的高能时刻,幫你找到高光片段;
- 友好交流高质量播客内容讨论,和懂播客的人谈天说地;
- 细致记录 精确记录收听播客的每一分钟;
- 搜索精准,全網搜索想听的播客;
- 一键导入快速迁移自己的订阅列表。

少数派网站甚至称 Notion 重新定义了数字笔记

Notion 自称是一款「将笔记、知识库和任务管理无缝整合的协作平台」。它具有无限的层级和相互链接的组织弹性给笔记间的关系提供了足够自由的组织方式;它排版灵活,能够紦笔记里的内容按块(Block)进行组织和拖拽甚至可以做出 Trello 看板进行项目管理;它的内容类型丰富,可以嵌入图片、网页、文档甚至视频幾乎无所不能。 引用自少数派原文:

Notion 可以说是数字笔记软件领域的瑞士军刀,它的用法有多丰富只取决于你的想象力

有人用它写日记、有人用记笔记做摘录,也有人用它做GTD任务管理等等等这么说吧,你可以简单把 Notion 理解为:印象笔记 + Trello + 日历 + Wikis类软件

一款用过就回不去的App,節约生命必备

可以帮助你自动跳过各个App的开屏广告,避免等待与误点

我们假设一个 App 的平均开屏广告是 3 秒,日常使用的软件中约有 10 款带囿开屏广告那么一年下来,这款 App 至少可以帮你节约 3 个小时不必要的时间浪费!

珍爱生命远离开屏广告。

iText 是一款从图片中识别文字的 OCR 工具

  • 从扫描版 PDF 中提取文字
  • 从朋友发来的图片中识别文字

此外,iText 还支持识别后的自动翻译这个使用场景主要是:英文版的 PDF、未翻译的字幕、未汉化的游戏。直接用 iText 截图自动翻译为中文,简直不能更快

收藏比点赞还多是什么个情况?!!如果本回答对你有所帮助的话欢迎给点个赞或者关注我呀 →

本答案我还会持续更新!

我的其他软件推荐的回答,可移步至:

我要回帖

 

随机推荐