这是一个社招岗位,候选人是 GO 开发。小鹅通这家公司虽然不是什么巨头大厂,但是这两年招的人还挺多,并且面试机会也比较容易拿到。
从业务方向上来看,主要可以看做是一个做 SAAS 的,之前我说过 SAAS 这个业务,一般来说都是没有高并发的,可能会有高可用,它的挑战点在于业务复杂度。业务复杂度就是一个不太好出去吹牛逼的东西,即如果你进去了小鹅通,再次跳槽的时候可能项目经历没啥好说的。
总结就是小鹅通可以看做是一个偏兜底的选择。
岗位描述
标签:Golang,PHP
岗位职责:
1、负责SaaS业务的应用系统开发;
2、负责所在业务后台系统的持续优化迭代,以及保障系统的安全稳定高效运行。
岗位要求:
1、本科及以上学历,计算机等相关专业,3年及以上后端开发工作经验;
2、精通GO编程语言,独立完成过完整系统开发者优先;
3、熟练使用MySQL关系型数据库,熟悉常用的系统性能分析及优化方法;
4、熟练掌握tp或laravel等php框架中的一个或多个,熟悉其底层原理,有在框架基础上进行二次开发或对框架进行优化的经验;
5、有技术积累习惯(如博客、GitHub),具备英文文档阅读能力(会上StackOverflow尤佳)。
分析内容
岗位职责的第一条就描述了工作的主要内容,SAAS,即以业务复杂度为主要挑战。
岗位职责的第二条和标签中的 PHP,以及岗位要求的第四条,可以看出来这个岗位进去之后大概率要接手一个 PHP 老系统,而且考虑到小鹅通的历史,这估摸着是一个屎山系统。
岗位要求的第二条倒是一个不太常见的要求,即要求独立完成过完整系统开发者优先。这一条我的猜测是可能要开新系统,又或者里面有多个业务线多个独立系统,所以需要这种人才来维护。
岗位要求的 3 和 4 都可以看做是要求有优化经验,所以相应的要准备几个跟性能优化的案例,以 SQL 有关的优化最好(通用性最强),其次则是和 PHP 有关的优化案例。
最后一个要求,你可以在面试的时候适当提及自己的 github 或者博客等内容。
GO 问题:
- go的map是并发安全的吗?为什么?
- 如何保证map的并发安全?除了加mutex外呢?还有其他办法吗?
- 并发安全的map在写的时候会有大量锁竞争,导致读操作读不到数据,这个问题怎么解决?
项目:
- 项目中最有挑战的难点有哪些?
- 统一查询表达式如何解决不同数据源语法的差异化问题?
计算机网络:
- 在浏览器上输入baidu.com这个操作,背后都发生来什么?
- http和https的区别?
- https由于需要加密解密,这些操作会带来额外的开销,导致响应速度变慢,该如何优化?
- 除了硬件加速和会话复用还有其他的优化方式吗?
- 假设在传输数据之前的ssl/tls阶段,要如何进行优化?
首先,GO 相关的面试题都非常基础,也就是问了内置类型 map。这也是我一直强调的,在 GO 语言的面试中,内置类型的基本原理一定要掌握。
其次,项目中就问了两个问题。第一个问题是典型的开场:你的项目有什么难点,虽然我不知道这个同学是如何回答的,但是从面试官后面的追问来看,这个难点应该没怎么引起面试官的兴趣。
注意,如果你发现面试官在项目上就问了一两个问题,那么只有两种可能:
- 你的项目他不感兴趣
- 这一两个问题他觉得你回答得很好,当然这种可能性特别低。
因此,我这里可以断言,这个同学的项目经历没面好。
第三也算是典型的计算机网络的八股文,聚焦在 https 协议上,并且考察的核心也是很常规:https 的性能问题,背好八股文就可以了。