前端实习生笔试_前端面试实习题目总结:

以下是部分整理,有时间还会整理出其他的~~

(最近还在找实习呜呜~~)

1.JavaScript是一种弱类型语言,有什么优点和缺点

https://blog.csdn.net/sinolze...

(1)强类型定义语言:强制数据类型定义的语言。也就是说,一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它就永远是这个数据类型了。举个例子:如果你定义了一个整型变量a,那么程序根本不可能将a当作字符串类型处理。强类型定义语言是类型安全的语言。

(2)弱类型定义语言:数据类型可以被忽略的语言。它与强类型定义语言相反, 一个变量可以赋不同数据类型的值。

强类型定义语言在速度上可能略逊色于弱类型定义语言,但是强类型定义语言带来的严谨性能够有效的避免许多错误。另外,“这门语言是不是动态语言”与“这门语言是否类型安全”之间是完全没有联系的! 例如:Python是动态语言,是强类型定义语言(类型安全的语言); VBScript是动态语言,是弱类型定义语言(类型不安全的语言);JAVA是静态语言,是强类型定义语言(类型安全的语言)。

.类型定义

JS是一种弱类型语言。JS拥有动态类型,相同的变量可以用作不同的类型。

JS有7种数据类型:三种基本类型(数字,字符串,布尔),两种引用数据类型(对象,数组),两种特殊数据类型(undefined,null)。JS有5种原始类型:数字,字符串,布尔,undefined,null。

typeof 运算符就是检测变量或值的数据类型。

1.1.undefined类型只有一个值,undefined.

所有已声明但是没有初始化的变量,默认值都为undefined。

函数没有明确返回值的时候,会默认返回undefined。

1.2.null为空对象,只有一个值,null

undefined与null相等。

null表示尚未存在的对象。

当函数返回的对象不存在时,返回null。

当某个对象不需要时,可将值设为null。

3. 在js里call()与apply()有什么相同和不同?

call 方法:调用一个对象的一个方法,以另一个对象替换当前对象。

