菜鸟面试基础准备

• json是一种数据格式(键值对),是js的内置对象(如Math对象)

• json的数据类型:number、string、boolean、null、undefined、object

•   将对象序列化成json: JSON.stringify( 对象 ) :

                                     JSON.stringify( 对象 , null , ' ' );

                                     第二个参数筛选。第三个参数按缩进输出,可以传入Array

                                     还可以传入一个函数,这样对象的每个键值对都会被函数先处理

•   反序列化:JSON格式的字符串,用JSON.parse()把它变成一个JavaScript对象:

json实例

• JavaScript对象中的key没有引号,json中的key有引号。


• typeof( null / [] / {} )  ==> "object"

• typeof(undefined)  ==> "undefined"

• null == undefined  ===> true  (与下行对比记忆)

• typeof  null     ===>   object

• 双等时,更偏向转化成Number

                        包装对象                                         普通对象

           typeof    new  Number(123);       // 'object'              typeof123;    // 'number '

           typeof    new  String( 'str' );       // 'object'               typeofNaN;   // 'number

           typeof    new   Boolean(true);     // 'object'              typeof'str';    // 'string'

           typeof包装对象 == ‘object’                                       typeoftrue;    //'boolean'

                                                                                              typeofundefined;   // 'undefined'

                                                                                              typeofMath.abs;    //'function'

                                                                                              typeofnull;     // 'object'

                                                                                              typeof[];       // 'object'

                                                                                              typeof{};// 'object'    


关于获取时间:

var now =newDate();

now;                             // Wed Jun 24 2015 19:49:22 GMT+0800 (CST)

now.getFullYear();       // 2015, 年份

now.getMonth();          // 5, 月份,注意月份范围是0~11,5表示六月

now.getDate();             // 24, 表示24号

now.getDay();              // 3, 表示星期三

now.getHours();           // 19, 24小时制

now.getMinutes();        // 49, 分钟

now.getSeconds();       // 22, 秒

now.getMilliseconds(); // 875, 毫秒数

now.getTime();              // 1435146562875, 以number形式表示的时间戳

//  时间戳是一个自增的整数,它表示从1970年1月1日零时整的GMT时区开始的那一刻,到现在的毫秒数。假设浏览器所在电脑的时间是准确的,那么世界上无论哪个时区的电脑,它们此刻产生的时间戳数字都是一样的,所以,时间戳可以精确地表示一个时刻,并且与时区无关。

获取时间戳:

' use  strict ' ;

if (Date.now) {

       console.log(Date.now()); // 老版本IE没有now()方法

} else {

       console.log(new Date().getTime());

}

JavaScript的Date对象月份值从0开始,牢记0=1月,1=2月,2=3月,……,11=12月。


原型:


this指向:

1、 this 在函数里面

      对于全局性函数调用,函数内部的this就是指的全局对象window,即是:this是调用函数所在的对象。

2、this 在构造函数里

     声明一个构造函数的实例对象时,构造函数内部的this都会指向新的实例对象,或者说,构造函数内部的this指向的是新创建的对象本身。

3、在对象的方法中调用

     当person对象调用info()函数时,info函数内部的this指向的就是person对象。即,当this出现在对象的方法中时,那么该方法内部的this指向的就是这个对象本身,也就是说this指向的调用函数的对象。

总结:函数内部的this都是代表当前对象,只不过是JavaScript中函数内部的this会随着程序而指向不同的对象。

那么我的问题是:我们能不能手动修改this的指向呢?

答案:可以的,使用call或者apply。这个也就是call和apply的作用-->改变函数内部this的指向。

call /apply  :  使用指定的对象调用当前函数(Function对象中的方法)

两个方法的功能完全一样,唯一区别就是参数。

第一个参数:表示的是函数执行时,this指向谁

第二个参数:apply要求传入的是一个参数数组,也就是说将一系列参数组成一个数组传入,而对于call来说,散列的的参数值的方式传入。例如,func(thisObj,arg1,arg2,arg3...)对应的apply用法就是func(thisObj,[arg1,arg2,arg3...])

