记一次面试,分享我整理的答案。。。

昨天投了一家北京的公司,由于人不在北京,电话问了几个问题,答得一般,完了我就记下来问题,跟大家分享一下。

简述apache与nginx

  • Nginx

    1. 轻量级,采用 C 进行编写,同样的 web 服务,会占用更少的内存及资源
    2. 抗并发,处理请求是异步非阻塞的,负载能力比 apache 高很多,而 apache 则是阻塞型的。在高并发下 nginx 能保持低资源低消耗高性能 ,而 apache 在 PHP 处理慢或者前端压力很大的情况下,很容易出现进程数飙升,从而拒绝服务的现象。
    3. nginx 处理静态文件好,静态处理性能比 apache 高三倍以上。
    4. nginx 的设计高度模块化,编写模块相对简单。
    5. nginx 配置简洁,正则配置让很多事情变得简单,而且改完配置能使用 -t 测试配置有没有问题,apache 配置复杂 ,重启的时候发现配置出错了,会崩溃。
    6. nginx 作为负载均衡服务器,支持 7 层负载均衡。
    7. nginx 本身就是一个反向代理服务器,而且可以作为非常优秀的邮件代理服务器。
    8. 启动特别容易, 并且几乎可以做到 7*24 不间断运行,即使运行数个月也不需要重新启动,还能够不间断服务的情况下进行软件版本的升级。
    9. 社区活跃,各种高性能模块出品迅速。
  • Apache

    1. apache 的 rewrite 比 nginx 强大,在 rewrite 频繁的情况下,用 apache。
    2. apache 发展到现在,模块超多,基本想到的都可以找到。
    3. apache 更为成熟,少 bug ,nginx 的 bug 相对较多。
    4. apache 超稳定。
    5. apache 对 PHP 支持比较简单,nginx 需要配合其他后端用。
    6. apache 在处理动态请求有优势,nginx 在这方面是鸡肋,一般动态请求要 apache 去做,nginx 适合静态和反向。
    7. 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协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。

  • 区别

    1. https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
    2. http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
    3. http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
    4. 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 协议》,转载必须注明作者和本文链接
本帖由系统于 6年前 自动加精
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 26

有不对的地方指正一下,谢谢

6年前 评论

你这面的是php么,计算机网络吧.网络协议竟然都能问出来.
网络协议层级回答TCP/IP协议吧,只有四层.简单一些,现在通用的也是这个

6年前 评论

@Max 我也不知道啊,就要问我这些

6年前 评论

面试薪水大概多少?感觉好厉害。。

6年前 评论

@Cool 说出来你可能不信,给我开8-10k

6年前 评论

@lukedever 这问题这工资简直呵呵了

6年前 评论
蔺焕然

感觉面试的 应该 是 运维 吧 :flushed:

6年前 评论

@蔺焕然 这是计算机基础知识,多少要懂一些,上限才高

6年前 评论

@lukedever 那你怎么会答得?一线城市还是?

6年前 评论

@Cool 注意审题,北京,不想去

5年前 评论

@lukedever

你这一说我又回去看了下。简单分析,
是你主动投的公司,然后说答得一般
然后你说你没去该公司是因为你不在北京,
这....看题能看出?

file

哈哈,以上纯属扯淡开玩笑,还是挺佩服你的实力的!

5年前 评论

这些题目不是很难。就看你面试的是高级还是中级了。
好奇没什么没问题算法题目。

5年前 评论
hiwangqi

支持下

5年前 评论

@李飞麟 面试中级就会有算法题目?

5年前 评论

支持楼主的分享,感觉经历过项目的洗礼才能对这些有比较深刻的认识

5年前 评论

应该算有点难度的了

5年前 评论

@lukedever 很明显,是运维面试的你, :joy:

5年前 评论

这些基本是基础了,不过8-10k那是耍你了

5年前 评论

@lukedever 这些东西,小公司不会问,大公司的话不会给这么低的工资,所以基本不是诚心招人。另外这些能弄明白的估计也不接受8-10k吧

5年前 评论

@夜晚的雨 在理老哥,不过这些并不是很难

5年前 评论

@lukedever 这些比较基础也比较表面,比如问了 nginx 和 apache 但是并没有深入的问 php 是如何与他们协同进行工作的

5年前 评论

一般502 504 该怎么处理呢

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!