【面试笔记(七)】

面试笔记

一.常见的跨域方式 ?

  • JSONP:
    JSONP(JSON with Padding)是一种允许跨域请求数据的技术。它利用了script标签可以跨域加载资源的特性。使用JSONP时,服务器返回的不是纯JSON数据,而是一个JavaScript函数调用。客户端通过定义一个回调函数来接收这个函数调用,从而获取数据。
  • CORS:
    CORS(Cross-Origin Resource Sharing)是现代浏览器支持的一种跨源通信机制。它允许服务器通过设置HTTP响应头Access-Control-Allow-Origin来指定哪些域名可以访问其资源,从而允许或拒绝某些跨域请求。也是广泛的解决方案。
  • 正向代理
    先搭建一个属于自己的代理服务器
    • 1、用户发送请求到自己的代理服务器
    • 2、自己的代理服务器发送请求到服务器
    • 3、服务器将数据返回到自己的代理服务器
    • 4、自己的代理服务器再将数据返回给用户
  • 反向代理
    • 1、用户发送请求到服务器(访问的其实是反向代理服务器,但用户不知道)
    • 2、反向代理服务器发送请求到真正的服务器
    • 3、真正的服务器将数据返回给反向代理服务器
    • 4、反向代理服务器再将数据返回给用户
  • postMessage是HTML5中新引入的一种跨文档通信方式,允许不同源的窗口之间安全地传递消息。使用postMessage可以在不同源的页面之间进行通信,而不受同源策略的限制。

这些技术都是解决Web开发中跨源问题的不同方法,开发者可以根据具体需求和场景选择合适的技术来实现跨域请求或通信。

二.let, const, var 的区别 ?

作用域:
  • var: 声明的变量具有函数作用域,如果在一个块(例如一个if语句或for循环)中声明,它仍然可以在整个函数中访问。
    let 和 const: 声明的变量具有块作用域,这意味着它们只能在声明它们的块内部访问。
    可变性:

  • var 和 let: 允许重新赋值(即变量的值可以改变)。
    const: 声明的变量是常量,一旦赋值后不能重新赋值。如果尝试重新赋值,会抛出一个错误。

提升:
  • var: 变量声明会被提升到其所在函数或全局作用域的顶部,但初始化(赋值)不会提升。
  • let 和 const: 不会被提升,它们只在声明它们的语句被执行时才存在。如果在声明之前访问这些变量,会得到undefined(对于let)或ReferenceError(对于const)。
全局对象属性:
  • 当使用 var 在全局作用域中声明变量时,它会成为一个全局对象的属性(在浏览器中是 window 对象)。
    使用 let 和 const 声明的全局变量不会成为全局对象的属性。
声明方式 变量提升 暂时性死区 重复声明 初始值 作用域
var	     允许	  不存在	   允许  不需要 非块级
let	    不允许	   存在	  不允许	 不需要	块级
const	不允许	   存在	  不允许	  需要	块级

三.cookie, localStorage,sessionStorage 的区别?

存储方式 作用与特性 存储数量及大小

  • cookie
存储方式
 存储用户信息,获取数据需要与服务器建立连接。
 以路径存储,上层路径不能访问下层的路径cookie,下层的路径cookie可以访问上层的路径cookie 
 作用与特性 

可存储的数据有限,且依赖于服务器,无需请求服务器的数据尽量不要存放在cookie 中,以免影响页面性能。

可设置过期时间。

存储数量及大小 将cookie控制在4095B以内,超出的数据会被忽略。
IE6或更低版本 最多存20个cookie; 
IE7及以上
版本 多可以有50个;
Firefox多 50个;
chrome和Safari没有做硬性限制。

cookie最大特征就是可以在页面与服务器间互相传递,当发送或者接受数据时自动传递

  • localStorage
 存储客户端信息,无需请求服务器。

 数据永久保存,除非用户手动清理客户端缓存。

 开发者可自行封装一个方法,设置失效时间。	5M左右,各浏览器的存储空间有差异。

 任何地方都可以存都可以取

 操作简单

  • sessionStorage
存储客户端信息,无需请求服务器。

数据保存在当前会话,刷新页面数据不会被清除,结束会话(关闭浏览器、关闭页面、跳转页面)数据失效。	

5M左右,各浏览器的存储空间有差异。

