记一次面试,分享我整理的答案。。。
昨天投了一家北京的公司,由于人不在北京,电话问了几个问题,答得一般,完了我就记下来问题,跟大家分享一下。
简述apache与nginx
-
Nginx
- 轻量级,采用 C 进行编写,同样的 web 服务,会占用更少的内存及资源
- 抗并发,处理请求是异步非阻塞的,负载能力比 apache 高很多,而 apache 则是阻塞型的。在高并发下 nginx 能保持低资源低消耗高性能 ,而 apache 在 PHP 处理慢或者前端压力很大的情况下,很容易出现进程数飙升,从而拒绝服务的现象。
- nginx 处理静态文件好,静态处理性能比 apache 高三倍以上。
- nginx 的设计高度模块化,编写模块相对简单。
- nginx 配置简洁,正则配置让很多事情变得简单,而且改完配置能使用 -t 测试配置有没有问题,apache 配置复杂 ,重启的时候发现配置出错了,会崩溃。
- nginx 作为负载均衡服务器,支持 7 层负载均衡。
- nginx 本身就是一个反向代理服务器,而且可以作为非常优秀的邮件代理服务器。
- 启动特别容易, 并且几乎可以做到 7*24 不间断运行,即使运行数个月也不需要重新启动,还能够不间断服务的情况下进行软件版本的升级。
- 社区活跃,各种高性能模块出品迅速。
-
Apache
- apache 的 rewrite 比 nginx 强大,在 rewrite 频繁的情况下,用 apache。
- apache 发展到现在,模块超多,基本想到的都可以找到。
- apache 更为成熟,少 bug ,nginx 的 bug 相对较多。
- apache 超稳定。
- apache 对 PHP 支持比较简单,nginx 需要配合其他后端用。
- apache 在处理动态请求有优势,nginx 在这方面是鸡肋,一般动态请求要 apache 去做,nginx 适合静态和反向。
- apache 仍然是目前的主流,拥有丰富的特性,成熟的技术和开发社区。
http状态码
https://baike.baidu.com/item/HTTP%E7%8A%B6...
502 Bad Gateway 作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。
504 Gateway Timeout 作为网关或者代理工作的服务器尝试执行请求时,未能及时从上游服务器(URI标识出的服务器,例如HTTP、FTP、LDAP)或者辅助服务器(例如DNS)收到响应。
http与https区别
-
概念
HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。
HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。
HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。 -
区别
- https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
- http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
- http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
- http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
网络协议层级,及代表性的应用
- OSI模型共分七层:从上至下依次是。
- 应用层: 指网络操作系统和具体的应用程序,对应WWW服务器、FTP服务器等应用软件。
- 表示层: 数据语法的转换、数据的传送等。
- 会话层: 建立起两端之间的会话关系,并负责数据的传送。
- 传输层: 负责错误的检查与修复,以确保传送的质量,是TCP工作的地方。(报文)。
- 网络层: 提供了编址方案,IP协议工作的地方(数据包)。
- 数据链路层: 将由物理层传来的未经处理的位数据包装成数据帧。
- 物理层: 对应网线、网卡、接口等物理设备。
同步与异步,阻塞与非阻塞
- 同步:当一个同步调用发出后,调用者要一直等待返回消息(或者调用结果)通知后,才能进行后续的执行;
- 异步:当一个异步过程调用发出后,调用者不能立刻得到返回消息(结果)。在调用结束之后,通过消息回调来通知调用者是否调用成功。
- 阻塞:阻塞调用是指调用结果返回之前,当前线程会被挂起,一直处于等待消息通知,不能够执行其他业务,函数只有在得到结果之后才会返回。
- 非阻塞:非阻塞和阻塞的概念相对应,指在不能立刻得到结果之前,该函数不会阻塞当前线程,而会立刻返回。
阻塞调用和同步调用是不同的。对于同步调用来说,很多时候当前线程可能还是激活的,只是从逻辑上当前函数没有返回而已,此时,这个线程可能也会处理其他的消息。如果这个线程在等待当前函数返回时,仍在执行其他消息处理,那这种情况就叫做同步非阻塞;如果这个线程在等待当前函数返回时,没有执行其他消息处理,而是处于挂起等待状态,那这种情况就叫做同步阻塞;所以同步的实现方式会有两种:同步阻塞、同步非阻塞;同理,异步也会有两种实现:异步阻塞、异步非阻塞。
linux权限
使用数字表示权限时,每组权限分别为对应数字之和:
- rw = 4 + 2 = 6
- rwx = 4 + 2 + 1 = 7
- r-x = 4 + 1 = 5
所以,使用数字表示 UGO 权限时,可以用如下方式表示:
- chmod 660 test.md 设置 UGO 权限为 rw-rw----
- chmod 775 test.md 设置 UGO 权限为 rwxrwxr-x
redis内存满了怎么办
redis设置配置文件的maxmemory参数,可以控制其最大可用内存大小(字节)。当所需内存超过maxmemory,这个时候就该配置文件中的maxmemory-policy出场了,其默认值是noeviction。下面是当可用内存不足时,删除redis键具有的淘汰规则。
规则名称 | 规则说明 |
---|---|
volatile-lru | 使用LRU算法删除一个键(只对设置了生存时间的键) |
allkeys-lru | 使用LRU算法删除一个键 |
volatile-random | 随机删除一个键(只对设置了生存时间的键) |
allkeys-random | 随机删除一个键 |
volatile-ttl | 删除生存时间最近的一个键 |
noeviction | 不删除键,只返回错误 |
LRU算法,least Recently Used,最近最少使用算法。也就是说默认删除最近最少使用的键。但是一定要注意一点!redis中并不会准确的删除所有键中最近最少使用的键,而是随机抽取3个键,删除这三个键中最近最少使用的键。那么3这个数字也是可以设置的,对应位置是配置文件中的maxmeory-samples。
原文链接: https://www.phpbest.cn/posts/11.html
本作品采用《CC 协议》,转载必须注明作者和本文链接
有不对的地方指正一下,谢谢
你这面的是php么,计算机网络吧.网络协议竟然都能问出来.
网络协议层级回答TCP/IP协议吧,只有四层.简单一些,现在通用的也是这个
@Max 我也不知道啊,就要问我这些
面试薪水大概多少?感觉好厉害。。
@Cool 说出来你可能不信,给我开8-10k
@lukedever 这问题这工资简直呵呵了
感觉面试的 应该 是 运维 吧 :flushed:
@蔺焕然 这是计算机基础知识,多少要懂一些,上限才高
@lukedever 那你怎么会答得?一线城市还是?
@Cool 注意审题,北京,不想去
@lukedever
你这一说我又回去看了下。简单分析,
是你
主动
投的公司,然后说答得一般
。然后你说你没去该
公司
是因为你不在北京,这....看题能看出?
@Cool ?
这些题目不是很难。就看你面试的是高级还是中级了。
好奇没什么没问题算法题目。
支持下
@李飞麟 面试中级就会有算法题目?
支持楼主的分享,感觉经历过项目的洗礼才能对这些有比较深刻的认识
应该算有点难度的了
@lukedever 很明显,是运维面试的你, :joy:
这些基本是基础了,不过8-10k那是耍你了
@夜晚的雨 为撒子
@lukedever 这些东西,小公司不会问,大公司的话不会给这么低的工资,所以基本不是诚心招人。另外这些能弄明白的估计也不接受8-10k吧
@夜晚的雨 在理老哥,不过这些并不是很难
@lukedever 这些比较基础也比较表面,比如问了 nginx 和 apache 但是并没有深入的问 php 是如何与他们协同进行工作的
@夜晚的雨 嗯
:heart_eyes:
一般502 504 该怎么处理呢