2020年的第一次面试以及感受
面试出来时还满脑子的思路,回到家坐在电脑面前的时候,突然有点不知道如何下笔了😹
#前言
事情是这样的,2020年在这次疫情的影响下,公司业务严重受损,没办法,目前已经是待岗状态了,为了理想和生活,总得走出去。于是就这样踏上了刷简历的路程。在某招聘平台上刷了两天,发现目前招聘.net和.netcore的公司也就十几家(排除外包公司,本人不喜欢去外包😂),😔哎,没办法,这个时候真的难啊。。。
两天十几个公司刷下来,看了几个稍微合适,该投简历的投简历,然后就进入到了等待状态,昨天中午吃完饭,接到个电话,一听,正是早上投的某公司,问我是否是本人,目前在找工作吗?是否有时间去面试一下,大概什么时候方便。我说,是的,目前在找工作,可以去面试的,要不周五早上10点面试吧。就这样定好了面试时间
#面试
一早起来做好早餐,随便吃完后,就去赶地铁了,这算是我今年第一次赶地铁吧,久违的感觉了。坐了1.5小时的地铁,到了某公司的园区,一看时间,正好9.45,我一般面试的话都会提前点到,然后在周围看看,大概会提前10-5分钟进面试地点。在外面稍微逛了逛,到9.50的时候就进去了,来到前台,问了一下接待是否某公司,接待便给了我一份表和试卷,接过表和试卷,脑海里突然就想到,这几年我招聘时的场景,一般来面试的我都不会让他们做题,直接来了就根据对方的项目提实际项目中遇到的问题,倒不是说做面试题有什么不对,而且个人习惯而已,望勿喷。我记得那是16年的时候,也是我最后一次让人做面试题,事情是这样的,我团队里就有个小伙伴是面试的时候就紧张,人也老实,一做题就大脑空白,让他说项目里的东西也有时候会发挥不好,但是关键点和思路是清晰的,后来我决定留下他,事实证明,这几年的项目中他做的确实很好,也是从那时候开始,我就再也没让人做过面试题了。
拿了表和面试题,找了个靠窗的桌子坐下来,边开始了填写,这里说一下面试题里的内容
试卷是很基础的一份题目,前面三大题是验证开发人员的基本功,一般在实际场景中基本用不到。大致是这样的:
问题: int a=3;int b=6; var c=3m; d=3f;
1、求var e=a/b
2、求 var f=c/b
3、求 var g=d/b
做这个题的时候我看到c的时候有点忘了,这个m到底是啥,平时项目里基本上用的是l,f很少看到m,后来面试完了在群里问了小伙伴才想起来,原来是decimal,也是平时不常用,所以记录一下,算是给自己提个醒,平时也别忘了复习基本功!
然后接下来的问题是:
try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,还是在return之后执行?
我答的是会被执行,finally会在return之前执行
接下的问题是:
MVC中的Action返回类型有几种,请写出三种
答常见的有:ContentResult、JsonResult、ViewResult,其他还有更多这里就不一一展示了,百度上可以找到
接下来是sql题,题目就是让你写个根据主键id顺序查询出前50条数据,太简单了,这里就不写sql了浪费时间了
后面就是两到算法题,也是很基础的,具体代码忘了,这里就不多说了。
10分钟做完后就给了接待人员,大概等了有10-20分钟,面试官来了,坐下后,首先是让我自我介绍了一下,我是湖南人,几几年来到了上海,然后入职了某某公司,目前在该公司担任主管,主要负责公司系统的架构搭建等等。。。
然后一通巴拉巴拉介绍完后,开始问问题了,主要问了这么几个问题,1、你们是怎么做微服务的 2、你们如何处理并发的 3、你们微服务里用了哪些 4、微服务的安全性怎么做的
基本上就是上面这些,然后我主要介绍了一下我们是从18年开始使用netcore搭建微服务的,技术选项的时候有考虑过surging、spring cloud、abp,但是并不符合公司的业务需求,所以就自己搭建了一套,以Orleans为网关、consul做服务发现、Apollo做配置中心(后来因为其他原因没使用Apollo配置中心)、Polly做熔断、监控使用Skyworking+ExceptionlessExtensions、事件总线使用CAP+RabbitMq、通讯可以用restful api形式或rpc等等,项目以Jenkins+Docker实现自动发布。在面对高并发时可以使用分布式+缓存+队列的方式处理,微服务之间的安全通过ID4实现OAuth 2.0来做多个微服务的统一认证授权,通过集中认证和授权,获得access_token,而这个token是受其他微服务信任的,在后续的访问中都把access_token带过去,从而实现了微服务的统一认证授权,保障微服务的安全性。
大概是这么个回答,如有回答的不正确的地方还望各位谅解并斧正。
面试官听完后,又和我聊了一下他们现在项目的情况,目前他们只做了分布式,接下来是想做微服务,但是他觉得目前国内.net微服务方面没有什么很好的微服务框架,不像java生态那么完善,后期他们会考虑使用java。然后我问,那以后公司是以什么技术栈为主呢。他说还是以.netcore为主。我悄悄的松了口气,毕竟我还是很想基于.netcore进行开发的,到不是因为语言歧视,也不是java不够优秀(望勿喷😂),只是这么多年都一直以.net进行开发,再说.netcore出来后也能跨平台了。虽说.netcore目前的生态没java完善,但我还是不想放弃,谁也不是天生就强大的,可以给这个“小生命”一点成长的空间,让他继续发展下去,说不定到时候会更优秀呢?
之后我给他推荐了一下目前netcore比较优秀的微服务框架,比如说surging、abp,如果他实在觉得java的微服务框架比较成熟可靠,也可以选spring cloud,目前也是支持.netcore 的。
最后面完技术后,技术面试这一关,他直接说过了,后面就问了一些关于工资方面的问题了,然后他们最近蛮忙的,基本上都快996了,也许是我报的价格比他们老大给的价格范围高了,他去了他们办公室两趟,最后和我说,他们要商量一下,大概两天给我通知
#感触
目前.netcore 关于微服务方面的开源框架确实相比于java来说少之又少,也没java微服务框架的那么成熟,但是.netcore 正式版从“出生”到现在才经历了不到4年的时间,她的成长是有目共睹的,生态圈也在不断的丰富和完善,相信用不了多久,她会越来越好,让我们一起为她的成长加油。技术的道路没有尽头,唯有大家相互帮助,一起分享,才能越走越远!
文中并无针对任何开发语言,只是对.net的一腔热爱,如有冒犯敬请谅解,同时有说的不对的地方请大家斧正,只有清楚的知道自己的弱点,才能完善自己和强大自己,请大家多多指教!🤝