番外篇 老齐面试计
这次,老齐冒充软件行业的新人,带着隐形录音笔去公司面试,希望大家能够学习其中的套路,“旁白君”是我当时的内心独白,以后我会经常更新类似的内容,打开微信扫描二维码收听现场录音。
河北秦明实业集团有限公司是一家以新兴产业为主体,多元化业务综合发展的产业集团。集团在长期的发展建设中,业务涵盖汽车、学前教育、大数据医疗、金融、地产等产业板块,发展战略性新型服务产业,抢占未来发展制高点,实现集团创新性发展。
(开始)
我在前台填完表格后,没有笔试,初试是HR王经理负责,下面是面试内容。
HR:在哪住?
齐:瑞城,离得不远,10分钟路程。
HR:现在是在职状态,还是离职状态?
齐:现在我已经离职了?
HR:做一个简单自我介绍吧。
齐:我叫齐子墨,今年29岁,2009年毕业于河北科技大学信息管理专业,计算机系。自己到现在为止有两年Java软件工作经验,从事过3份工作,分别是17年在“码农笔记”这家公司,这是一家在线教育网站。整个网站的前后端都是由我来开发的。在2016年,我在四川相思鸟工作做土特产电商网站。公司将四川当地的土特产通过网站向全国销售,工作地点在石家庄,老板在石家庄成立了公司和研发中心。网站的前后端部分都是由我一个人开发,都是创业型公司。
(旁白君:这里我用了义名,HR自我介绍时重点说项目和工作经验,技术可以跳过,说了HR也听不懂)
HR:你们这些公司有几个人?
齐:这两家都是创业型的,老板白手起家,所以团队十二三个人。我是软件团队的核心,项目经理是老板。
(内容纯属虚构,HR通过这些公司细节在鉴定你简历的真伪)
HR:咱们技术团队有多少人?
齐:天府特卖网技术团队有3人,2个工程师、1个运维。其中一个人兼着测试。码农笔记这边就我一个人。
(我设计了两个情景,一个是团队合作,突出自己是核心,另一个是单枪匹马,突出自己的技术全面。当时HR听到后还是挺意外的,所有的软件公司都希望能有一个全栈工程师)
HR:技术团队就我一人?
齐:情况是这样,去年5月份,老板想做一个与编程相关的在线教育产品,也谈了融资,结果在去年九月份的时候融资谈崩了,资金流断了。后来坚持了两个月,形势不太好,公司就解散了。
(在描述的时候,最好用故事说明,尽量完善一些细节,这样更有说服力)
HR:您有两年工作经验,是您后期自学的吗?
齐:是的,是我自学的。
HR:在科大期间,学校开设这门课了吗?
齐:有这门课,但基本没听,我有点自己的小碎碎念,一个50多的老太太上去给我们讲Java,我觉得不太合适(HR也在笑)。她讲的还不如我自己看书呢,理论的太多,实战的东西几乎没有,我觉得对自己帮助不大。我在大学期间就已经自学过Java和Web端编程的技术了。
也可能是在这方面喜欢,河北银行做了一次校招,结果我毕业后直接进入河北银行总部,负责网络与机房管理,和编程没什么太大的关系。Java方面的技术也是在这段期间自学的,我的哥哥也是做这行的,给了我不少的指点。我正式进入这个行业是在2016年初。
(HR在观察你的学习动机,要展现你主动自学的态度,一方面强调大学实战内容少,另一方面我虚构了一个“哥哥”现实中就是培训机构的老师,这样做有一个好处,告诉HR你有大神帮你,解决问题比其他人快。)
HR:当时为什么要从河北银行这么好的单位离开,银行的环境应该会更好吧?
齐:确实是不错,但绝没有想象中的那么好。11层以上管理层工作环境确实很棒,各种高大上。基层环境很一般。
说句庸俗的话,看不到前途,河北银行属于业务型公司,做到管理层全部都是业务出身,技术出身几乎没有,技术做到最高的是副处长,上升空间有限。
另外,一些与我相似的老员工,做了很多年,在收入上也只是比我高一点有限,我一眼看到20年以后的生活,这太可怕了。正好,那时我哥哥就是做Java软件开发的,那跟我说你就学java吧,这总是没错的,软件开发是大方向,我就“简单听话照着做”了。
(这个问题巧妙的回答了HR的“你为什要换行”的问题,这个地方我犯了一个错误,不应该说任何与前单位不利的事情,下次改正)
HR:你最大的优势是什么?
齐:我的优势有两方面:
技能上扎实,从项目“零”开始到上线,经过两个完整项目生命周期。
年龄上有优势,咱们这个行业跳槽离职率非常高,这和年轻人“浮躁”的心态有关系。我已经结婚了,也有了孩子,从事业和远期发展不再迷茫,所以做事情比较稳定。如果看准了一个行业,我不会轻易放弃。
(王婆卖瓜自卖自夸,最好有事例证明你的优势)
HR:您做了几个APP?
齐:我做过两个前端应用,两个后端应用,1个移动端应用。
HR:誒,那就先写两个吧。。。
(哈哈,当时我快笑死了,把HR给说蒙了,这正是咱们需要的节奏)
HR:您对汽车这个行业了解吗?
齐:这也就是我提前过来的原因,我自己对车很喜欢,喜欢开车,自己有一辆别克君威。弟弟在车行工作,我们经常聊车这个行业。
在来之前对咱们有过简单的了解。咱们是做共享汽车、新能源的。这是一个发展的方向,现在也是一个风口,这种模式与能源材料是一大方向,未来很有前景。
(看到没,为什么面试前需要在公司官网做背景调查,在这派上用场了吧。在 表达的同时,我也表现出对行业的热爱)
HR:简单跟您介绍一下公司。
HR:我们上面是秦明集团,它是一个多元化产业集团,包括金融、地产、教育、医疗、卫生,还有我们车行等各个行业,车行是一个子公司,分为三个板块,第一个板块“人车生活馆”,第二个板块“汽车租赁与网约车”,第三个板块“新能源与充电业务”。
您面试Java是在新能源板块下,有一个技术部,技术部下有15~18名技术人员,我们目前有“搜搜开呗”产品,在17年9月15日上线运营,目前处于更新迭代的状态,在三月底之前我们还要开发充电桩、后期租赁、停车场业务都已APP形式出现,形成一个完整“人车生活”的生态。
您的部门目前有3个Java,我们目前再需要一个Java作为配合,2个作为核心,2个人辅助与运维。工作制度是7.5小时,8:00~12:00夏14:00~18:00 冬13:30~17:30。
休息为单双休息制,两周歇三天。周二、周四固定加班,目前技术总监由集团总监兼任,冬天到20:30,夏天21:00。
我们试用期3个月,缴纳执行工资80%,转正后缴纳社保,只有五险,没有一金。试用期三个月社保需自己缴纳。
(这里要认真听,各种细节)
HR:其他您有什么需要了解的?
齐:咱们技术部门的人员构成是怎么样的?
HR:技术总监稍候会跟您解释。
(这个信息太重要了,这就等同告诉你,初试通过了)
HR:我看您期望薪资是9K,您只有两年工作经验,您要的是不是偏高了?
齐:虽然工作方面只有两年,您可能感觉出来,我掌握的东西比两年的东西要多,是因为我的哥哥在京东工作,期间他跟我说了很多关于“高并发、架构”方面的知识。这些知识是站在局外人来说是很难了解到细节的,我这哥哥跟我说了很多,我认为我值9K,当然咱们公司有自己的薪资体系,我希望公司在尊重我自己个人意愿基础上。您能尽量帮我争取下,您看好吗?
(这个问题HR一定会问的,也是给自己拉票的好机会,我把虚拟的“哥哥”搬出来,来提高自己的价值感。这个时候不要怂,如果HR看上你了,不会因为你的坚持而取消复试,放心吧。)
HR:您能接受的最低工资是多少,您能说下吗?
齐:嗯…啊….嗯…啊… 我最低的工作要求是8K,不瞒您,我最近一份工资是7.8K。
(HR又一次问讯你能接受的工资,这是一个明确信号,9K超过公司薪酬体系了,这时你可以适当做出让步,这里我表现的很犹豫(表现演技ing),且强调上一份工资7.8K(虚构),给HR觉得他的工作有效果了。
其实,来之前我在智联了解过,这家公司最高只能给8K,我故意报9K就是用来砍价的,如果你直接报8K,那你最多只能拿到7K)
HR:这样您稍等一下,我和技术总监沟通一下。过了一会儿,HR带我去总监办公室做复试,期间了解到总监姓周。(礼节性握手)周:你先说下你这两个项目吧,刚才人事说你有两年工作经验,但你有亲戚在京东工作是吧
齐:是的,我哥是在京东,级别是P9(口误应该是T3)。
(上来第一个问题直接暴露了周总关注事宜,他问我你的亲戚是在京东吧,说明此人很看重技术,HR在这点上也与周总沟通过。“哥哥”战术开始生效)
周:你是一直在石家庄,现在离职了吗?
齐:是的,离职了。
周:你是怎么学的Java?
齐:我上大学对计算机感兴趣,喜欢玩游戏,就是未来想找一份计算机的工作,但一直特别迷茫。后来我哥哥跟我说你来搞java吧,前景特别好,从2014年前后开始接触java,我就跟着我哥开始学习java。到2016年2月四川相思鸟要做天府特卖网,是一个土特产电商,公司在石家庄,借着这个机会我转行到了研发。
(简历中我的学历是专科,从始到终HR与周总没有问及学历的事情,说明他们在此没有特别要求,我通过“哥哥”的故事,侧面夸自己喜欢编程)
周:你们这个公司什么架构,人数多少?
(验证简历真伪)
齐:小公司,一共就12~13个人,研发团队3个人,2个工程师,1个运维。
周:你之前没有项目经验,你的架构怎么来的?
齐:一方面是我自学,一方面我哥哥给我了一些中肯的意见,比如说做Nginx负载均衡、做动静分离、做数据库读写分离,后来我按照这个思路自己学,之后让他帮我验证,反复推敲后弄出来的。
(这里可以把老师讲过的知识拿出来晒一晒)
周:对Dubbo了解多少?
(第一个技术问题就是Dubbo,说明他们关注分布式的内容)
齐:使用上肯定是没问题的,Dubbo是一个RMI(远程调用)框架,解决程序的分布式远程调用。Dubbo分为四个模块:Provider、Consumer、Register、Monitor。其中Register一开始我们采用Zookeeper做协调服务,后来改为Redis。
(说真的,听起来没问题,其实Dubbo这个知识是我头一天临时准备的…,我料到他们会问,一切尽在掌握)
周:Zookeeper你了解多少?
齐:只是皮毛了解,了解了下Paxos选举算法,但后来发现这个东西太“重(重量级)”了,后来改用了Redis。
(Zookeeper我也不会,以前只是看过类似的文章,甭管对错随口瞎哔哔的两句,对方多问一点我都露馅,好险)
周:你为什么说Zookeeper太重了?
齐:在技术选型的时候, Zookeeper要求奇数个节点,至少3台,按预期的设计,确实注册中心要做成集群,但在一开始数据量不大的情况下,我们认为Zookeeper有点大材小用,所以将Zookeeper换成了Redis。以后业务量大了以后,有需要注册中心集群,可以很快的进行切换。之后利用Dubbo Monitor进行服务监控。在硬件成本与数据量的综合考虑下,将Redis替代ZK成为注册中心。
(这个全靠临场发挥,敢说才会赢。)
周:Redis与ZK不是一码事,能互相替代?
齐:对于Dubbo来说,Redis与ZK都是起到注册中心的作用,在Dubbo这个领域下是可以互相替代的。
(手机铃声响,好尴尬。记得关手机、记得关手机、记得关手机!!!)
周:Dubbo起到了什么作用?
齐:在设计时,我们就做了前后端分离,前端电商网站,后端CRM,我们将业务部分单独抽离出来构建为Maven模块,前后端都是通过Dubbo调用剥离出来的业务逻辑。我们将业务逻辑抽象出五个模块“商品”、“营销”、“内容”、“统计”、“监控”。
(这里是对项目结构的阐述)
周:项目底层到上层都是你一个人做的,用了多长时间?
齐:代码前后迭代,项目上线是2016年底。
(一般一个中小项目的项目周期在3个月到半年)
周:问你一些底层的东西,堆和栈了解多少?值类型与引用类型的区别?
齐:不好意思,这块真的忘了。
(面试答不上来很正常,要都答不上来回去补课)
周:你说一下最近这个项目,产品都是你部署的?
齐:是的,用的全套阿里云产品。应用服务器是ECS 2台。都是2核4G 内存4M带宽。RDS配置了1主2从,做了读写分离,1台读在“华北2”节点,一台在“上海”节点,RDS配置是1核2G 40GSSD。
(面试官喜欢通过问你拓扑、数据量等问题来验证你是否真的做了)
周:码农笔记的架构采用的什么?
齐:ECS部署了Tomcat,RDS采用Mysql 5.6 ,用户存储的图片、文件保存在OSS中,同时做了CDN(内容分发),视频部分采用的阿里云的VOD点播模块。
(这个项目是我设计的,采用阿里云产品,正好与周的项目匹配,引起了他的注意)
周:码农笔记的团队构成?
齐:不怕您笑话,1个人,老板谈了一个风投,结果后来风投撤资了,抗到12月公司倒闭。
周:对Socket有了解吗?
齐:Socket有过了解,但很少直接基于Socket,一般我们都用封装框架比如HttpClient、OKHttp。如果基于NIO通信,我们通常会选择Netty。
周:Netty有过实际应用吗?什么时候学的?
齐:没有。16年年末学的。
(这种是知识面问题,没有回答上来无大碍)
周:你哥是你亲哥?
齐:是我姐夫。
(周总对我这个哥哥很感兴趣啊,你们也可不妨一试)
周:业务系统做过吗?这两个项目的后端也是由你来开发的?
齐:是的。
周:比方让你做一个权限管理RBAC,你需要多长时间?
齐:给我一天时间,这些都是成熟的代码。
(后来感觉这个牛皮吹得有点大,虽然都是成熟的,1天还是完不成的,大概3天可以全部实现,即将毕业的你们没听过RBAC,回去面壁思过)
周:你用什么框架,怎么设计?
齐:RBAC很成熟了,6张表“功能表”、“资源表”、“用户表”、“权限表”、“角色表”、“授权表”。
框架用Shiro都是现成的,直接整合进来就行,剩下的就是初始化数据了。但在业务系统中RBAC太薄了。
周:为什么这么说?
齐:RBAC对权限是水平切割,在很多大型企业还有“用户组”做垂直切割,当出现交叉的时候权限控制就很麻烦了,此处省略1000字。
(有一些自己的额外见解会给你加分,没有也没关系)
周:Bootstrap比较熟吧?
齐:比较熟,做页面必须用到。
周:家离得近吗?
齐:很近,电动车10分钟。
周:你等下,我叫项目组长下来给你介绍下项目。 三面,项目组长姓郭,整个面试主要围绕技术展开,通过问题发现他对互联网高并发架构与缓存感兴趣。
郭:之前做过运维?
齐:对之前7年在做运维。
郭:电商这个项目用solr做什么?
齐:前端我们要对商品进行检索,对查询结果的标红、分组统计这些东西利用Mysql比较难做,所以采用的Solr。
(全文检索在互联网都会用到)
郭:Redis做了什么?
齐:Redis我们在后端对商品、用户信息这种低频度的数据做了缓存,从而减小数据库方面的IO。
郭:这个框架是你搭的,你怎么想到使用Freemarker这个技术的?
齐:JSP在使用上存在代码和HTML耦合的问题,所以后来从市面上的模板引擎中选择了Freemarker,这个技术比较老了,按我现在的选择我会使用beetl。
郭:你们利用Dubbo怎么分的层?
齐:将“Dubbo起到了什么作用?”这个问题复述了一遍。
郭:你们的并发问题怎么处理的?
齐:都是小项目,天府特卖每天订单量20~30个。UV(独立用户)50~60个,PV(页面浏览量)400~500。
郭:并发问题我们的处理措施?
齐:对Freemarker做个静态化与伪静态化。采用CDN+NGINX对内容进行分发及静态缓存。
优化主要的策略就是“能写内存不走硬盘”、“尽量保证无状态”。
郭:这个项目是几个人开发的?
齐:天府特卖4个,码农笔记1个。
郭:这些阿里云设备花了多少钱?
齐:花了20000多,6台设备。1个负载均衡 + 2个ECS + 数据库1主2从。
郭:我这没什么问的了,如果可以的话你能随时到是吧。
齐:是的。
周:我们和HR这边商量一下,会尽快给你答复的。
(整个3次面试前后持续用了1小时。最后周总给的答复是我和HR商量下,这个潜台词就是“我觉得你不错,薪资方面我们再商量下”。果不其然,一天后,人事给我来电话,8K让我入职,我肯定是不会去的啦,于是以“有更好机会”为由婉言拒绝。)
欢迎加老齐的QQ指导群:722570599 ,你在求职与职业规划中遇到问题可以直接和我交流。郑重承诺,我做的这些完全是公益,不会忽悠你交费,更不会骗你进培训机构。期待看到你的加入~