call([thisObj,arg1, arg2, ...,argN)

参数thisObj:可选项,将被用作当前对象的对象。

arg1, arg2, …, argN:可选项。将被传递方法参数序列。

说明:call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。说明白一点其实就是更改对象的内部指针,即改变对象的this指向的内容。

call函数和apply方法的第一个参数都是要传入给当前对象的对象,及函数内部的this。后面的参数都是传递给当前对象的参数,对于apply和call两者在作用上是相同的,但两者在参数上有区别的。

对于第一个参数意义都一样,但对第二个参数:apply传入的是一个参数数组,也就是将多个参数组合成为一个数组传入,而call则作为call的参数传入(从第二个参数开始)。

如 func.call(func1,var1,var2,var3)对应的apply写法为:func.apply(func1,[var1,var2,var3])

同时,使用apply的好处是可以直接将当前函数的arguments对象作为apply的第二个参数传入

4. XML和JSON有过了解吧?能说一下分别介绍一下他们吗?JSON有什么优势

如果要表达数组呢?XML中可以在父节点下面累放节点,而JSON则有[ ]这样更直观的方式。

如果字符串中有换行符怎么办,JSON不存在这个问题,而XML必须引入CDATA解决问题

当上面的standalone为yes的时候表示DTD直接写到这个XML里面去,这样,就不需要额外的DTD文件了,也就是说,这个文件不但是自解释,还是自校验的了。而这一点,JSON是不可能做到的。

另外,XML还可以有命名空间,可以通过xmlns属性引入不同的定义文件,像编程语言的import来自由组合,这一点,JSON也是做不到的

JSON的一大好处是有些语言可以原生支持,比如JavaScript,不需要一个JSON Parser这样的东西,代码里表示对象用的就是JSON格式的表达。但是直接支持XML的编程语言,好像没有吧,倒是有像HTML等等标记语言的解析器,可以处理任意DOM对象。

5.CSS3哪些新特性值得称赞的特点:

CSS3把很多以前需要使用图片和脚本来实现的效果,只需要短短几行代码就能搞定CSS3作为CSS技术的升级版本,着力于模块化发展,将规范分解为一些小的模块,如选择器、盒子模型、列表模块、背景和边框等;并加入了很多新的模块和属性,比如复杂选择器、文字阴影、边框圆角、边框阴影、渐变、过渡、多栏布局、2D/3D 转换、动画等。

其中,CSS3提供了一些复杂选择器,用于实现页面复杂情况下的元素选择,如属性选择器、一些伪类和伪元素选择器;渐变用于为元素设置渐变效果的背景;转换可以实现元素的变换,比如位移、缩放、旋转等;过渡可以实现简单的动画效果;而动画属性则可以实现复杂的动画,可以实现逐帧制作动画。

6.在浏览器那里输入一个网址,会发生什么?

第一步 浏览器查找该域名的 IP 地址

(用到ARP协议获取物理地址 和DNS协议(Domain Name System,域名系统) 获取网络地址,即IP地址)

第二步 浏览器根据解析得到的IP地址向 web 服务器发送一个 HTTP 请求。(用到TCP、IP、以太网协议报头)

第三步 服务器收到请求并进行处理

第四步 服务器返回一个响应(服务器返回一个 HTTP 响应,如果返回状态码304,浏览器可以直接使用之前缓存的资源。对于内容响应,浏览器需要进行响应解码,渲染显示。)

第五步 浏览器对该响应进行解码,渲染显示。( 在浏览器没有完整接受全部HTML文档时,(打开网页,网页显示用到了表示层的HTML协议)它就已经开始显示这个页面了,如果是个静态的页面,那到此就基本结束了。如果是是动态的,那么在浏览器显示HTML时,会获取嵌入在HTML中的对象,浏览器会发送获取请求来重新获得这些文件。这些请求都要经历一个和HTML读取类似的过程。 对于静态的页面内容,浏览器通常会进行缓存,而对于动态的内容,浏览器通常不会进行缓存)

第六步 完成后,浏览器发送异步请求(页面显示完成后客户端仍与服务器端保持着联系。 它会持续与服务器保持联系来及时更新一些页面信息。在浏览器中执行的 JavaScript代码会给服务器发送异步请求。这个异步请求发送给特定的地址,它是一个按照程式构造的获取或发送请求。)

此过程用到的协议:

应用层使用了HTTP协议进行超文本传输,对于服务器后台处理应该有telnet远程调用协议响应用户,DNS协议获取网络地址,即IP地址;打开网页,网页显示用到了表示层的HTML协议;

另外必然用到了传输层的TCP和网络层的IP协议;网络层ARP协议获取物理地址;ICMP协议控制信息的传递,还有很多吧,我就不知道了。

7.正则匹配URL。

协议:

file 资源是本地计算机上的文件。格式file://

ftp 通过 FTP访问资源。格式 FTP://

gopher 通过 Gopher 协议访问该资源。

http 通过 HTTP 访问该资源。 格式 HTTP://

https 通过安全的 HTTPS 访问该资源。 格式 HTTPS://

mailto 资源为电子邮件地址,通过 SMTP 访问。 格式 mailto:

MMS 通过 支持MMS(流媒体)协议的播放该资源。(代表软件:Windows Media Player)格式 MMS://

ed2k 通过 支持ed2k(专用下载链接)协议的P2P软件访问该资源。(代表软件:电驴) 格式 ed2k://

Flashget 通过 支持Flashget:(专用下载链接)协议的P2P软件访问该资源。(代表软件:快车) 格式 Flashget://

thunder 通过 支持thunder(专用下载链接)协议的P2P软件访问该资源。(代表软件:迅雷) 格式 thunder://

news 通过 NNTP 访问该资源。

正则用法和url结构。

protocol :// hostname[:port] / path / ;parameters#fragment

相信大部分只有 [;parameters]这个不太懂,在http权威指南中有介绍这个东西,貌似是针对某些协议,需要验证用户名和密码。用的不多,知道就行。

简单正则规则:w -> a-z[0-9]_

d -> 数字

s -> 空格,换行,tab键等

? -> 0个或一个

-> 0个或多个

-> 一个或多个

^ -> 开头

$ -> 结尾

. -> 任何字符

() -> 子表达式

g -> 全局搜索(要考虑lastIndex)

i -> 忽略大小写

m -> 多行查找

.*? -> 非贪婪模式

-> 将下一个字符标记为特殊字符

a{3,4} -> 最少匹配连续3个a,最多匹配4个连续a

[a-z] -> 匹配a到z的任意一个字符,

8.在和服务器建立连接时,用的是TCP还是UDP?

从原理上,TCP的优势有:

简单直接的长连接

可靠的信息传输

数据包的大小没有限制

任何一个和TCP打过交道的人都知道,要实现一个稳定的TCP网络连接,需要处理各种隐藏的坑,比如断线检测、慢速客户端响应阻塞数据包,对开放连接的各种dos攻击,阻塞和非阻塞IO模型等等。除了上面列出的这些问题外,一个好的TCP模块确实不好编码实现。但是,TCP最糟糕的特性是它对阻塞的控制。一般来说,TCP假定丢包是由于网络带宽不够造成的,所以发生这种情况的时候,TCP就会减少发包速度,举个例子来说,UDP是基于数据包构建,这意味着在某些方面需要你完全颠覆在TCP下的观念。UDP只使用一个socket进行通信,不像TCP需要为每一个客户端建立一个socket连接。这些都是UDP非常不错的地方。这也是人们为什么经常推荐TCP的原因。在用TCP的时候你可以不考虑这些问题,直到你需要同步连接的数量级达到500以上的时候。

9.谈谈笔试中会经常碰到的一类问题-排序算法

冒择路(入)兮(希)快归堆。怎样理解这句话呢?直译就是冒失的选择道路啊,你将很快入土,归堆就是入土为安了。拆开来理解呢,“冒”就是“冒泡”,“选”就是“选择”,“路(入)”就是“插入”,“兮(希)”就是“希尔”,“快”就是“快速”,“归”就是“归并”,“堆”还是“堆”,在每个词后面加上“排序”二字不就是我们常用的7种排序算法

快速排序算法是一种稳定的算法吗?它的最坏复杂度是多少?平均复杂度呢?

快速排序的思想和算法:快速排序算法使用了分治技术

10.那么在C++里面,堆栈最大的不同点是什么?

一个由c/C++编译的程序占用的内存分为以下几个部分

1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。

2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。

3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 - 程序结束后有系统释放

4、文字常量区 —常量字符串就是放在这里的。 程序结束后由系统释放

5、程序代码区—存放函数体的二进制代码

c和c+函数堆栈基本一样,不同的地方是c++函数堆栈要支持异常机制

malloc/free:

1、函数原型及说明:

void *malloc(long NumBytes):该函数分配了NumBytes个字节,并返回了指向这块内存的指针。如果分配失败,则返回一个空指针(NULL)。

void free(void *FirstByte): 该函数是将之前用malloc分配的空间还给程序或者是操作系统,也就是释放了这块内存,让它重新得到自由。

2.内存操作:

malloc函数的参数是接受需要分配的内存字节数,如果内存能够满足请求量,那么将会返回:指向被分配的内存块起始位置

free函数释放的是指针指向的内存(不是释放的指针本身,不会删除指针本身),其中指针必须指向所释放内存空间的首地址

new/free:

1.操作时发生事件:

new的时候会有两个事件发生:1).内存被分配(通过operator new 函数) 2).为被分配的内存调用一个或多个构造函数构建对象