第三个参数:


上面的代码就解决了问题,分析:就是说,当在函数中调用call方法时,函数内部的this会自动指向call方法中的第一个参数。上面的例子中,当执行info.call(p1)时,info函数内部的this则会自动指向p1对象,所以当然就可以call这种方式来完成对p1对象的打印。

参考地址: http://baijiahao.baidu.com/s?id=1595639654879064333&wfr=spider&for=pc 


==和===的区别:    主要要说(强制类型转化)

按位或:先转化为二进制,然后按位或        

eg:C语言中5|7 :

        5的二进制是101,7的二进制是111,由于是按位或,所有每个位置有一个1就行,最后111,是7的二进制,答案为7


• 非严格模式下:setTimeout执行函数中的this,所指向永远是window(延迟执行函数中的this)

• 严格模式下:setTimeout执行函数中的this,所指向为undefined


• 普通事件中的onclick是DOM0级事件只支持单个事件,会被其他onclick事件覆盖,而事件绑定中的addEventListener是DOM2级事件可以添加多个事件而不用担心被覆盖


• web worker 是运行在后台的 JavaScript,独立于其他脚本,不会影响页面的性能。您可以继续做任何愿意做的事情:点击、选取内容等等,而此时 web worker 在后台运行。


• 网站文件资源优化:

            CDN  (内容分发网络)

            文件合并  ( 例如雪碧图 )

            文件压缩

            使用缓存

• 前端性能优化

            配置超长时间的本地缓存 —— 节省带宽,提高性能

            采用内容摘要作为缓存更新依据      —— 精确的缓存控制

            静态资源CDN部署                          —— 优化网络请求

            更资源发布路径实现非覆盖式发布  —— 平滑升级



• WEB应用从服务器主动推送Data到客户端的方式

            html5 websoket

            WebSocket通过Flash

            XHR长时间连接    

            XHR Multipart Streaming

            不可见的iframe


• 存储

      html5中的 Web存储

        1、客户端储存数据的方式

          localStorage:               没有时间限制的存储,关闭浏览器后数据还存在

          sessionStorage:          针对一个session的数据存储,浏览器关闭,数据消失

         对比:cookie(非h5):             

                     储存用户名等数据,但不适合大量数据,速度慢、效率低、有时间限定

                     cookie不是加密的;

                    用户可以删除;

                    可被篡改,可用于攻击;

                    存储量小

                    明码存储

         对比:session (非h5) : 

                    • 携带某id码,将其name/age类的属性携带给服务器,服务器上记录或者缓存(name/age等),缓存的东西服务器自己存上,不返回给用户,发给用户乱码。

                    • 当用户携带上述乱码,服务器开始进行信息比对

          对比:session和cookie

                    • session到浏览器后,下发的是乱码。

                    • session依赖cookie,当浏览器禁用或者清除cookie时,需要重新登录。

   2、应用缓存与Web Workers

            <html  manifest = " index.appcache ">

                   接着,在index.appcache文件中进行设置

                (CACHE  MANIFEST     首次下载后进行缓存)       

                (CACHE:缓存)

                (NETWORK:  不允许缓存,需要与服务器连接)

                (FALLBACK: 当页面无法访问时的回退页面,如404页面)



ES6提供的二进制操作:

ArrayBuffer、TypeArray、DataView


reflow:回流

( 浏览器为了重新渲染部分或整个页面,重新计算页面元素位置和几何结构的进程 )      只要用户行为引起了页面上某些元素的占位面积、定位方式、边距等属性的变化,都会引起它内部、周围甚至整个页面的重新渲 染。所以重新计算页面元素位置和几何结构就是回流

repaint:重绘。

如果只是改变某个元素的背景色、文 字颜色、边框颜色等等不影响它周围或内部布局的属性,将只会引起浏览器 repaint(重绘)。


