前端面试实习题目总结:

如下是部分整理,有时间还会整理出其余的~~
(最近还在找实习呜呜~~)css

1.JavaScript是一种弱类型语言,有什么优势和缺点
https://blog.csdn.net/sinolze...
(1)强类型定义语言:强制数据类型定义的语言。也就是说,一旦一个变量被指定了某个数据类型,若是不通过强制转换,那么它就永远是这个数据类型了。举个例子:若是你定义了一个整型变量a,那么程序根本不可能将a看成字符串类型处理。强类型定义语言是类型安全的语言。
(2)弱类型定义语言:数据类型能够被忽略的语言。它与强类型定义语言相反, 一个变量能够赋不一样数据类型的值。
强类型定义语言在速度上可能略逊色于弱类型定义语言,可是强类型定义语言带来的严谨性可以有效的避免许多错误。另外,“这门语言是否是动态语言”与“这门语言是否类型安全”之间是彻底没有联系的! 例如:Python是动态语言,是强类型定义语言(类型安全的语言); VBScript是动态语言,是弱类型定义语言(类型不安全的语言);JAVA是静态语言,是强类型定义语言(类型安全的语言)。html


2.js的数据类型:
https://www.cnblogs.com/wu-we...前端

  • .类型定义

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。vue


3. 在js里call()与apply()有什么相同和不一样?
call 方法:调用一个对象的一个方法,以另外一个对象替换当前对象。
call([thisObj,arg1, arg2, ...,argN)html5

参数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的第二个参数传入python


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

若是要表达数组呢?XML中能够在父节点下面累放节点,而JSON则有[ ]这样更直观的方式。jquery

若是字符串中有换行符怎么办,JSON不存在这个问题,而XML必须引入CDATA解决问题
当上面的standalone为yes的时候表示DTD直接写到这个XML里面去,这样,就不须要额外的DTD文件了,也就是说,这个文件不可是自解释,仍是自校验的了。而这一点,JSON是不可能作到的。webpack

另外,XML还能够有命名空间,能够经过xmlns属性引入不一样的定义文件,像编程语言的import来自由组合,这一点,JSON也是作不到的
JSON的一大好处是有些语言能够原生支持,好比JavaScript,不须要一个JSON Parser这样的东西,代码里表示对象用的就是JSON格式的表达。可是直接支持XML的编程语言,好像没有吧,却是有像HTML等等标记语言的解析器,能够处理任意DOM对象。c++


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的任意一个字符,1 -> 匹配不是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++编译的程序占用的内存分为如下几个部分
一、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操做方式相似于数据结构中的栈。
二、堆区(heap) — 通常由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式却是相似于链表,呵呵。
三、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另外一块区域。 - 程序结束后有系统释放
四、文字常量区 —常量字符串就是放在这里的。 程序结束后由系统释放
五、程序代码区—存放函数体的二进制代码
c和c+函数堆栈基本同样,不一样的地方是c++函数堆栈要支持异常机制
malloc/free:
一、函数原型及说明:

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.数据结构构图:

clipboard.png


  1. 对于Node.js你了解多少?

Node.js优势:
一、采用事件驱动、异步编程,为网络服务而设计。其实Javascript的匿名函数和闭包特性很是适合事件驱动、异步编程。并且JavaScript也简单易学,不少前端设计人员能够很快上手作后端设计。
二、Node.js非阻塞模式的IO处理给Node.js带来在相对低系统资源耗用下的高性能与出众的负载能力,很是适合用做依赖其它IO资源的中间层服务。
三、Node.js轻量高效,能够认为是数据密集型分布式部署环境下的实时应用系统的完美解决方案。Node很是适合以下状况:在响应客户端以前,您预计可能有很高的流量,但所需的服务器端逻辑和处理不必定不少。
Node.js缺点:
一、可靠性低
二、单进程,单线程,只支持单核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. 1 消息
  2. ▪ 100 Continue
  3. ▪ 101 Switching Protocols
  4. ▪ 102 Processing
  5. 2 成功
  6. ▪ 200 OK
  7. ▪ 201 Created
  8. ▪ 202 Accepted
  9. ▪ 203 Non-Authoritative Information
  10. ▪ 204 No Content
  11. ▪ 205 Reset Content
  12. ▪ 206 Partial Content(部份内容)
  13. ▪ 207 Multi-Status
  14. 3 重定向
  15. ▪ 300 Multiple Choices
  16. ▪ 301 Moved Permanently(永久性转移)
  17. ▪ 302 Move temporarily(暂时性转移)
  18. ▪ 303 See Other
  19. ▪ 304 Not Modified(存在缓存,没修改)
  20. ▪ 305 Use Proxy
  21. ▪ 306 Switch Proxy
  22. ▪ 307 Temporary Redirect
  23. 4 请求错误
  24. ▪ 400 Bad Request
  25. ▪ 401 Unauthorized
  26. ▪ 402 Payment Required
  27. ▪ 403 Forbidden(禁用,非法)
  28. ▪ 404 Not Found
  29. ▪ 405 Method Not Allowed
  30. ▪ 406 Not Acceptable
  31. ▪ 407 Proxy Authentication Required
  32. ▪ 408 Request Timeout
  33. ▪ 409 Conflict
  34. ▪ 410 Gone
  35. ▪ 411 Length Required
  36. ▪ 412 Precondition Failed
  37. ▪ 413 Request Entity Too Large
  38. ▪ 414 Request-URI Too Long
  39. ▪ 415 Unsupported Media Type
  40. ▪ 416 Requested Range Not Satisfiable
  41. ▪ 417 Expectation Failed
  42. ▪ 421 too many connections
  43. ▪ 422 Unprocessable Entity
  44. ▪ 423 Locked
  45. ▪ 424 Failed Dependency
  46. ▪ 425 Unordered Collection
  47. ▪ 426 Upgrade Required
  48. ▪ 449 Retry With
  49. ▪ 451Unavailable For Legal Reasons
  50. 5 服务器错误(五、6字头)
  51. ▪ 500 Internal Server Error
  52. ▪ 501 Not Implemented
  53. ▪ 502 Bad Gateway
  54. ▪ 503 Service Unavailable
  55. ▪ 504 Gateway Timeout
  56. ▪ 505 HTTP Version Not Supported
  57. ▪ 506 Variant Also Negotiates
  58. ▪ 507 Insufficient Storage
  59. ▪ 509 Bandwidth Limit Exceeded
  60. ▪ 510 Not Extended
  61. ▪ 600 Unparseable Response Headers

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

就是利用<script>标签没有跨域限制的“漏洞”(历史遗迹啊)来达到与第三方通信的目的。当须要通信时,本站脚本建立一个<script>元素,地址指向第三方的API网址,形如:
<script src="http://www.example.net/api?pa...;param2=2"></script> 并提供一个回调函数来接收数据(函数名可约定,或经过地址参数传递)。 第三方产生的响应为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如何居中:
水平居中:
<style>
.juzhong{margin:0px auto; width:500px;}
</style>
<div class=juzhong></div>
垂直居中:
<style>

mid{

position:absolute;
top:50%;
left:50%;
margin:-150px 0 0 -150px;
width:300px;
height:300px;
border:1px solid red;
}
</style>
<div id=mid></div>
注意,其中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.闭包的理解
"官方"的解释是:所谓"闭包",指的是一个拥有许多变量和绑定了这些变量的环境的表达式(一般是一个函数),于是这些变量也是该表达式的一部分
特色:
这段代码有两个特色:
一、函数b嵌套在函数a内部;
二、函数a返回函数b。
这样在执行完var c=a( )后,变量c其实是指向了函数b,再执行c( )后就会弹出一个窗口显示i的值(第一次为1)。这段代码其实就建立了一个闭包,为何?由于函数a外的变量c引用了函数a内的函数b,就是说:
当函数a的内部函数b被函数a外的一个变量引用的时候,就建立了一个闭包。
其实闭包也就是指有权访问另外一个函数做用域的函数而已。经常使用的建立闭包的方法就是在函数内部建立另外一个函数。


26. 绑定事件的方法?
 嵌入dom
<button onclick="open()">按钮</button>
<script>
function open(){

alert(1)

}
</script>
 直接绑定
<button id="btn">按钮</button>
<script>
document.getElementById('btn').onclick = function(){

alert(1)

}
</script>
 事件监听
<button id="btn">按钮</button>
<script>
document.getElementById('btn').addEventListener('click',function(){

alert(1)

})
//兼容IE
document.getElementById('btn').attachEvent('click',function(){

alert(1)

})
</script>


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

clipboard.png

一个完整的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有几层
四层:应用,传输层,网络层,数据链路层

clipboard.png

clipboard.png


39.选择学习前端

第一的话:我是电子信息工程专业,学过计算机基础,C,C++,微机原理,数据结构,可视化语言等知识,对本专业的知识还挺喜欢的,进入IT行业是有优点的;
 第二:在进入大学之前对技术牛人很崇拜,若是本身也能成为一员就最好了,因此这也是一开始选择计算机类专业的缘由和写代码的动力了。
 第三:前端自己的魅力:作出来的东西可以立刻呈现效果,能够带来很直接的成就感。并且若是是一个很炫酷,本身很是用心作出来的东西。

40.HTML5语义标签

http://www.html5jscss.com/htm...


41. HTML5和html4的区别

  1. HTML5推出的理由

解决Web上存在的问题:
Web浏览器间的兼容性低:在一个浏览器中能够运行的HTML、Css、Javascript,在另外一个浏览器中不能运行。
缘由:各浏览器规范不统一,没有被标准化。
解决方案:使各浏览器的功能符合通用标准。
文档结构不够明确:HTML4中元素不能把文档结构表示清楚。
解决方案:增长与结构相关的元素。
Web应用程序的功能受到限制:HTMLL4对Web应用程序的贡献很小,好比:不容许同时上传多个文件。
解决方案:提供供Web应用程序使用的API。

  1. 新增的元素和废除的元素
    新增元素
    新增的结构元素

section:表示页面中内容块,好比章节、页眉、页脚或页面中的其余部分,可与<h1>到<h6>结合使用表示文档结构。
article:表示页面中一块与上下文不相关的独立内容,好比博客中的一篇文章或报纸中的一篇文章。
aside:表示article内容以外,与article内容相关的辅助信息。
header:表示页面中的区域块,一般用它表示标题。
hgroup:用于对整个页面或页面中标题进行整合。
footer:表示页面中的区域块,一般表示区域快的脚部或底部,用于承载做者姓名、创做日期等与做者的元素。
nav:表示页面中导航部分。
figure:表示一段独立的流内容,通常表示主体流内容的一个独立单元。

https://www.cnblogs.com/melbo...


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

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

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

简单的举个例子:汽车发动、汽车到站。汽车启动是一个事件,汽车到站是另外一个事件,面向过程编程的过程当中咱们关心的是事件,而不是汽车自己。针对上述两个事件,造成两个函数,以后依次调用。
对于面向对象来讲,咱们关心的是汽车这类对象,两个事件只是这类对象所具备的行为。并且对于这两个行为的顺序没有强制要求。
面向过程的思惟方式是分析综合,面向对象的思惟方式是构造。
面向过程就是分析出解决问题所须要的步骤,而后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就能够了。

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


  1. a-z
相关文章
相关标签/搜索