delete的时候,也有两件事发生:1).为将被释放的内存调用一个或多个析构函数 2).释放内存(通过operator delete 函数)

11.数据结构构图:

对于Node.js你了解多少?

Node.js优点:

1、采用事件驱动、异步编程,为网络服务而设计。其实Javascript的匿名函数和闭包特性非常适合事件驱动、异步编程。而且JavaScript也简单易学,很多前端设计人员可以很快上手做后端设计。

2、Node.js非阻塞模式的IO处理给Node.js带来在相对低系统资源耗用下的高性能与出众的负载能力,非常适合用作依赖其它IO资源的中间层服务。

3、Node.js轻量高效,可以认为是数据密集型分布式部署环境下的实时应用系统的完美解决方案。Node非常适合如下情况:在响应客户端之前,您预计可能有很高的流量,但所需的服务器端逻辑和处理不一定很多。

Node.js缺点:

1、可靠性低

2、单进程,单线程,只支持单核CPU,不能充分的利用多核CPU服务器。一旦这个进程崩掉,那么整个web服务就崩掉了。

13. jquery绑定click的方法有几种

第一种方式:

$(document).ready(function(){

$("#clickme").click(function(){

alert("Hello World click");

});

第二种方式:

$('#clickmebind').bind("click", function(){

alert("Hello World bind");

});

第三种方式:

$('#clickmeon').on('click', function(){

alert("Hello World on");

});

});

