一些前端笔试题小知识点总结

1、以下代码输出什么

var s1 = "qpzm";
var s2 = "qp"+"zm";
if(s1 == s2){
document.write("s1 == s2 return true");
}else{
document.write("s1 == s2 return false");
}
if(s1.equals(s2)){
document.write("s1.equals(s2) return true");
}else{
document.write("s1.equals(s2) return false");
}

分析:

 在 javaScript或者jQuery中字符串比较没有equals()方法,要比较两个字符串是否相等可以直接用==或者is()进行判断。

只会输出    s1 == s2 return true,然后报错

2、浏览器中输入URL到返回页面的全过程

(1)解析域名,找到主机ip

  (2)浏览器与目标服务器建立TCP连接(TCP3次握手连接)

(3)浏览器向主机发起一个HTTP-GET方法报文请求。请求中包含访问的URL

(4)服务器给出响应,将指定文件发送给浏览器浏览器以HTML形式呈现

(5)TCP释放链接

浏览器地址栏直接输入:一定是GET请求;超链接:一定是GET请求;

3、get请求如何传递参数:URL参数

最为常见的客户端传递参数方式有两种:

表单:可以是GET,也可以是POST,这取决与<form>的method属性值;

GET请求和POST请求的区别:

1.效率

  • GET的意思是『得』,从服务器获取数据(也可以上传数据,参数就是),效率较高
  • POST的意思是『给』,但可以向服务器发送数据和下载数据,效率不如GET

2.缓存

  • GET 请求能够被缓存,默认的请求方式也是有缓存的
  • POST请求默认不会缓存
  • 缓存是针对URL来进行缓存的,GET请求由于其参数是直接加在URL上-的,一种参数组合就有一种URL的缓存,可以根据参数来进行一一对应,重复请求是幂等的(不论请求多少次,结果都一样);
  • 而POST请求的URL没有参数,每次请求的URL都相同,数据体(HTTPBody)可能不同,无法一一对应,所以缓存没有意义

3.安全性

  • GET的所有参数全部包装在URL中,明文显示,且服务器的访问日志会记录,非常不安全
  • POST的URL中只有资源路径,不包含参数,参数封装在二进制的数据体中,服务器也不会记录参数,相对安全。所有涉及用户隐私的数据都要用POST传输

POST的安全是相对的,对于普通用户来说他们看不到明文,数据封装对他们来说就是屏障。但是对于专业人士,它们会抓包会分析,没有加密的数据包对他们来说也是小case。所以POST仅仅是相对安全,唯有对数据进行加密才会更安全。当然加密也有被破解的可能性,理论上所有的加密方式都可以破解,只是时间长短的问题。而加密算法要做的就是使得破解需要的时间尽量长,越长越安全。由于我们也需要解密,加密算法太过复杂也并非好事,这就要结合使用情况进行折中或者足够实际使用即可。绕的有点远,具体的话,我将在后续的文章之中介提及,并介绍一些常用的加密算法。

4.数据量

HTTP协议中均没有对GET和POST请求的数据大小进行限制,但是实际应用中它们通常受限于软硬件平台的设计和性能。

  • GET:不同的浏览器和服务器不同,一般限制在2~8K之间,更加常见的是1k以内
  • POST方法提交的数据比较大,大小靠服务器的设定值限制,PHP默认是2M(具体的话大家以后看后端给的开发文档就行了)

4、用于设置环境变量的是:export;

可以用于获取本地ip地址的是:iconfig;

5、两种数据类型

基本数据类型:值是不可变的,存放在栈区(占据空间小,大小固定)==比较时会进行数据类型的转化。

引用数据类型:值是可变的,可以拥有属性或方法。同时存放在栈内存或堆内存(占据空间大,大小不固定)。

引用数据类型在栈中存储了指针,该指针指向堆中该实体的起始位置。

比较是引用的比较

检验数据类型,typeof返回一个表示数据类型的字符串,

  • number
  • boolean
  • string
  • symbol
  • object
  • undefined
  • function

不能判断null、array

instanceof:用来判断A是否为B的实例,返回布尔值

不能检测null 和undefined

小测验:typeof typeof null    结果为:

6、sessionStorage 和localStorage、cookie

sessionStorage用于本地存储一个会话(session)中的数据,这些数据只有在同一个会话中的页面才能访问并且当会话结束后数据也随之销毁。因此sessionStorage不是一种持久化的本地存储,仅仅是会话级别的存储。
而localStorage用于持久化的本地存储,除非主动删除数据,否则数据是永远不会过期的。
sessionStorage 、localStorage 和 cookie 之间的区别
共同点:都是保存在浏览器端,且同源的。
区别:cookie数据始终在同源的http请求中携带(即使不需要),即cookie在浏览器和服务器间来回传递。
而sessionStorage和localStorage不会自动把数据发给服务器,仅在本地保存。

关于页面共享:

(1)不同浏览器无法共享localStorage和sessionStorage的值。

(2)相同浏览器下,并且是同源窗口(协议、域名、端口一致),不同页面可以共享localStorage值,通过跳转的页面可以共享sessionStorage值。

(3)作用域不同,sessionStorage不在不同的浏览器窗口中共享,即使是同一个页面;localStorage 在所有同源窗口中都是共享的;cookie也是在所有同源窗口中都是共享的。

 (大华前端实习生笔试题第一道)

7、instanceof用于判断一个变量是否某个对象的实例

8、 museover、museenter

二者的本质区别在于,museenter不会冒泡,简单的说,它不会被它本身的子元素的状态影响到.但是museover就会被它的子元素影响到,在触发子元素的时候,mouseover会冒泡触发它的父元素.(想要阻止museover的冒泡事件就用museenter)

mouseout 会冒泡

mouseleave 不会冒泡

9、跨域

猜你喜欢

转载自blog.csdn.net/runner_123/article/details/86477459