XTransfer-(高级)支付后端开发工程师-面试总结

# 简单说下SFTP和FTP区别

由于目前是做的支付行业项目,涉及到银行出入款项目可能会文件服务器,所以算是一个简单的开场问题。

ftp和sftp都是日常工作中常用的文件传输方式。

# FTP

  • 需要使用客户端和服务端进行交互。服务端用来存储文件,客户端可以使用FTP协议访问服务端上的资源。

  • 默认开放21、20两个端口。21端口用于传输控制类消息,20端口是否使用取决于传输模式:被动模式(Passive)和主动模式(Port)。当然如果使用被动模式,具体使用哪个端口需要客户端和服务端双方协商。

  • 主动模式

    FTP与SFTP两者有什么区别

    FTP客户端和服务器首先通过Port 21端口进行建立连接,通过这个通道发送命令。客户端需要接受数据时在此端口上进行Port命令。Port命令包含了客户端用什么端口进行接受数据,在传输数据时服务器端通过自己的TCP21端口连接到客户端指定的端口进行发送数据。

  • 被动模式

    FTP与SFTP两者有什么区别

    建立通道与主动模式相似,建立之后是Pasv命令。服务器收到呢Pasv命令后随机打开一个高端端口(大于1024)并且通知客户端在这个端口上进行请求,客户端连接FTP服务器此端口,通过三次握手进行建立通道,然后服务器通过这个端口进行数据的传输。

  • 注意有防火墙的限制,很多防火墙限制了从外部访问发起的连接,所以防火墙和内网中的FTP很多都是不支持Pasv模式的,因此客户端无法通过防火墙来打开一个高端端口。然后很多内网的客户端无法使用Port模式进行登录FTP服务器,因为从服务器的TCP 20端口无法和内网的客户端建立一个新的连接。

# SFTP

然后SFTP是SSH FIle Transfer Protocol,安全的传输协议。同样FTP和SFTP有种相同的语法和功能。SFTP为SSH的其中一部分,是一种传输档案至服务器的安全方式。其实在SSH软件包中,已经包含了一个叫作SFTP的安全文件信息传输子系统,SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接和答复操作,所以从某种意义上来说,SFTP并不像一个服务器程序,而更像是一个客户端程序。

# 两者区别

  • 连接方式: FTP使用TCP端口21来和服务器端进行连接,SFTP是在客户端和服务端之间通过SSH协议(TCP22端口) 建立安全连接来传输文件。
  • 安全性: SFTP使用加密传输认证信息和传输数据,所以SFTP相对FTP安全。
  • 效率: SFTP传输方式使用了加密技术,所以传输效率相对普通FTP要低一些。

对于这个文件,最开始有些懵,所以就简单的介绍了一些FTP的主动、被动模式的工作流程,然后说一下SFTP是一种基于ssh安全认证的加密传输模式。然后说了一下两者在连接方式流程上、安全性上、工作效率上的不同,主要就说了这些内容。

然后就开始问到了JUC了,下面就开始了

# 线程状态

支付业务当中肯定会有线程的操作,那你简单说一下线程的状态是怎样的。

# synchronized加锁方式和底层原理

# wait() sleep() 区别

# 线程池有哪些,自定义线程池需要哪些内容

四大线程池、七大参数、拒绝策略、工作队列有哪些

# 线程池的数据结构

# 队列平时如何使用,使用场景

# synchronized和lock区别

# 数据库事务和事务的隔离界别

# 事务原则

  • 原子性
  • 一致性
  • 持久性
  • 隔离性

# 并发下产生的问题

  • 脏读(Dirty Read)

    一个事务读到了另一个未提交事务修改过的数据

  • 不可重复读(Non-Repeatable Read)

    一个事务只能读到另一个已经提交的事务修改过的数据,并且其他事务每对该数据进行一次修改并提交后,该事务都能查询得到最新值。(不可重复读在读未提交和读已提交隔离级别都可能会出现)

  • 幻读(Phantom)

    一个事务先根据某些条件查询出一些记录,之后另一个事务又向表中插入了符合这些条件的记录,原先的事务再次按照该条件查询时,能把另一个事务插入的记录也读出来。(幻读在读未提交、读已提交、可重复读隔离级别都可能会出现)

# 数据库隔离级别

  • DEFAULT
  • READ_UNCOMMITTED(读未提交)
  • READ_COMMITED(读已提交)
  • REPEATABLE_READ(重复读取)
  • SERLALIZABLE(串行化)

事务隔离级别可能造成的问题

# 泛型擦除

# 自定义注解及注解上参数的使用含义