14.面试时,问.你的优点/竞争力 怎么回答比较好

目前还是大三,没有实习过,所以暂时还没有实习经验。但是很多技能我愿意去尝试,喜欢去接触新的东西,学习新的技能,就是哪里不会学哪里。平时喜欢在一些网站上看学习视频,比如慕课网,腾讯课堂等去学习自己需要掌握的技能。个人一般有比较好的学习习惯和较好的接受新知识的能力,相信能较快适应所在岗位,如果能够入职的话。

无经验:回答凸显你的学习能力。没有经验,并不意味着没有竞争优势。对于缺乏一定经验的应届生或在校实习生而言,你最大的竞争优势就在于你的可塑性。刚毕业,相当于一张白纸的你,没有经过社会的洗礼,自然也不会沾染一些不良的习惯。这时候,如果具有有良好的学习能力和较快的接受能力,能较快的融入工作岗位,那就肯定受用人单位的亲睐。在校期间,你或多或少的都参与过一些社会实践活动。还有的甚至参与过班级或学校管理,策划并组织过相关的活动。这些只要是你参与过的,都是你的财富,不知不觉间都能让你掌握一定的技能。如果,你觉得自己的实践没什么好说的话,也可以从你所学的专业入手,分析一下专业和应聘岗位之间的关系,再说明你如何将所学转化成所用。 分享一个六度伯乐网,可以看到很多关于职场方面的信息和文章。

15. 移动端适配问题

自动适应屏幕宽度之viewport --在html中添加meta标签:网页的宽度默认等于屏幕的宽度。

16.关于未来规划:

首先,很感谢XX提供机会,让我有如此近的距离接近鹅厂,不管最后有没有被录取,进入腾讯实习,因为一直觉得在互联网行业,进腾讯是一件很幸福的事儿,那里都是很优秀的师兄师姐,可以学习到很多技能和学习态度,所以一直很期待能进入腾讯实习工作。对于短期的规划是,把手头上的事情做好,为不久到来的实习做好更充分的准备,学习更多的技能,不松懈,但也会注意劳逸结合,毕竟身体才是革命之本,然后争取所在的实习阶段做一个优秀的实习生,成就一个更好的自己。长远一点,工作的话,继续保持不断进取奋斗的热情以及向领导和同事虚心请教的态度和喜欢继续挑战新知识的态度去对待工作从而全面提高自己的学习修养和能力,生活上也要保持积极乐观的生活态度,去应对生活和学习中大大小小的问题。

17. http协议知识整理

http协议是一个应用层的协议。规定了浏览器和服务器之间的通信规范。通常用TCP连接方式。

2.HTTP 1.0、1.1 连接的方式。

在HTTP 1.0 中,浏览器和服务器使用的是短连接,响应完,立即断开。请求的过程:3次握手,请求,响应,断开连接。

http不保存连接,好处:服务器可以处理更多的连接,但是每次建立连接会降低处理速度。

现在主流的版本是HTTP 1.1 ,在HTTP 1.1 中我们使用长连接,一个请求结束后,不断开,继续请求。

告知服务器意图的 HTTP 方法:

GET 请求获取Request-URI所标识的资源(获取资源)

POST 在Request-URI所标识的资源后附加新的数据,常用于提交表单。(传输实体主体)

HEAD 请求获取由Request-URI所标识的资源的响应消息报头(获取报文首部)

PUT 请求服务器存储一个资源,并用Request-URI作为其标识(传输文件)

DELETE 请求服务器删除Request-URI所标识的资源(删除文件)

TRACE 请求服务器回送收到的请求信息,主要用于测试或诊断(追踪路径)

CONNECT 保留将来使用

OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求(询问支持的方法)

get和post是最常用的方法,简单来说,前者用于获取数据,后者用于提交数据。

18.HTTP状态码

主要还得记得http中Status-Code的第一个数字定义响应的类别,后两个数字没有分类的作用。第一个数字可能取5个不同的值:

