前端问题答案讨论

承接上篇文章的前端知识。以下对于知识的解答,有些比较初略,但是对于面试的你,应该能有点帮助。

接下来我说的,如果有疑问,或者有不同见解,或者觉得有error的地方,希望能告诉我,谢谢。

1、我所理解的二分查找(折半查找):

       a、 数组Array中的元素是按照升序排列之后;

       b、 然后取L=0, R=array.length-1, 查找的值设为key,L值是数组下标为0,R值是数组长度-1

       c、 function  bsearch() {

  // 如果查找的时,L > R 结束

          while (L <= R){

  // mid值为最中间的值,ps: 当奇数+偶数的时候,除以2取值是向下取整。防止数据超过int存储时,建议mid最佳的写法是mid = L + ((H-L)/2)

                  Mid= (L+R)/2;

// 因为按升序排序的,当处在数组下标为数组长度一半的值大于key的情况下,说明,key值应该是处在数组下标为L 和Mid-1 中间的值

              if (array[Mid]  >  key) { 

                  R =Mid-1;

              } else (array[Mid]  < key) {

                  L = Mid+1;

              } else {

                                  return Mid; //正好相等,说明找到返回key值,返回key值的正确的数组下标mid值

              }

           }

           return -1; // 如果没有找到返回 -1.即数组里没有等于key的值。

       }

     d、array[mid]即为所求的key值。mid即为下标值。

    e、时间复杂度为:logn

    f、二分查找的基本思想是将n个元素分成大致相等的两部分,取array[n/2]与key做比较,如果key=array[n/2],则找到key,算法中止;如果key<array[n/2],则只要在数组array的左半部分继续搜索key,如果key>array[n/2],则只要在数组array的右半部搜索key.

时间复杂度无非就是while循环的次数!总共有n个元素,渐渐跟下去就是n,n/2,n/4,....n/2^k(接下来操作元素的剩余个数),其中k就是循环的次数,由于你n/2^k取整后>=1,即令n/2^k=1,可得k=log2n,(是以2为底,n的对数)。所以时间复杂度可以表示O()=O(logn)

2、DOM 是文档对象模型。DOM 定义了所有 XML 元素的对象和属性,以及访问它们的方法(接口)Node 对象是整个 DOM 的主要数据类型。节点对象代表文档树中的一个单独的节点。

3、这个我基本用的插件。

4、es6是新提出了类的概念。

5、js是面向原型。C++是半面向对象半面向过程语言,因为他实现了类的封装、继承和多态,但存在非对象性质的全局函数和对象。

6、react 最突出的地方就是虚拟DOM和组件。虚拟DOM使dom操作到视图刷新变得现实,组件化是团队更易解决协作复杂的前端问题。react实际上是单向数据流。angular主要是指令、双向数据流。

7、对于表单,用form 绑定submit 、onchange、这两个函数,submit 用于提交、onchange用于input框的值的输入的检测,其他的实现没啥区别。在约束表单的组件时,可以在react中重用一个事件处理器。

8、seo是搜索引擎优化。。。。。。。。。。

9、响应式布局略。

10、盒模型:border、margin、padding、内容。css中的盒子模型是为了让你充分理解div+css的模型的定位功能。

11、HTML5在HTML4上新增了许多新的标签。比如canvas、等标签。而且语义化更强一点。

12、css3 有transform、border-radius、border-shadow等新属性http://www.ibm.com/developerworks/cn/web/1202_zhouxiang_css3/

13、正则、这个我没法描述。

14、Webpack是一款用户打包前端模块的工具。主要是用来打包在浏览器端使用的javascript的。同时也能转换、捆绑、打包其他的静态资源,包括css、image、font file、template等。个人认为它的优点就是易用,而且常用功能基本都有,另外可以通过自己开发loader和plugin来满足自己的需求。http://www.open-open.com/lib/view/open1450681593198.html

15、mvvm是小型的modal view view modal框架。双向数据流;

16、语义化标记可以让开发者更能明白你的代码核心。比如开发者人员更容易捕获你文章的某些字段。

17、闭包的好处就是读取函数内部的变量,可以让这些变量的值始终保持在内存中、http://www.cnblogs.com/syf/archive/2012/10/04/2711653.html

18、viewport是视口的大小,移动端设备适配神器。http://www.php100.com/html/webkaifa/HTML5/2012/0831/10979.html

19、异步执行,一般在api调用或者说ajax中常用。http://www.jb51.net/article/54641.htm

20、promise 是js中的es6的新属性,异步机制。http://www.infoq.com/cn/news/2011/09/js-promise

 21、最佳实践是说在可供选择中做最优的选择

22、this指针:this指针代表的是执行当前代码的对象的所有者。

23、作用域的问题:详见:http://blog.csdn.net/yueguanghaidao/article/details/9568071

24、创建对象:

a、使用内置对象,可以用new; 如 var obj = new object();

b、使用JSON符号 如{name:"xiiaoxiaosu",age:"22",sex:"女"} 

c、自定义对象构造 如function girl () { this.name="xiaoxiaosu";} function Girl () {Girl,prototype.name="xiaoxiaosu";}

 

 


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值