[分享] 大环境下瑟瑟发抖辞职的第二天,拿了两个 offer[通俗易懂]

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

大家好,又见面了,我是全栈君。

本来想找 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 用过吗?在什么场景使用的?

  最后还是要奉劝各位小伙伴,辞职要慎重.

[分享] 大环境下瑟瑟发抖辞职的第二天,拿了两个 offer[通俗易懂]

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/111785.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 在线图片文字识别html,识别文字在线_识别图片文字的在线方法是什么?[通俗易懂]

    在线图片文字识别html,识别文字在线_识别图片文字的在线方法是什么?[通俗易懂]在线ocr文字识别软件哪个好?楼主给你说哦!其实没有必要咋先ocr文字识别的,可以使用专业的第三方软件来进行ocr文字识别的。识别的效果也是很不错的,准确率达到97%,甚至更高的,建议尝试一下。在线和线下无非多了一个下载过程,其他算起来还是使用专业的软件比较方便!图片文字识别是怎么在线识别出来的?哪个软件好用?在云便签中可以添加图片,识别图片中的文字1、首先打开云便签后,点击时钟图标,然后在内容编…

  • Qt容器组件(二)之QWidgetStack、QMdiArea、QDockWidget

    一、控件栈QWidgetStack(1)属性(2)常用函数(3)信号、槽(4)示例#include"mainwindow.h"#include<QApplic

    2021年12月29日
  • leetcode-15三数之和(双指针)「建议收藏」

    leetcode-15三数之和(双指针)「建议收藏」原题链接给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。示例 1:输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]示例 2:输入:nums = []输出:[]示例 3:输入:nums = [0]输出:[] 提示:0 <= nums.length <= 300

  • postman使用教程1

    postman使用教程1  在我们平时开发中,特别是需要与接口打交道时,无论是写接口还是用接口,拿到接口后肯定都得提前测试一下,这样的话就非常需要有一个比较给力的Http请求模拟工具,现在流行的这种工具也挺多的,像火狐浏览器插件-RESTClient,Chrome浏览器插件-Postman等等。这里主要介绍一下Postman。 一、Postman说明  Postman是一种网页调试与发送网页http请求的chrome插件…

  • c数组求和[通俗易懂]

    c数组求和[通俗易懂]C语言数组求和#include<stdio.h>intaddarray(intarray[],intn);//声明intmain(void){ intdata[]={0,1,2,3,4,5,6,7,8,9}; intsize=sizeof(intdata/intdata[0])//用数组的总长度/每个的长度,得出数据有多少个 printf(“结果是:%d\n”,addarry(data,size));//函数返回值输出 return0;}intadd

  • undefined pthread_create_pthread_key_create

    undefined pthread_create_pthread_key_create#include#includeusingnamespacestd;HANDLEhMutex;DWORDWINAPIthreadFun(LPVOIDlpParamter){char*p=(char*)lpParamter; while(1){ WaitForSingleObject(hMutex,INFINITE)

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号