Gophers如何准备面试?

前言

哈喽,大家好,我是asong。断更接近两个月了,这段时间我一直在准备面试,所以这篇文章就主要来说一说当前市场环境以及该如何准备面试;

我本人技术栈主要是Go语言,找的都是Golang开发的岗位,所以本文更适合相关技术栈的朋友们观看;

我准备了一个Go八股文大全PDF,需要的朋友自取;

获取方式关注公众号:Golang梦工厂,后台回复:面试;

当前Go语言市场环境

当前互联网环境人尽皆知,不少公司都在降本增效,所以招人的公司并不多,除了宇宙条、砍一砍公司从未停止过招人,其他公司基本都停止了招聘,所以这个时候找工作真的难,如果有朋友想跳槽,我劝你最好冷静一下,骑驴找马最好。

我在找工作的时候主要是看上海、北京的机会,使用boss直聘投递简历,主要是看Golang岗位的职位,Go语言的岗位主要分为两大块:

  • 业务开发

  • 容器平台开发

众所周知云原生的一些代表产品k8s、prometheus、docker都是由Go语言开发的,所以市场上大多数岗位都是容器平台开发岗位,业务开发的岗位也有,不过一般都是小厂偏多,大厂使用Golang开发业务的就那么几个,主流开发语言还是Java,这个还是无可撼动的,虽然不多,但是机会还是有的,大家伙也不要担心,Go语言的市场会越来越好的,至少出来找工作还是有坑位的,能不能拿到就要看自己的实力了;

我本人之前的经历主要是使用Go语言开发业务,所以我本次投递的岗位也都是业务岗,我是想着冲击一下容器平台开发岗位,无奈自己真的不懂k8s,所以基本投递的简历都石沉大海了;

该如何准备面试

我也有两年多没有碰过面试了,所以刚开始准备面试是没有方向的,所以这时候我投递了几个小厂,寻思找找面试的感觉,顺便看看当前市场面试都问一下什么。好家伙,我立刻就收到了两个小公司的面试邀请,心想好好准备,总结经验,结果两个面试都在10分钟左右就结束了,两家公司都一样,面试官们什么也没问,上来第一句话就是:"我们面试开始吧,你先自我介绍一下",我:"balabalabala",面试官:"项目我们等下再过,我们先来做道题吧",长时间没有刷过题本身算法就比较弱,思考了好久都没有做出来,大概10分钟左右后,面试官说:"我没啥想问的了,你有什么想问的吗?",然后一场面试没结束,总结经验就是TMD算法题还是重中之重呀,算法题做不出来,会啥都没用呀!!!

算法题

前面说了那么多废话,就是为了引出找工作第一个要准备的就是算法题,现在的市场环境就是这样,不论大小公司,算法题是必考了,逃不掉的,甚至现在很多小公司都是上来先是算法题,做出来才会问一问八股文,否则你准备再多的八股文也是没用,算法题以我个人的角度来说,有些算法题是有必要掌握的,比如:链表、二叉树、排序、二分查找、栈、字符串,这些属于基本的数据结构,确实要熟记于心,而有一些算法题,就是在考数学能力,有些都是些奥数知识,我觉得在面试中考察不大,这种题就上升到智力了,一般很难在面试中想出来,反正我这个水平很菜,基本是写不出来;我只是吐槽一下,但是还是要准备的,算法题这个东西就是要多刷,接下来介绍几个学习算法的几个方式

  • 如果是临时抱佛脚,就刷leetcode hot100题

  • 如果是长期学习,leetcode就按照题型分批去练习吧,多写多总结

  • 极客时间有一个《数据结构与算法之美》,这个我看过一便,写的是真不错,跟着学一遍肯定有所收获

  • labuladong的算法小抄,大家也可以看一看这个对于算法入们来说是够用了

我主要就是这样学习算法的,如果你有更好的推荐欢迎评论区分享~

Go八股文

既然是面试Go语言的岗位,在简历上只要写的是熟悉、精通,都逃不掉Go八股文,我在面试中被问的最多的几个Go语言八股文如下:

  • GMP模型是什么?为什么要有P?

  • Go语言调度器的发展史说一下?

  • Go语言的逃逸分析和GC你了解吗?展开说一下GC的过程

  • Goroutine是什么?能介绍一下他吗?

  • defer是啥?怎么用的,底层原理是啥?

  • map和sync.map是有什么区别?看过源码吗,可以介绍一下吗?

  • 切片的底层实现说一下?

  • Go语言的互斥锁是怎么实现的?读写锁呢?

  • 项目中如果出现内存泄漏你是怎么排查的?