1xx:信息响应类,表示接收到请求并且继续处理。

2xx:处理成功响应类,表示动作被成功接收、理解和接受。

3xx:重定向响应类,为了完成指定的动作,必须接受进一步处理。

4xx:客户端错误,客户请求包含语法错误或者是不能正确执行。

5xx:服务端错误,服务器不能正确执行一个正确的请求

1 消息

▪ 100 Continue

▪ 101 Switching Protocols

▪ 102 Processing

2 成功

▪ 200 OK

▪ 201 Created

▪ 202 Accepted

▪ 203 Non-Authoritative Information

▪ 204 No Content

▪ 205 Reset Content

▪ 206 Partial Content(部分内容)

▪ 207 Multi-Status

3 重定向

▪ 300 Multiple Choices

▪ 301 Moved Permanently(永久性转移)

▪ 302 Move temporarily(暂时性转移)

▪ 303 See Other

▪ 304 Not Modified(存在缓存,没修改)

▪ 305 Use Proxy

▪ 306 Switch Proxy

▪ 307 Temporary Redirect

4 请求错误

▪ 400 Bad Request

▪ 401 Unauthorized

▪ 402 Payment Required

▪ 403 Forbidden(禁用,非法)

▪ 404 Not Found

▪ 405 Method Not Allowed

▪ 406 Not Acceptable

▪ 407 Proxy Authentication Required

▪ 408 Request Timeout

▪ 409 Conflict

▪ 410 Gone

▪ 411 Length Required

▪ 412 Precondition Failed

▪ 413 Request Entity Too Large

▪ 414 Request-URI Too Long

▪ 415 Unsupported Media Type

▪ 416 Requested Range Not Satisfiable

▪ 417 Expectation Failed

▪ 421 too many connections

▪ 422 Unprocessable Entity

▪ 423 Locked

▪ 424 Failed Dependency

▪ 425 Unordered Collection

▪ 426 Upgrade Required

▪ 449 Retry With

▪ 451Unavailable For Legal Reasons

5 服务器错误(5、6字头)

▪ 500 Internal Server Error

▪ 501 Not Implemented

▪ 502 Bad Gateway

▪ 503 Service Unavailable

▪ 504 Gateway Timeout

▪ 505 HTTP Version Not Supported

▪ 506 Variant Also Negotiates

▪ 507 Insufficient Storage

▪ 509 Bandwidth Limit Exceeded

▪ 510 Not Extended

▪ 600 Unparseable Response Headers

18.JSONP 的工作原理是什么?

就是利用

并提供一个回调函数来接收数据(函数名可约定,或通过地址参数传递)。 第三方产生的响应为json数据的包装(故称之为jsonp,即json padding),形如callback({"name":"hax","gender":"Male"})

这样浏览器会调用callback函数,并传递解析后json对象作为参数。本站脚本可在callback函数里处理所传入的数据。

19. CSS的基本选择器有哪几种?分别适合在什么情况下使用?

三种:类别选择器、标签选择器、id选择器,类别是用class命名的时候用 标签是html标签的时候用 id就不用多说了

ID选择器:#header {}

类选择器:.header {}

元素选择器:div {}

子选择器:ul > li {}

后代选择器:div p {}

伪类选择器:a:hover {}

属性选择器:input[type="text"] {}

id优先级高于类class;后面的样式覆盖前面;指定的高于继承;

20. 这些CSS选择器的权重呢?

CSS规范为不同类型的选择器定义了特殊性权重,特殊性权重越高,样式会被优先应用。

权重设定如下:

*通配符选择器,权重为0;

html选择器,权重为1;

类选择器,权重为10;

id选择器,权重为100;

这里还有一种情况:在html标签中直接使用style属性,这里的style属性的权重为1000;

21. 一个div如何居中:

水平居中:

.juzhong{margin:0px auto; width:500px;}

垂直居中:

mid{

position:absolute;

top:50%;

left:50%;

margin:-150px 0 0 -150px;

width:300px;

height:300px;

border:1px solid red;

}

注意,其中margin:-150px 0 0 -150px;

第一个150是高度的一半,第四个150是宽度的一半

text-align:center:文本居中

22. 目前想继续学习的前端技术:

