• 面试记录


    记某次“悲惨”的面试经历:

    一、正向代理和反向代理(当时提到nginx,然后。。。)

      正向代理:常见场景,访问google页面,需要使用代理服务器(梯子),向代理服务器(梯子)发送请求和指定目标(google),然后代理服务器(梯子)向指定目标(google)发起请求,并将请求结果返回给客户端。(客户端需要进行特别的设置)

          用途:

          1)访问原来无法访问的资源,如google

               2) 可以做缓存,加速访问资源

            3)对客户端访问授权,上网进行认证

            4)代理可以记录用户访问记录(上网行为管理),对外隐藏用户信息

      反向代理:代理服务器接受客户端发起的请求,然后将请求转发给内部其他服务器,最后将请求结果返回给客户端。

          用途:

          1)保证内网的安全,可以使用反向代理提供WAF功能,阻止web攻击,大型网站,通常将反向代理作为公网访问地址,Web服务器是内网。

          2)负载均衡,通过反向代理服务器来优化网站的负载

    二、同步和异步

       举个例子:普通B/S模式(同步)AJAX技术(异步)
      同步:提交请求->等待服务器处理->处理完毕返回 这个期间客户端浏览器不能干任何事
      异步: 请求通过事件触发->服务器处理(这是浏览器仍然可以作其他事情)->处理完毕

    三、dubbo(未完待续)

      Dubbo |是一个由阿里巴巴开源的、分布式的RPC(Remote Procedure Call Protocol-远程过程调用)和微服务框架

      Dubbo提供了三个关键功能:基于接口的远程调用,容错与负载均衡,服务自动注册与发现。

    四、进程和线程

        进程是操作系统资源分配的基本单位

        线程是任务调度和执行的基本单位  

    • 在开销方面:每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程之间切换的开销小。
    • 所处环境:在操作系统中能同时运行多个进程(程序);而在同一个进程(程序)中有多个线程同时执行(通过CPU调度,在每个时间片中只有一个线程执行)
    • 内存分配方面:系统在运行的时候会为每个进程分配不同的内存空间;而对线程而言,除了CPU外,系统不会为线程分配内存(线程所使用的资源来自其所属进程的资源),线程组之间只能共享资源。
    • 包含关系:没有线程的进程可以看做是单线程的,如果一个进程内有多个线程,则执行过程不是一条线的,而是多条线(线程)共同完成的;线程是进程的一部分,所以线程也被称为轻量级进程。

    五、三次握手和四次挥手(TCP协议)

      三次握手:

    • 客户端–发送带有 SYN 标志的数据包–一次握手–服务端
    • 服务端–发送带有 SYN/ACK 标志的数据包–二次握手–客户端
    • 客户端–发送带有 ACK 标志的数据包–三次握手–服务端

        四次挥手:

    • 客户端 -- -发送一个 FIN,用来关闭客户端到服务器的数据传送 – 一次挥手 – 服务端(告诉服务端要断开连接了)
    • 服务端 -- 收到这个 FIN,它发回一 个 ACK,确认序号为收到的序号加1 。和 SYN 一样,一个 FIN 将占用一个序号 --二次挥手 -- 客户端(服务端回应收到)
    • 服务端 --关闭与客户端的连接,发送一个FIN给客户端 -- 三次挥手 -- 客户端(服务端数据传输完毕,告诉客户端:“我也要断开连接了”)
    • 客户端 -- 发回 ACK 报文确认,并将确认序号设置为收到序号加1-- 四次挥手 --服务端

      客户端和服务端是相对的说法,两边都可以发起断开请求,暂且认为哪边提起断开就是客户端

    六、HTTPS和HTTP的区别

        http是超文本传输协议在互联网上应用最为广泛的一种网络协议,所有www文件都必须遵守这个标准,基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)连接。

        https是超文本传输安全协议,是一种网络安全传输协议。http协议传输的数据都没有加密,一些私密的信息不安全,https经由超文本传输协议(http)进行通信,利用SSL/TLS来加密数据包,https开发的主要目的就是为了保护数据传输的安全性。

        HTTPS和HTTP的区别:

            1) https协议要申请证书到ca,需要一定经济成本;

            2) http是明文传输,https是加密的安全传输;

            3) 连接的端口不一样,http是80,https是443;

            4)http连接很简单,没有状态;https是ssl加密的传输,身份认证的网络协议,相对http传输比较安全。

      附:TCP和UDP的优缺点及区别

     

    七、Spring的优点:(未完待续:事务,aop。。。)

    1.  轻量级框架:Spring是轻量级框架,基本的版本大约2M
    2.  控制反转:Spring通过控制反转实现松散耦合,对象们给它们的依赖,而不是创建或者查找依赖的对象们,方便解耦,简化开发
      • IOC控制反转:说的是创建对象实例的控制权从代码控制剥离到IOC容器控制,实际就是你在xml文件控制,侧重于原理。

      • DI依赖注入:说的是创建对象实例时,为这个对象注入属性值或其他对象实例后,侧重于实现。

    3. 面相切面的编程 AOP:Spring支持面相切面的编程,并且把应用业务逻辑和系统分开
    4. 容器:Spring 包含并管理应用中对象的生命周期和配置
    5. MVC框架:Spring的WEB框架是个精心设计的框架,是WEB框架的一个很好的替代品
    6. 事务管理:Spring 提供一个持续的事务管理接口,可以扩展到上至本地事务下至全局事务(JTA)
    7. 异常处理:Spring 提供方便的API把具体技术的相关异常(比如由JDBC Hibernate or JDO 抛出的) 转化为一致的 unchecked异常 

    八、Mysql事务的ACID

    1. 原子性(Atomicity):一个事务必须被视为一个不可分割的最小工作单元,整个事务中的所有操作要么全部提交成功,要么全部失败回滚,对于一个事务来说,不可能只执行其中的一部分操作;
    2. 一致性(Consistency)。也就是说,执行完数据库操作后,数据不会被破坏。打个比方,如果从 A 账户转账到 B 账户,不可能因为 A 账户扣了钱,而 B 账户没有加钱吧。
    3. 隔离性(Isolation):一个事务所做的修改在最终提交以前,对其他事务是不可见的。
    4. 持久性(Durability):一旦事务提交,则其所做的修改将永久保存到数据库。

    九、爬虫访问限制

      使用jsoup进行爬虫,通过修改user-agent和设置ip池防止被封

    十、Tomcat是什么

        Tomcat是一个运行JAVA的网络服务器,它也是JSP和Serlvet的一个容器。

    十一、除了使用dubbo外,有没有其他方式调用其他api

      httpClient,

      webservice,

      RestTemplate(是Spring的封装的)

      OKHttpClient

  • 相关阅读:
    168. 吹气球
    395. 硬币排成线 II
    436. 最大正方形
    362. 滑动窗口的最大值(单调队列)
    python-网络安全编程第二天(文件操作)
    重闯Sqli-labs关卡第一天(1-4关)
    python-网络安全编程第一天(requests模块)
    PHP代码审计入门(SQL注入漏洞挖掘基础)
    PHP代码审计入门(敏感函数回溯参数过程)
    PHP核心配置基础解读
  • 原文地址:https://www.cnblogs.com/linhuanjie/p/10021702.html
Copyright © 2020-2023  润新知