同页面不同窗口中数据不会共享
  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一些 Spring Boot 面试时可能会涉及的重要知识点和面试建议: 1. 什么是 Spring Boot? Spring Boot 是 Spring 框架的一个子项目,它基于 Spring 框架,简化了 Spring 应用的配置和开发过程,使得开发者可以更加便捷地创建独立、生产级别的 Spring 应用。Spring Boot 提供了自动化配置、开箱即用的组件和快速启动的能力,使得开发者可以更加专注于业务逻辑的实现。 2. Spring Boot 有哪些优点? - 简化了 Spring 应用的配置和开发过程。 - 集成了众多常用的第三方库,可以快速地搭建项目。 - 提供了自动化配置和开箱即用的组件,使得开发者可以更加专注于业务逻辑的实现。 - 与 Spring Framework 完美集成,可以很方便地使用 Spring 的各种功能。 - 支持多种开发方式,包括传统的 WAR 包部署、嵌入式服务器部署、Docker 容器化部署等。 3. Spring Boot 的核心注解有哪些? - @SpringBootApplication:用于标记 Spring Boot 应用的主类,它包含了 @Configuration、@EnableAutoConfiguration 和 @ComponentScan 三个注解,可以简化应用的配置和启动过程。 - @Controller、@Service、@Repository、@Component:用于标记 Spring Bean,可以自动扫描并注册到 Spring 容器中。 - @Autowired、@Resource、@Inject:用于依赖注入,可以自动装配 Spring Bean。 4. Spring Boot 的配置文件有哪些? Spring Boot 支持多种配置文件格式,包括 properties、yml、json 等。其中,application.properties 或 application.yml 是 Spring Boot 默认的配置文件,它可以放在项目的 classpath 下,也可以通过指定 spring.config.location 属性来指定配置文件的路径。 5. Spring Boot 的自动配置原理是什么? Spring Boot 的自动配置基于条件注解和条件判断,它会根据应用的上下文环境和 classpath 中的依赖库来自动配置 Spring Bean。例如,当 classpath 中存在 HikariCP 库时,Spring Boot 会自动配置一个 HikariCP 数据源,而不需要手动配置。 6. Spring Boot 如何处理异常? Spring Boot 提供了统一的异常处理机制,可以通过 @ControllerAdvice 和 @ExceptionHandler 注解来处理应用中的异常。在异常处理类中,可以通过 @ExceptionHandler 注解和方法参数来定义需要处理的异常类型和异常处理逻辑。 7. Spring Boot 如何实现 AOP? Spring Boot 集成了 Spring Framework 的 AOP 功能,可以通过 @Aspect 和 @Around 注解来实现切面编程。在切面类中,可以定义需要拦截的方法和拦截逻辑,以实现日志记录、权限控制等功能。 8. Spring Boot 如何实现事务管理? Spring Boot 集成了 Spring Framework 的事务管理功能,可以通过 @Transactional 注解来实现事务控制。在需要进行事务控制的方法上添加 @Transactional 注解,即可开启事务。 9. Spring Boot 如何集成数据库? Spring Boot 支持多种数据库,包括 MySQL、Oracle、MongoDB 等,可以通过在 pom.xml 中添加相应的依赖库来实现数据库的集成。同时,Spring Boot 也提供了多种数据库访问方式,包括 JDBC、JPA、MyBatis 等,可以根据实际需求选择合适的方式。 10. Spring Boot 如何实现缓存? Spring Boot 集成了多种缓存框架,包括 Ehcache、Redis、Caffeine 等,可以通过在 pom.xml 中添加相应的依赖库来实现缓存功能。同时,Spring Boot 也提供了多种缓存注解,包括 @Cacheable、@CachePut、@CacheEvict 等,可以方便地实现缓存功能。 面试建议: - 对于 Spring Boot 的基本原理和使用方法要有深入了解,并能够熟练使用 Spring Boot 搭建项目。 - 对于 Spring Boot 中常用的注解和配置文件要熟练掌握。 - 对于 Spring Boot 中的高级功能(如自动配置、AOP、事务管理、缓存等)要有一定的了解,并能够根据实际需求进行应用。 - 在面试中要注意表达清楚自己的观点和思路,可以通过实际项目经验来证明自己的能力。

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值