热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

大环境下瑟瑟发抖辞职的第二天,拿了两个offer

本来想找PHP的,误打误撞发现广州的Golang和PHP混合用的公司还蛮多,恰好约面试的都是Golang,挺纳闷的难道PHP真的萎靡了?不过有时候写Go结构体真的不习惯,这一点PH

本来想找 PHP 的,误打误撞发现广州的 Golang 和 PHP 混合用的公司还蛮多,恰好约面试的都是 Golang,挺纳闷的难道 PHP 真的萎靡了?不过有时候写 Go 结构体真的不习惯,这一点 PHP 的高级面向对象特性太香了。

面试过程:

1. 看你简历里也有用过 Go,Go 和 PHP 在运行的时候有什么区别和优势?

答:PHP 每个请求进来时都会创建 fpm-worker 进程,从而导致系统并发高时 CPU 会产生频繁创建进程的开销,而 Go 不会。

2. 你刚刚说到 PHP 那既然是多进程,那怎么共享数据?

答:PHP 既然是多进程,进程资源的地址和 PCB 空间都是独立的,没办法共享数据吧。

3. 那我如果要在 Go 里实现共享数据,有什么方式?

答:我在项目里使用过协程,可以用 channel

4. 那 channel 的本质和底层是什么?

答:这个知识点有点模糊,我想想,如果没记错,我记得就是 linux 的管道吧

5. 那 linux 的管道有什么特性?

答:管道的特性应该是只能等一边写完,另一边才能读,不知道我回答的对不对?

6. 对你说得没错,那你觉得管道是用什么实现的?

答:不好意思,这题我不会

7. 其实管道就是文件,那对文件操作就是加锁

答:对对对,我想起来了,其实这里涉及到资源的抢占,那系统对资源的抢占肯定就是加锁实现。

8. 既然刚刚你也提到协程,可以描述下 Go 的协程原理吗?

答:Go 的协程是基于 CSP 并发模型的 GPM 调度机制,M 可以理解为处理机 CPU,P 就是 Go 底层用来管理 Goroutine 协程的。

9.(这个时候面试官拿了一张白纸过来)写一个二分查找的算法看看吧,用 PHP 或 Go 都可以

答:好,那我用 PHP 写吧(PS: 这里我用的是递归法,要注意二分查找的临界问题)

10. 嗯,算法没问题,问一点网络的吧,socket 用过吗?

答:websocket 用过,在做直播聊天室的时候会用到长连接

11. 那你觉得 websocket 是基于什么协议?

答:是基于 TCP 协议的

12.TCP 客户端和服务端是怎么建立连接通信的?

答:(ps:一开始答错了,我说是 ack 吧,面试官纠正是 syn)然后我恍然大悟接着说,第一步是客户端发送 syn,第二步是服务器应答 syn+ack, 第三步是客户端回复 ack

13. 那 TCP 握手是几次,断开是几次?

答:握手是三次,断开是四次(ps: 有些面试官会问为什么断开要四次,这里涉及到半连接等待关闭,幸好没问)

14. 假设我们现在要做一对一视频聊天,每日 DAU 可能达到几十万以上,后端怎么实现一对一匹配的算法?还有,怎么实现快速的匹配服务器不会有压力问题?

答:我想一下。用户登录的时候,如果未开始匹配,可以把用户放到 redis 里的 set 集合里,通过 SRANDMEMBER 命令随机抽取人出来就好了 ,至于 redis 的 value 最大可以保持 512m 数据,也就是理论上我们承载可以达到上千万上亿用户都不是问题,至于要保持 redis 的高可用,可以用 rdb 或 aof 做数据持久化,另外,redis 也有哨兵模式,主 redis 挂了也可以选举抽取空闲的 redis 服务器顶上

15.mysql 主从的时候有没有遇到过主从延迟同步的情况?是怎么解决的?

答:emmmmm,这个情况我还没遇到过。

16. 你也知道我们是做社交 APP 的,如果我们要做一些兴趣推荐的内容或者人,你会怎样实现?

答:可以用 ElasticSearch,我以前的项目有配合 ik 中文分词使用,缺点是比较吃机器内存。

总结:

面试完和面试官聊了聊,得知面试官是从 YY 出来的

从整个面试流程来看,面试官太会引导问题了,从应用层面一点点问出底层细节,也加予了适当的提示,这一点很值得学习

另外一个 offer 是医院体系下医疗行业,因为冲击较大未来盈利可能有困难,规模是 20 人,就不考虑接 offer 了,不过还是分享一下面试的内容

1、redis 在项目里用过哪些数据类型?

2、怎么解决 redis 在并发下商品超卖的问题?

3、Golang 长连接的时候是怎样做心跳机制的?

4、说一下你是怎么理解微服务的?

5、mq 用过吗?在什么场景使用的?


推荐阅读
  • celery 爬虫使用
    简介celery是一个基于分布式消息传输的异步任务队列,它专注于实时处理,同时也支持任务调度。它由三部分组成,消息中间件, ... [详细]
  • 【系列二】长连接,短连接及WebSocket介绍(含http1.0,1.1,2.0相关)
    前言上一节讲了长轮询和轮询及其实现,这节讲一讲长连接、短连接及webSocket,在讲这些之前,我们先来普及一下http相关的一 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 关于我们EMQ是一家全球领先的开源物联网基础设施软件供应商,服务新产业周期的IoT&5G、边缘计算与云计算市场,交付全球领先的开源物联网消息服务器和流处理数据 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 本文介绍了Redis中RDB文件和AOF文件的保存和还原机制。RDB文件用于保存和还原Redis服务器所有数据库中的键值对数据,SAVE命令和BGSAVE命令分别用于阻塞服务器和由子进程执行保存操作。同时执行SAVE命令和BGSAVE命令,以及同时执行两个BGSAVE命令都会产生竞争条件。服务器会保存所有用save选项设置的保存条件,当满足任意一个保存条件时,服务器会自动执行BGSAVE命令。此外,还介绍了RDB文件和AOF文件在操作方面的冲突以及同时执行大量磁盘写入操作的不良影响。 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • java drools5_Java Drools5.1 规则流基础【示例】(中)
    五、规则文件及规则流EduInfoRule.drl:packagemyrules;importsample.Employ;ruleBachelorruleflow-group ... [详细]
  • 本文探讨了容器技术在安全方面面临的挑战,并提出了相应的解决方案。多租户保护、用户访问控制、中毒的镜像、验证和加密、容器守护以及容器监控都是容器技术中需要关注的安全问题。通过在虚拟机中运行容器、限制特权升级、使用受信任的镜像库、进行验证和加密、限制容器守护进程的访问以及监控容器栈,可以提高容器技术的安全性。未来,随着容器技术的发展,还需解决诸如硬件支持、软件定义基础设施集成等挑战。 ... [详细]
  • 云原生应用最佳开发实践之十二原则(12factor)
    目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
  • Windows简单部署Exceptionless
    部署准备Elasticsearch、Exceptionless.API、Exceptionless.UI、URLRewrite、.NET运行时 1、安装ElasticSearch1 ... [详细]
  • 一份来自清华的数据分析笔记,请查收!
    之前发过很多数据分析的文章,收到不少好评,但也有一些困惑:入门数据分析该学哪些知识点?该看哪些书?是从Pyth ... [详细]
  • websocket深入,tomcat,jetty服务器使用对比
    转载整理自https:www.zhihu.comquestion20215561http:www.open-open.comlibviewopen1435905714122.ht ... [详细]
  • 简短的问题是:是否可以从远程服务器中提取日志(在日志文件中)并将其提取到 ... [详细]
author-avatar
king_her灬o1
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有