本书未发布

探探面试

未匹配的标注

一面

进程,线程,协程的区别

进程:一段程序如果运行了起来之后,我们称之为进程。分配了堆栈和CPU。

怎么设计一个接口?

  1. 请求方式:get,post
  2. 输入输出
  3. 数据一致性
  4. 缓存
  5. 安全性
  6. 请求量

这么回答都直接具体化了,而不是方向性回答。换个方式回答:
(1)从业务方向思考接口,包括:输入输出,请求方式,请求量,缓存,一致性,安全等
(2)接口实现完之后的监控,包括:压测,报警

一个接口速度慢,如何排查?

MySQL:

  • 查询是否用到索引
  • 是否慢查询
  • 访问量是不是太大,增加机器,提高机器性能?

Redis

  • Redis是否存在大key
  • 是否有锁
  • 是否请求量太大

这么回答也太具体了,这种情况就应该从方向性去考虑:
(1)请求量是否激增,导致服务压力过大
(2)接口用到的资源是否异常:比如MySQL,Memcache,Redis,MQ等等。
(3)硬件性能是否异常:比如服务器临时跑了一个脚本占用太多CPU或内存
(4)网络链路是否阻塞:网络的阻塞也会导致接口变慢。DNS缓存等
(5)代理服务器配置是否最优,如Nginx,php-fpm等

如何提高MySQL吞吐量?

一个栈,用O(1)获取最小值

func getMin(stack []int) int {

}

func push(x int) {

}

小结

这次面试不理想,原因是问的问题都泛了,而我当时回答的问题都是从具体点思考。不太喜欢这种问题,会认为太假大空了。可能是我格局太小了。
下次再碰到这种泛的问题,必须先问清楚是不是具体的点还是说广度思考。我也可以直接从广度去回答。

类似的问题还有:

你的职业规划是什么?

(1)技术上会继续深入,比如MQ,分布式,汇编,计算机原理,Cache等,增加广度和深度。
(2)提高认知:会拓展其他的知识面,如哲学,社会学等。
(3)更多探索业务价值,让自己的技术为行业服务。

怎么性能调优?

(1)服务器性能,集群分布式
(2)软件服务性能调优
(3)网络链路调优

你项目中的亮点是什么?难点是什么?

(1)亮点:稳定性,
(2)难点:需要结合Socket,进程管理,IO多路复用,进程通信,长连接,内存占用等知识。

你还有什么问题吗?

(1)职级梯度
(2)公司前景
(3)员工发展

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
讨论数量: 0
发起讨论 只看当前版本


暂无话题~