这几个我都是高频的面试考点,我自己总结在了我的Go语言八股文大全中,需要的朋友公众号后台自取回复:面试,即可获取最新PDF;

存储&中间件八股文

存储:mysql、redis、memory、elasticsearch

中间件:kafka、rabbitmq、延迟队列

这几个应该是后端开发同学必须要掌握的,尤其是mysql、redis,这两个可是老八股文了,这块没有多说的,如果有朋友对这些还不知道怎么准备也可以从我的Go语言八股文大全中获取;

mysql知识的学习推荐文章:极客时间:mysql45讲

redis知识的学习推荐书籍:redis的设计与实现,这是一本讲解底层实现的书,文章篇幅不多,3天时间差不多就可以读完,只要知识点你都记住了,应对面试应该是没啥问题

微服务

现在很多公司都是微服务化的了,所以微服务相关的八股文也要整理,有些同学可能会有疑问,这块不应该是基础架构的同事来管理吗,做业务的为啥也要知道这些?道理虽然是这样,但是作为业务开发也需要了解一下这方面的知识,才能更好的排查问题;

微服务相关的主要知识点:

服务拆分:划分规则、划分策略等

服务设计模式:链式设计模式、聚合器设计模式、基于时间的异步模式等

服务间通信:一对一、一对多、微服务API

微服务治理:服务注册与发现、负载均衡、配置中心、容错机制、安全、链路追踪、熔断、限流、服务优雅上线等

微服务框架:go-zero、dubbo-go、go-micro、go-kit等

我在面试中被问的最多的就是:服务注册与发现、负载均衡、链路追踪、熔断、限流,这几个知识点是高频考点,尤其是负载均衡和限流,基本每场面试都问,建议大家把这一块好好看一下;

网络与操作系统

计算机网络与操作系统,这块应该是基础课,但是能真正掌握这块的同学是少之又少,所以我放到了最后,如果你是面资深的岗位,那么你就要注意了,除了项目,这块的知识会被挖的很深,所以这块绝不是简单的背八股文就能解决的,建议大家没事还是把大学时候的书籍拿出来,在学习一遍;

这里推荐一本书:深入Linux网络,张彦飞大佬写的,我读这本书收获很大,里面的一些知识点是可以应付面试的;

在推荐一个分析Linux操作系统的公众号:低并发编程,这里面的操作系统的讲解也非常好,强烈推荐;

这块我自己的掌握的也不是很好,给不了太多建议,不过通过这次面试,我觉得要真正理解网络与操作系统不应该只停留在原理阶段,还是要动手实践,比如要理解TCP的三次握手,抓个包比看任何文章都要好,这块我自己后续也会通过实践的方式重新学习一边网络和操作系统,后续会有精彩文章出现,敬请期待;

设计题

现在的公司一般主管面的时候都会问几个设计题,考察一下面试者对技术的掌握性,我在面试中就被了很多设计题,高频的几个面试题如下:

  • 给你一个100G的日志文件,你现在只有1G的内存,找出访问次数前10的IP;

  • zset 如何实现解题排行榜,排序解题数最多,相同解题数的时候,时间最少的在前面

  • 一个直播间会在一瞬间有千万流量进来,如何保证稳定性?如何维护直播间的排行榜保证VIP用户能实时看到自己送礼物的数量?

  • 搜索框下拉词如何设计?

这几道题都是我在面试中遇到的真题,系统设计题主要考察面试者的知识储备,这块没有办法整理全所有的面试题,重要的是思想,多总结、多思考;

项目

每个人的项目都不一样,只能自己准备,不过这个确是重中之重,一般技术面上来都是先聊一聊项目的,这个时候就考察面试者对整个项目的理解程度了,面试官的常考问题:

  • 说一下你认为你做的最有成就感的一个项目

  • 说一下你认为你做的最有挑战性的一个项目,然后你是怎么解决的

其实通过这两个考点就能知道面试者对整个项目的理解程度,比如你是做电商项目的,最好把下单链路都要了解透,这里提供几个整理思路:

  • 订单系统是核心系统,你是保证订单系统的稳定性的?

  • 下单时你们是怎么保证优惠库存扣减成功的?

  • 你们的订单系统存储模型是怎么设计的?为什么这么设计?

  • 你们系统的秒杀业务是怎么设计的?怎么保证不会超卖并且同时保证系统的稳定;