框架选型:Vue, React, Animate,Node.Js(基于Chrome JavaScript运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用), Zepto.js ['zeptəʊ](适合开发跨平台Web App)

构建工具:gulp 和grunt

模块化开发:webpack

23.谈谈mvvm框架。

个人觉得意义不大,就是看你对新技术有没有了解。项目中没用到,去学的话,我是不愿意去的。但是知道它是下一代MVC前端框架就行了。Angular.js是杰出代表。页面编写和业务编写分离,极大的加快了开发的进度,以及代码的分离。

24.了解前端的缓存(存储)吗?缓存分为几类?

前端的缓存无非就Cookie,LocalStorge,SessionStorge这三个吧。

Cookie,存储容量小,仅仅4kb左右,在网络请求的时候可以发送,不建议存储重要数据,因为会被网络诈骗就是把本地的cookie发到别人的服务器上,进而获取你的账户密码。LocalStorge,SessionStorge都是本地缓存的主要用的,两者的用法都很简单,都有各自的Set和get方法。主要的区别就是LocalStorge是一种持久化的存储方式,也就是说如果不手动清除,数据就永远不会过期。而SessionStorge关闭浏览器就清空数据。

25.闭包的理解

"官方"的解释是:所谓"闭包",指的是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分

特点:

这段代码有两个特点:

1、函数b嵌套在函数a内部;

2、函数a返回函数b。

这样在执行完var c=a( )后,变量c实际上是指向了函数b,再执行c( )后就会弹出一个窗口显示i的值(第一次为1)。这段代码其实就创建了一个闭包,为什么?因为函数a外的变量c引用了函数a内的函数b,就是说:

当函数a的内部函数b被函数a外的一个变量引用的时候,就创建了一个闭包。

其实闭包也就是指有权访问另一个函数作用域的函数而已。常用的创建闭包的方法就是在函数内部创建另一个函数。

26. 绑定事件的方法?

 嵌入dom

按钮

function open(){

alert(1)

}

 直接绑定

按钮

document.getElementById('btn').onclick = function(){

alert(1)

}

 事件监听

按钮

document.getElementById('btn').addEventListener('click',function(){

alert(1)

})

//兼容IE

document.getElementById('btn').attachEvent('click',function(){

alert(1)

})

27.了解事件流吗?事件流的顺序是什么?

一个完整的JS事件流是从window开始,最后回到window的一个过程

事件流被分为三个阶段(1~ 5)捕获过程、(5~ 6)目标过程、(6~ 10)冒泡过程

28. 说说字符串常用的十个函数

charAt() 返回在指定位置的字符。

concat() 连接字符串。

fromCharCode() 从字符编码创建一个字符串。

indexOf() 检索字符串。

match() 找到一个或多个正则表达式的匹配。

replace() 替换与正则表达式匹配的子串。

search() 检索与正则表达式相匹配的值。

slice() 提取字符串的片断,并在新的字符串中返回被提取的部分。

split() 把字符串分割为字符串数组。

substr() 从起始索引号提取字符串中指定数目的字符。

substring() 提取字符串中两个指定的索引号之间的字符。

toLocaleLowerCase() 把字符串转换为小写。

toLocaleUpperCase() 把字符串转换为大写。

toLowerCase() 把字符串转换为小写。

toUpperCase() 把字符串转换为大写。

toString() 返回字符串。

valueOf() 返回某个字符串对象的原始值。

29.说说数组常用的十个函数

这个也举下例子吧,其实在控制台打印一下就有了的

concat() 连接两个或更多的数组,并返回结果。

join() 把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。

pop() 删除并返回数组的最后一个元素

push() 向数组的末尾添加一个或更多元素,并返回新的长度。

reverse() 颠倒数组中元素的顺序。

shift() 删除并返回数组的第一个元素

slice() 从某个已有的数组返回选定的元素

sort() 对数组的元素进行排序

splice() 删除元素,并向数组添加新元素。

toSource() 返回该对象的源代码。

toString() 把数组转换为字符串,并返回结果。

toLocaleString() 把数组转换为本地数组,并返回结果。

unshift() 向数组的开头添加一个或更多元素,并返回新的长度。

valueOf() 返回数组对象的原始值。

30.谈谈this是什么,this代表什么

this是Javascript语言的一个关键字。它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用。随着函数使用场合的不同,this的值会发生变化。但是有一个总的原则,那就是this指的是,调用函数的那个对象。

31.改变this指向的方法

要想把 this 的值从一个上下文传到另一个,就要用 call 或者apply 方法。

// 一个对象可以作为call和apply的第一个参数,并且this会被绑定到这个对象。

var obj = {a: 'Custom'};

// 这个属性是在global对象定义的。

var a = 'Global';

function whatsThis(arg) {

return this.a; // this的值取决于函数的调用方式

}

whatsThis(); // 'Global'

whatsThis.call(obj); // 'Custom'

whatsThis.apply(obj); // 'Custom'

32.在a标签里面添加一个点击事件,那么点击事件的this指向的是什么。

Show inner this

这种情况下,没有设置内部函数的this,所以它指向global/window对象(即非严格模式下调用的函数未

默认情况下事件处理程序绑定在DOM节点上面,不管是HTML事件处理程序,还是DOM0、DOM2,都指向了绑定了当前DOM。但是IE的attachEvent特殊,指向window。

你举例的例子那只是匿名函数的默认调用,所以返回window,这个还是要注意一下的。设置this时指向的默认对象。

33.TCP/IP断开的时候双方需要注意一些什么?

TCP/IP断开的时候,大家都知道,TCP/IP断开需要四次挥手:

客户端发送一个FIN报文给服务器,表示我将关闭客户端到服务器端这个方向的连接。

服务器收到报文后,发送一个ACK报文给客户端。

服务器发送一个FIN报文给客户端,表示自己也将关闭服务器端到客户端这个方向的连接。

客户端收到FIN后,发回一个ACK报文给服务器,FIN的序号加1。

但是注意,为什么挥手过程,第二步服务器发完信息之后,还要再发一次呢,那是因为,在第二步当中,服务器只是发送说接受到要断开了,但是服务器可能现在还有正在执行的任务,直到干完活了,再去说,现在没事了断开吧。然后客户端再接受信息,就开始断开。

那么大家也就可以理解了,如果在断开的时候,客户端已经不需要东西了,那么亦可将服务器第二步后继续传递数据可以关闭,当然,这也是个人的理解。大家可以把这个想象成客户说不要商家继续发货了的过程。

34.Vue原理:

. Vue.js是一个提供MVVM数据双向绑定的库,其核心思想无非就是:

数据驱动: Vue.js 的核心是一个响应的数据绑定系统,它让数据与DOM保持同步非常简单; vue的数据驱动无非就是利用的是ES5Object.defineProperty和存储器属性; jq是通过绑定事件来进行操作dom,而vue和react是通过操作obj的属性来重新渲染dom;

组件系统: 用官方一点的话来形容,组件化就是:实现了扩展HTML元素,封装可用的代码。页面上每个独立的可视/可交互区域视为一个组件;每个组件对应一个工程目录,组件所需要的各种资源在这个目录下就近维护;页面不过是组件的容器,组件可以嵌套自由组合形成完整的页面。简单的说,其实就是把页面进行分块处理,分成多个小块,每个小块就是一个组件,这样可以形成组件的复用,而且提高开发效率。

35. js实现异步的操作有哪些

利用setTimout实现异步

使用Promise对象

动态创建script标签

利用script标签提供的async

还有ES6里面async函数,使得异步操作变得更加方便

36.对于性能优化,你的指标是什么

静态文件的大小

加载静态资源需要的时间

最大限度地减少HTTP请求

使用内容分发网络

headers添加一个Expires或Cache-Control头

用gzip的压缩内容

将样式表在顶部

js代码放在底部

避免使用CSS表达式

JavaScript和CSS放在外部

减少DNS查找

缩小JavaScript和CSS

避免重定向

删除重复的脚本和样式

减少DOM元素的数量

1. 快速排序的思想和算法:

 快速排序算法使用了分治技术

 JavaScript

function quickSort(array){

function sort(prev, numsize){

var nonius = prev;

var j = numsize -1;

var flag = array[prev];

if ((numsize - prev) > 1) {

while(nonius < j){

for(; nonius < j; j--){

if (array[j] < flag) {

array[nonius++] = array[j]; //a[i] = a[j]; i += 1;

break;

};

}

for( ; nonius < j; nonius++){

if (array[nonius] > flag){

array[j--] = array[nonius];

break;}}}

array[nonius] = flag;

sort(0, nonius);

sort(nonius + 1, numsize);

}}

sort(0, array.length);

return array;

}

37.自我介绍

您好,我叫XXX,深大大三学生,电子信息工程专业。现在大概说下我学习前端的过程,从大二下的暑假,在师兄的指导下开始接触前端,接着自主学习前端开发知识比如HTML,JS,CSS ;JS框架: jQuery,vue框架等的学习,以及进行一些网页实战训练,比如企业类商城类等网页的代码编写。在上学期开始那会儿准备和小伙伴写博客,我主要负责前端网页代码编写,小伙伴负责后台。但是可能由于当时双方课程有点紧张,没有继续到最后吧。由于前端最后还是要和后台工程师合作制定技术方案并解决技术问题,比如服务接口等问题,所以对进行数据交换等技术也大我从概了解下,也稍微对python入门学习下,加深对前后端之间关系的认识 。大概说下个人兴趣的话,比较喜欢运动,比如篮球,排球,网球,羽毛球,乒乓球都会玩一下下,不过最近忙了点,不过还是会坚持一周两三次的运动。嗯,说完啦。

38.Tcp/ip有几层

四层:应用,传输层,网络层,数据链路层

39.选择学习前端

第一的话:我是电子信息工程专业,学过计算机基础,C,C++,微机原理,数据结构,可视化语言等知识,对本专业的知识还挺喜欢的,进入IT行业是有优势的;

第二:在进入大学以前对技术牛人很崇拜,如果自己也能成为一员就最好了,所以这也是一开始选择计算机类专业的原因和写代码的动力了。

第三:前端本身的魅力:做出来的东西能够马上呈现效果,可以带来很直接的成就感。而且如果是一个很炫酷,自己非常用心做出来的东西。

40.HTML5语义标签

41. HTML5和html4的区别

HTML5推出的理由

解决Web上存在的问题:

Web浏览器间的兼容性低:在一个浏览器中可以运行的HTML、Css、Javascript,在另一个浏览器中不能运行。

原因:各浏览器规范不统一,没有被标准化。

解决方案:使各浏览器的功能符合通用标准。

文档结构不够明确:HTML4中元素不能把文档结构表示清楚。

解决方案:增加与结构相关的元素。

Web应用程序的功能受到限制:HTMLL4对Web应用程序的贡献很小,比如:不允许同时上传多个文件。

解决方案:提供供Web应用程序使用的API。

新增的元素和废除的元素

新增元素

新增的结构元素

section:表示页面中内容块,比如章节、页眉、页脚或页面中的其他部分,可与

结合使用表示文档结构。

article:表示页面中一块与上下文不相关的独立内容,比如博客中的一篇文章或报纸中的一篇文章。

aside:表示article内容之外,与article内容相关的辅助信息。

header:表示页面中的区域块,通常用它表示标题。

hgroup:用于对整个页面或页面中标题进行整合。

footer:表示页面中的区域块,通常表示区域快的脚部或底部,用于承载作者姓名、创作日期等与作者的元素。

nav:表示页面中导航部分。

figure:表示一段独立的流内容,一般表示主体流内容的一个独立单元。

42.面向对象和面向过程的区别:

面向对象:用线性的思维。与面向过程相辅相成。在软件开发过程中,宏观上,用面向对象来把握事物间复杂的关系,分析系统。微观上,仍然使用面向过程。

“面向过程”是一种是事件为中心的编程思想。就是分析出解决问题所需的步骤,然后用函数把这写步骤实现,并按顺序调用。

”面向对象“是以“对象”为中心的编程思想

简单的举个例子:汽车发动、汽车到站。汽车启动是一个事件,汽车到站是另一个事件,面向过程编程的过程中我们关心的是事件,而不是汽车本身。针对上述两个事件,形成两个函数,之后依次调用。

对于面向对象来说,我们关心的是汽车这类对象,两个事件只是这类对象所具有的行为。而且对于这两个行为的顺序没有强制要求。

面向过程的思维方式是分析综合,面向对象的思维方式是构造。

面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。

面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。

a-z ↩

参与评论 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:数字20 设计师:CSDN官方博客 返回首页

打赏作者

金属铬

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值