HTML5 布局标签:(h5的设计目的:为了在移动设备上支持多媒体)

header、nav、footer、aside、article、

hgroup、section、figure、menu(主流浏览器不支持)


线性渐变:

background: linear-gradient  (to bottom left , #fff , pink);

//    从右上角到左下角,左下角为#fff,右上角为粉色


TCP中的RTT和RTO:

RTT,客户端到服务器往返时间。

RTO,重传超时时间。

https和http的区别:

区别:【能答对一半即可】

1. http 的URL 以http:// 开头,https以https:// 开头

2. http 标准端口是80 ,https是443

3.https 协议需要到ca申请证书,http不需要。

4.http 是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议

5.http 的连接很简单,是无状态的,https协议是由SSL+http协议构建的可进行加密传输、身份认证的网络协议 要比http协议安全

优点:1. 通过证书可以更信任服务器2. 更安全,防篡改

缺点:1. https 需要证书。2. 因为对传输进行加密,会一定程度增加cpu消耗。3. 由于https 要还密钥和确认加密算法的需要,所以首次建立连接会慢一些。4. 带宽消耗会增加。


数据结构:

• 不是所有的递归转化为非递归都要用到栈。

       转化为非递归主要有两种方法:

                        对于尾递归或单向递归,可以用循环结构算法代替;                

                        另外一个才是栈的方法。

•  标准ASCII编码是(7)位编码

•  链表所需空间与线性长度成正比

• 占用辅助空间最多的是:       归并排序

所有简单排序(包括 希尔 )和堆排序复杂度都是0(1)  

快速排序为0(logn),要为递归程序执行过程栈所需的辅助空间  

选择排序,快速排序都不需要开辟额外的空间

归并排序和基数排序所需辅助空间最多,为O(n) 

归并排序(占用辅助空间最多)

优点:相比其他改进的排序方法,只有它是稳定的。

缺陷:归并过程需要一定的内存来存放归并结果。快速排序只有在最坏情况下,递归树是不平衡的斜树时,空间复杂度是O(n).

• 折半查找 (二分查找)

  试用条件:( 顺序方式存储,元素有序 )

                线性表中的记录必须按关键码有序;

                必须采用顺序存储;

• 顺序存储,随机存取;链式存储,顺序存取。

•  帧中继的设计主要是以广域网互连为目标


jQuery遍历:

this与index()的使用
tab选项卡的选项样式更改




.webp是谷歌新推出的一种图片格式,可以让网页图片有效进行压缩,不影响清晰度和兼容性。加快网页下载速度

适用于:Webkit内核。。。

build中的属性‘modernizr’,检测用户浏览器是否支持html5或css某特性的js库。


值类型何和引用类型:(内存)

值类型一个数据一块内存;

引用类型只存储一个对象,其他的变量存储的是指针,并指向该对象。(对象 、  数组 、  函数)


typeof 只能检测值类型,不能检测出引用类型,因为结果都是‘object’,除了函数外。


变量计算:(强制类型转换)


const,var,let区别

1.const定义的变量不可以修改,而且必须初始化。

2.var定义的变量可以修改,如果不初始化会输出undefined,不会报错。

3.let是块级作用域,函数内部使用let定义后,对函数外部无影响。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,117评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,328评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,839评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,007评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,384评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,629评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,880评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,593评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,313评论 1 243
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,575评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,066评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,392评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,052评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,082评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,844评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,662评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,575评论 2 270

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 170,569评论 25 707
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,100评论 18 139
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,015评论 11 349
  • 花朝节是纪念百花的生日,简称花朝,俗称“花神节”,是我们的传统节日,却多已被遗忘,甚是遗憾。 近来得闲又兼...
    雨夜听窗阅读 386评论 3 6
  • 上午面试,问的什么问题已经不太记得了,随心所欲的回答,等通知果然应该是没有机会了,与友人一起去面试,友人周一去试岗...
    南安怎么安阅读 193评论 0 0