前端实习⽣笔试_前端⾯试实习题⽬总结:
以下是部分整理,有时间还会整理出其他的~~
(最近还在实习呜呜~~)
1.JavaScript是⼀种弱类型语⾔,有什么优点和缺点
(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 协议访问该资源。
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++⾥⾯,堆栈最⼤的不同点是什么?web前端开发笔试题库
⼀个由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.关于未来规划:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论