前几天有人私信问我,说项目这块没啥亮眼的地方,感觉面试官没啥可问的,就直接让他写算法了。后来看群里的问题有很多很相似,那么我抽时间和几位大佬聊了下,在他们面试候选人的过程中更看重项目的什么,聊完之后我总结了下,所以才有了这边文章。
群友说:面试官让他介绍最近在做的项目。他的回答是:他们做的这个项目是XXX,主要是面向XXX用户提供的功能,这个项目已经上线一年了,基本没出过什么问题。
然后呢面试官没听出什么亮点,也不知道候选人具体做了什么,就继续追问:你在其中做了什么?用的什么技术栈?最终的结果是怎么样的?有没有碰到什么难题?怎么解决的?
然后候选人就大概介绍了下自己所做的事情以及用到的技术栈,但是因为没有关注最终的结果以及没有碰到什么难题就没在继续说下去。
面试官继续追问:那这个项目对你的价值体现在哪里,对你技术的提升有多大帮助?候选人回答,这个项目主要就是CRUD,没啥技术含量,对我的帮助比较小,这也是我离开的原因。
面试官最后说:由于时间原因,今天面试就先到这里!
在介绍项目的时候重点介绍自己做了什么
用到了那些技术
取得了什么样的成果
你按照这三个步骤来,提前梳理清楚项目,那么在介绍的时候就很自然,也不用紧张,大胆称述出来就行。比如我主导开发了某个中间件,核心是利用某种技术做了某种优化,使其集成到公司网关集群中,带来了怎么样的效率提升等。
此外你可以辅助介绍一些重点突破以及这些的量化指标。
其次就是项目没有亮点,这个很可怕,项目的亮点即使你没有你也得深挖造一个出来,你不能简单的说,没啥挑战和亮点,这给面试官一种错觉:好像你的三年是把第一年重复了几年,没啥实质性进步。所以这个需要提前准备好,具体后面会有案例剖析。
最后就是对自己的提升没总结,你可以回答CRUD,没啥技术提升,感觉未来很渺茫。但是你现在是在应聘,你这么说那个公司敢要你,要你之后人家公司也是CRUD,你要始终记得几乎大部分公司都是面试造火箭,去了之后拧螺丝,也是CRUD的工作,你到时候撂挑子不干又走了怎么办,所以你可以换个说法效果就会不一样,后面有案例,为你详细剖析。
看一份工作5年的高级工程师的项目描述:
由于是英文,我大致用工具翻译如下:
2016-2020 【高级工程师】:
带领9名工程师设计并实施了一个错误分析解决方案,使移动部门的开发生产时间缩短了35%
参与开发了Kowat即时通讯平台,为每天1000万以上的活跃用户进行了全天候优化
设计和开发基于web的门户网站,用于处理客户佣金,在前3个月内达到13%的销售额增长
使用技术:Python、Go、Redis、MySQL、Gin、K8s
点评:看看这个候选人在2016-2020四年的工作经历的描述堪称典范,大家需要模仿它改造自己的简历。这个项目给人一种耳目一新的感jio,他就是按照上面三步骤所写的那样:1. 重点介绍自己做了什么,他说带领9名工程师设计并实施了一个错误分析解决方案;2. 用到那些技术,比如Go+Gin等;3. 取得了什么样的成果,比如使移动部门的开发生产时间缩短了35%。
都按照这个思路来,面试官很容易就能了解到你的价值,那么他就想深入了解下你具体怎么做的,那你就说下技术上怎么做到的,技术上没啥可炫技的就说从业务上解决了哪些问题,但是还是建议从技术的角度去回答,你可以没有高并发经验,但是不能没有架构思维,你可以从高可用,高性能以及可扩展等方面解答,避开高并发没有的经验,所以把你的项目从头到尾捋一遍,以现有部署架构为基础,用更加高可用高性能可扩展的架构思维去抽象,只有这样看似不起眼的项目在你的描述中显得非常高大上,那么接下来你就可以和面试官继续扯八股文那一套:高可用,高性能,可扩展了,引诱到你熟悉的领域内,你看从头到尾你和面试官聊CRUD了吗,并没有啊,这是套路,你得记住!
注意:一定要记得量化自己的产出,如果没办法量化呢?你可以找用你系统的人给你提供数据或者自己通过已有的数据check一下能得到哪些指标,能写的都写上去。
2013-2016 【高级工程师】:
设计开发内部员工培训平台,将新入职工程师的入职时间从2个月缩短至2周
带领6名工程师的团队开发了一种专有的针对客户端的部署系统,用于增强现实领域。
重新设计旧版测试和预生产系统,将所有面向客户端的应用程序的发布生命周期提高20%到40%
点评:这段经历同上,但是没有技术栈,但不影响整体形象
2010-2013 【工程师】:
重新设计了一个内部业务应用程序来处理自定义业务表单,这将业务服务票证的总量减少了40%
升级了原有的QA测试环境,允许公司将单元测试作为一周Scrum sprint的一部分
将销售报告和CRM系统与DataOps解决方案相结合,为25个分支机构的所有C级管理人员提供有关销售KPI的实时仪表板
点评:可以看出,不管是高级工程师还是初级工程师,都是按照既定的步骤来描述项目的,所以不要觉得自己的项目没亮点,你得善于总结和发现。
其实要说的太多了,总结一句话就是:人在江湖走,套路得人心,你不必非常厉害,但是你要让面试官看得起你,你就要用江湖上的一些套路唬住他,让他知道你有两把刷子,而不是一看到面试官问你,你就自信心全无,防线基本崩塌,战况惨烈,要记住面试是双方的博弈,你我都是江湖人,就问谁又怕过谁?
- END -