我在整理项目的时候就是按照这个思路整理,应该面试官应该是没啥问题了;

技术深度

这个其实是一个空话,不过在面试中也会被问到,总结其实就是两个问题:

  • 你对你下一份工作有什么计划?

  • 你对未来有什么计划?技术成长有什么计划?

这两个其实我被问了很多次,我每次的答案都不一样,哈哈哈,当然,这是因为面试的公司不同,我说的答案就不同,后来我静下来思考了一下这个问题,我做程序员这个行业的目的是什么?

我自己是喜欢编程的,我记得在填写高考志愿的时候就暗暗下定决心:我一定要当一个名黑客,哈哈哈,后来上了大学才知道,黑客是黑客,程序员是程序员,我本身是喜欢编程的,所以加入了这个行业,但是加入到这个行业,我就懒了,除了学习Go语言源码的知识,我很少接触其他知识,所以广度不够,所以接下来我的目前是提升广度,我本身对容器编排这块感兴趣,所以我在之后会学习k8s,接下来应该会着重分享k8s学习心得;

这个一般在面试中的占比不是很大,但是对面试者自身很重要,还是建议大家没事多问一些为什么、多看一些开源项目,多沉淀、多积累,愿大家都能成为技术大咖;

分享Go八股文大全

我在面试过程中,整合了一些Go语言八股文大全,麻雀虽小,但是五脏俱全,这份文档还是缺少一些东西,我会定期维护的,先分享第一个版本给大家,后续会不断迭代的,获取方式关注公众号:Golang梦工厂,后台回复:面试;

总结

本文只是根绝个人这段时间找工作总结的一份面试准备指南,并不是适用所有人,大家可以取其精华,预祝大家都能找到不错的工作,加油,兄弟们!!!

我是asong,一名普普通通的程序猿,让我们一起慢慢变强吧。欢迎各位的关注,我们下期见~~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
移植curl但是zlib无法使能,如何解决该问题 Host setup: arm-unknown-linux-gnueabihf Install prefix: /opt/rootfs/curl-7.79.0/curl-7.79.0/_install Compiler: arm-linux-gnueabihf-gcc CFLAGS: -Werror-implicit-function-declaration -O2 -Wno-system-headers -pthread CPPFLAGS: -isystem /opt/rootfs/openssl-1.1.1/openssl-1.1.1/_install/include LDFLAGS: -L/opt/rootfs/openssl-1.1.1/openssl-1.1.1/_install/lib LIBS: -lssl -lcrypto -ldl -lpthread curl version: 7.79.0 SSL: enabled (OpenSSL) SSH: no (--with-{libssh,libssh2}) zlib: no (--with-zlib) brotli: no (--with-brotli) zstd: no (--with-zstd) GSS-API: no (--with-gssapi) GSASL: no (libgsasl not found) TLS-SRP: enabled resolver: POSIX threaded IPv6: enabled Unix sockets: enabled IDN: no (--with-{libidn2,winidn}) Build libcurl: Shared=yes, Static=yes Built-in manual: enabled --libcurl option: enabled (--disable-libcurl-option) Verbose errors: enabled (--disable-verbose) Code coverage: disabled SSPI: no (--enable-sspi) ca cert bundle: no ca cert path: no ca fallback: no LDAP: no (--enable-ldap / --with-ldap-lib / --with-lber-lib) LDAPS: no (--enable-ldaps) RTSP: enabled RTMP: no (--with-librtmp) PSL: no (libpsl not found) Alt-svc: enabled (--disable-alt-svc) HSTS: enabled (--disable-hsts) HTTP1: enabled (internal) HTTP2: no (--with-nghttp2, --with-hyper) HTTP3: no (--with-ngtcp2, --with-quiche) ECH: no (--enable-ech) Protocols: DICT FILE FTP FTPS GOPHER GOPHERS HTTP HTTPS IMAP IMAPS MQTT POP3 POP3S RTSP SMB SMBS SMTP SMTPS TELNET TFTP Features: AsynchDNS HSTS HTTPS-proxy IPv6 Largefile NTLM NTLM_WB SSL TLS-SRP UnixSockets alt-svc
06-13

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值