后端基础面试题(持续更新)

简介: 学习中整理的面试题以及他们遇到的面试题

面试题

Nginx面试题


什么是Nginx
Nginx是一个 轻量级/高性能的反向代理Web服务器,用于 HTTP、HTTPS、SMTP、POP3 和 IMAP 协议。他实现非常高效的反向代理、负载平衡,他可以处理2-3万并发连接数,官方监测能支持5万并发,现在中国使用nginx网站用户有很多,例如:新浪、网易、 腾讯等。

Nginx 有哪些优点
  1. 跨平台、配置简单。
  2. 非阻塞、高并发连接:处理 2-3 万并发连接数,官方监测能支持 5 万并发。
  3. 内存消耗小:开启 10 个 Nginx 才占 150M 内存。
  4. 成本低廉,且开源。
  5. 稳定性高,宕机的概率非常小。
  6. 内置的健康检查功能:如果有一个服务器宕机,会做一个健康检查,再发送的请求就不会发送到宕机的服务器了。重新将请求提交到其他的节点上

Nginx应用场景
  1. http服务器。Nginx是一个http服务可以独立提供http服务。可以做网页静态服务器。
  2. 虚拟主机。可以实现在一台服务器虚拟出多个网站,例如个人网站使用的虚拟机。
  3. 反向代理,负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会应为某台服务器负载高宕机而某台服务器闲置的情况。
  4. nginz 中也可以配置安全管理、比如可以使用Nginx搭建API接口网关,对每个接口服务进行拦截。

Nginx怎么处理请求
    listen       80;                          # 提供服务的端口,默认80
    server_name  localhost;                    # 提供服务的域名主机名
    location / {                               # 第一个location区块开始
        root   html;                           # 站点的根目录,相当于Nginx的安装目录
        index  index.html index.html;          # 默认的首页文件,多个用空格分开
    }                                          # 第一个location区块结果

1. 首先,Nginx 在启动时,会解析配置文件,得到需要监听的端口与 IP 地址,然后在 Nginx 的 Master 进程里面先初始化好这个监控的Socket(创建 S ocket,设置 addr、reuse 等选项,绑定到指定的 ip 地址端口,再 listen 监听)。
2. 然后,再 fork(一个现有进程可以调用 fork 函数创建一个新进程。由 fork 创建的新进程被称为子进程 )出多个子进程出来。
3. 之后,子进程会竞争 accept 新的连接。此时,客户端就可以向 nginx 发起连接了。当客户端与nginx进行三次握手,与 nginx 建立好一个连接后。此时,某一个子进程会 accept 成功,得到这个建立好的连接的 Socket ,然后创建 nginx 对连接的封装,即 ngx_connection_t 结构体。
4. 接着,设置读写事件处理函数,并添加读写事件来与客户端进行数据的交换。

Java后端开发

三目运算符空指针问题

当第二位和第三位表达式都是包装类型的时候,该表达 式的结果才是该包装类型,否则,只要有一个表达式的类型是基本数据类型,则表达 式得到的结果都是基本数据类型。如果结果不符合预期,那么编译器就会进行自动拆箱
当第二位和第三位操作数的类型相同时,三目运算符表达式的结果和这两位操作数的类型相同。当第二,第三位操作数分别为基本数据类型和该基本数据类型对应的包装类型时,那该表达式的结果的类型要求是基本数据类型。为了满足以上规定,又避免程序员过度感知这个规则,所以在编译过程中编 译器如果发现三目操作符的第二位和第三位操作数的类型分别是基本数据类型 ( 如 boolean) 以及该基本类型对应的包装类型(如 Boolean)时,并且需要返回表达式为 包装类型,那么就需要对该包装类进行自动拆箱。

Map<String,Boolean> map = new HashMap<String,Boolean>();
Boolean b = (map!=null ? map.get("Hello") : false);

在JDK1.8之前会抛NPE,在JDK1.8以后会返回null(在1.8以后再编译过程中泛型会被擦除(泛型的类型擦除))

持续更新中...

相关文章
|
5月前
|
设计模式 算法 Java
后端面试题:接口和抽象类的区别?抽象类可以多继承吗?
字节后端面试题:接口和抽象类的区别?抽象类可以多继承吗?
51 0
|
5月前
|
前端开发 JavaScript
【面试题】面试官:如果后端给你 1w 条数据,你如何做展示?
【面试题】面试官:如果后端给你 1w 条数据,你如何做展示?
|
4月前
|
索引 NoSQL 关系型数据库
【后端面经】【NoSQL】ElasticSearch - 1 -2 Translog + Elasticsearch索引与分片 + 面试准备
【6月更文挑战第15天】Elasticsearch利用Translog确保数据安全,类比MySQL的redo log,它在内存缓冲后记录Translog,每隔5秒持久化磁盘,提供高效且顺序的写入。尽管如此,仍可能最多丢失5秒数据。索引由分片组成,每个分片有主从结构,分布于不同节点以降低故障影响。当主分片失败,主节点会选择新主分片。面试中可讨论公司如何使用Elasticsearch、其性能、索引设计、可用性策略及解决过的挑战。常见问题涉及Elasticsearch的应用场景、问题解决及写入流程。
37 1
【后端面经】【NoSQL】ElasticSearch - 1 -2 Translog + Elasticsearch索引与分片 + 面试准备
|
3月前
|
算法 网络协议 Linux
|
3月前
|
存储 安全 Java
Java面试题:假设你正在开发一个Java后端服务,该服务需要处理高并发的用户请求,并且对内存使用效率有严格的要求,在多线程环境下,如何确保共享资源的线程安全?
Java面试题:假设你正在开发一个Java后端服务,该服务需要处理高并发的用户请求,并且对内存使用效率有严格的要求,在多线程环境下,如何确保共享资源的线程安全?
63 0
|
4月前
|
存储 算法 Java
JAVA后端开发面试题库
JAVA后端开发面试题库
60 1
|
3月前
|
负载均衡 NoSQL 中间件
|
5月前
|
存储 缓存 安全
大型互联网企业Java后端技术面试题总结(含答案)
大型互联网企业Java后端技术面试题总结(含答案)
75 0
|
5月前
|
负载均衡 前端开发 Java
字节后端面试题(前端发送请求到后端的过程(MVC),网关gateway作用,怎么解决跨域,各微服务组件作用)
字节后端面试题(前端发送请求到后端的过程(MVC),网关gateway作用,怎么解决跨域,各微服务组件作用)
392 0
|
5月前
|
前端开发 安全 Java
Java后端面试必问:十八道面试题及答案最新整理(速看速藏)
Java后端面试必问:十八道面试题及答案最新整理(速看速藏)
379 0

热门文章

最新文章