公粽号:堆栈future
使很多处于迷茫阶段的coder能从这里找到光明,堆栈创世,功在当代,利在千秋

我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div
总的来说,我对ruby还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用
我试图在一个项目中使用rake,如果我把所有东西都放到Rakefile中,它会很大并且很难读取/找到东西,所以我试着将每个命名空间放在lib/rake中它自己的文件中,我添加了这个到我的rake文件的顶部:Dir['#{File.dirname(__FILE__)}/lib/rake/*.rake'].map{|f|requiref}它加载文件没问题,但没有任务。我现在只有一个.rake文件作为测试,名为“servers.rake”,它看起来像这样:namespace:serverdotask:testdoputs"test"endend所以当我运行rakeserver:testid时
作为我的Rails应用程序的一部分,我编写了一个小导入程序,它从我们的LDAP系统中吸取数据并将其塞入一个用户表中。不幸的是,与LDAP相关的代码在遍历我们的32K用户时泄漏了大量内存,我一直无法弄清楚如何解决这个问题。这个问题似乎在某种程度上与LDAP库有关,因为当我删除对LDAP内容的调用时,内存使用情况会很好地稳定下来。此外,不断增加的对象是Net::BER::BerIdentifiedString和Net::BER::BerIdentifiedArray,它们都是LDAP库的一部分。当我运行导入时,内存使用量最终达到超过1GB的峰值。如果问题存在,我需要找到一些方法来更正我的代
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。
Rails2.3可以选择随时使用RouteSet#add_configuration_file添加更多路由。是否可以在Rails3项目中做同样的事情? 最佳答案 在config/application.rb中:config.paths.config.routes在Rails3.2(也可能是Rails3.1)中,使用:config.paths["config/routes"] 关于ruby-on-rails-Rails3中的多个路由文件,我们在StackOverflow上找到一个类似的问题
给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru
我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t
我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚
如何在buildr项目中使用Ruby?我在很多不同的项目中使用过Ruby、JRuby、Java和Clojure。我目前正在使用我的标准Ruby开发一个模拟应用程序,我想尝试使用Clojure后端(我确实喜欢功能代码)以及JRubygui和测试套件。我还可以看到在未来的不同项目中使用Scala作为后端。我想我要为我的项目尝试一下buildr(http://buildr.apache.org/),但我注意到buildr似乎没有设置为在项目中使用JRuby代码本身!这看起来有点傻,因为该工具旨在统一通用的JVM语言并且是在ruby中构建的。除了将输出的jar包含在一个独特的、仅限ruby