小滴课堂22年新版互联网大厂前端高频面试题(7)~持续更新中


前言

小滴课堂,旨在让编程不在难学,让技术与生活更加有趣。 随着互联网+的时代,在线教育技术越来越便捷,小滴课堂依托在线教育时间以及空间上的便利,为广大IT从业者提供了更为方便、快捷的学习交流途径、提供大量高质量的IT在线课程。更多教程请访问xdclass.net(添加VX:xdclass99)

一、能否解释下什么是进程、线程、协程,他们之间的关系是怎样的

回答

答案: 
进程: 本质上是一个独立执行的程序,进程是操作系统进行资源分配和调度的基本概念,操作系统进行资源分 配和调度的一个独立单位 

线程:是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一个进程 中可以并发多个线程,每条线程执行不同的任务,切换受系统控制。 

协程: 又称为微线程,是一种用户态的轻量级线程,协程不像线程和进程需要进行系统内核上的上下文切换, 协程的上下文切换是由用户自己决定的,有自己的上下文,所以说是轻量级的线程,也称之为用户级别的线程 就叫协程,一个线程可以多个协程,线程进程都是同步机制,而协程则是异步 Java的原生语法中并没有实现协程,目前python、Lua和GO等语言支持 

关系:一个进程可以有多个线程,它允许计算机同时运行两个或多个程序。线程是进程的最小执行单位,CPU 的调度切换的是进程和线程,进程和线程多了之后调度会消耗大量的CPU,CPU上真正运行的是线程,线程可 以对应多个协程
  • 协程对于多线程有什么优缺点吗
优点:
    非常快速的上下文切换,不用系统内核的上下文切换,减小开销 
    单线程即可实现高并发,单核CPU可以支持上万的协程 
    由于只有一个线程,也不存在同时写变量的冲突,在协程中控制共享资源不需要加锁 

缺点:
    协程无法利用多核资源,本质也是个单线程 
    协程需要和进程配合才能运行在多CPU上 
    目前java没成熟的第三方库,存在风险 调试debug存在难度,不利于发现问题

二、你是否知道什么是浏览器同源策略

回答

同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。 

由Netscape提出的一个著名的安全策略。 

当一个浏览器的两个tab页中分别打开来百度和谷歌的页面 

当浏览器的百度tab页执行一个脚本的时候会检查这个脚本是属于哪个页面的, 

即检查是否同源,只有和百度同源的脚本才会被执行。 

如果非同源,那么在请求数据时,浏览器会在控制台中报一个异常,提示拒绝访问。 

同源策略是浏览器的行为,是为了保护本地数据不被JavaScript代码获取回来的数据污染,因此拦截的是客户端发出的请求回来的数据接收,

即请求发送了,服务器响应了,但是无法被浏览器接收

三、什么是SQL注入攻击,如何避免

回答

SQL注入(SQLi)是一种注入攻击,可以执行恶意SQL语句。它通过将任意SQL代码插入数据库查询,使攻击者能够完全控制Web应用程序后面的数据库服务器。攻击者可以使用SQL注入漏洞绕过应用程序安全措施;可以绕过网页或Web应用程序的身份验证和授权,并检索整个SQL数据库的内容;还可以使用SQL注入来添加,修改和删除数据库中的记录
  • 如何防止SQL注入攻击?
  1. 不要使用动态SQL
  2. 避免将用户提供的输入直接放入SQL语句中;最好使用准备好的语句和参数化查询,这样更安全。
  3. 不要将敏感数据保留在纯文本中
  4. 加密存储在数据库中的私有/机密数据;这样可以提供了另一级保护,以防攻击者成功地排出敏感数据。
  5. 限制数据库权限和特权
  6. 将数据库用户的功能设置为最低要求;这将限制攻击者在设法获取访问权限时可以执行的操作。
  7. 避免直接向用户显示数据库错误

四、为什么会出现跨域,有什么常见的解决方案

回答

(一)跨域

  • 浏览器同源策略 1995年,同源政策由 Netscape 公司引入浏览器。目前,所有浏览器都实行这个政策。 最初,它的含义是指,A网页设置的 Cookie,B网页不能打开,除非这两个网页"同源"。所谓"同源"指的是"三个相同"
协议相同 http https 
域名相同 www.xdclass.net 
端口相同 80 81 

一句话:浏览器从一个域名的网页去请求另一个域名的资源时,域名、端口、协议任一不同,都是跨域 

浏览器控制台跨域提示: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.

(二)解决方法

  1. JSONP
  2. 页面这层再包装一层服务,目前最多就是nodejs
  3. Http响应头配置允许跨域
  • nginx代理服务器
  • 后端程序代码配置
程序代码中处理 SpringBoot 通过拦截器配置 

//表示接受任意域名的请求,也可以指定域名 
response.setHeader("Access-Control-Allow-Origin", 
request.getHeader("origin")); 

//该字段可选,是个布尔值,表示是否可以携带cookie 
response.setHeader("Access-Control-Allow-Credentials", "true"); 

response.setHeader("Access-Control-Allow-Methods", "GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS"); 

response.setHeader("Access-Control-Allow-Headers", "*");

五、域名配置中cname和a记录的作用是

回答

(一)一个http请求基本流程

  • 客户端通过发起域名资源请求 -> DNS解析获得IP -> 寻找服务器获得资源

(二)域名和ip的关系,DNS作用

  • DNS:Domain Name Server 域名服务器 域名虽然便于人们记忆,但网络中的计算机之间只能互相认识IP地址,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,DNS 就是进行域名解析的服务器

(三)什么是cname和a记录

  1. a记录
  • 用户可以在此设置域名并指向到自己的目标主机地址上,从而实现通过域名找到服务器

(也叫ip指向域名配置)

  1. cname
  • 别名指向,可以为一个主机设置别名。比如设置open1024.com,用来指向一个主机xdclass.net 那么以后就可以用open1024.com来代替访问 xdclass.net 了
  • http://www.xdclass.net --> xdclass.net
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值