精华内容
下载资源
问答
  • 如何在面试中介绍自己项目经验

    万次阅读 2021-06-17 00:53:28
    大家好,我是漫步。前两天分享了关于简历制作建议和模板整理,今天来说说面试中最重要的一个环节:介绍自己项目经验。以下文章转自一个多年经验的面试官总结,希望对你有所帮助。作者:hsm_com...

    大家好,我是漫步。

    前两天分享了关于简历制作建议和模板整理,今天来说说面试中最重要的一个环节:介绍自己的项目经验。以下文章转自一个多年经验的面试官总结,希望对你有所帮助。

    作者:hsm_computer

    https://www.cnblogs.com/JavaArchitect/p/7586949.html

    ……

    在面试时,经过寒暄后,一般面试官会让介绍项目经验 。

    常见的问法是,说下你最近的(或最拿得出手的)一个项目。

    根据我们的面试经验,发现有不少候选人对此没准备,说起来磕磕巴巴,甚至有人说出项目经验从时间段或技术等方面和简历上的不匹配,这样就会造成如下的后果。

    1 第一印象就不好了,至少会感觉该候选人表述能力不强。

    2 一般来说,面试官会根据候选人介绍的项目背景来提问题,假设面试时会问10个问题,那么至少有5个问题会根据候选人所介绍的项目背景来问,候选人如果没说好,那么就没法很好地引导后继问题了,就相当于把提问权完全交给面试官了。

    面试时7份靠能力,3份靠技能,而刚开始时的介绍项目又是技能中的重中之重,所以本文将从“介绍”和“引导”两大层面告诉大家如何准备面试时的项目介绍。

    好了,如下是正文内容。

    1、在面试前准备项目描述,别害怕,因为面试官什么都不知道

    面试官是人,不是神,拿到你的简历的时候,是没法核实你的项目细节的(一般公司会到录用后,用背景调查的方式来核实)。

    更何况,你做的项目是以月为单位算的,而面试官最多用30分钟来从你的简历上了解你的项目经验,所以你对项目的熟悉程度要远远超过面试官,所以你一点也不用紧张。

    如果你的工作经验比面试官还丰富的话,甚至还可以控制整个面试流程(笔者在面试方面成精后也经常干这种事情,大家一定也能行)。


    面试官

    对你以前的项目和技能

    很了解

    只能听你说,只能根据你说的内容做出判断

    在面试过程中的职责

    在很短的时间内防守成功即可

    如果找不出漏洞,就只能算你以前做过

    准备时间

    面试前你有充足的时间准备

    一般在面试前用30分钟阅读你的简历

    沟通过程

    你可以出错,但别出关键性的错误

    不会太为难你,除非你太差

    技巧

    你有足够的技巧,也可以从网上找到足够多的面试题

    其实就问些通用的有规律的问题

    既然面试官无法了解你的底细,那么他们怎么来验证你的项目经验和技术?下面总结了一些常用的提问方式。

    提问方式

    目的

    让你描述工作经验和项目(极有可能是最近的),看看你说的是否和简历上一致

    看你是否真的做过这些项目

    看你简历上项目里用到的技术,比如框架、数据库,然后针对这些技术提些基本问题

    还是验证你是否做过项目,同时看你是否了解这些技术,为进一步提问做准备

    针对某个项目,不断深入地问一些技术上的问题,或者从不同侧面问一些技术实现,看你前后回答里面是否有矛盾

    深入核实你的项目细节

    针对某技术,问些项目里一定会遇到的问题,比如候选人说做过数据库,那么就会问索引方面的问题

    通过这类问题,核实候选人是否真的有过项目经验(或者还仅仅是学习经验)

             

    2、准备项目的各种细节,一旦被问倒了,就说明你没做过

     一般来说,在面试前,大家应当准备项目描述的说辞,自信些,因为这部分你说了算,流利些,因为你经过充分准备后,可以知道你要说些什么。而且这些是你实际的项目经验(不是学习经验,也不是培训经验),那么一旦让面试官感觉你都说不上来,那么可信度就很低了。

     不少人是拘泥于“项目里做了什么业务,以及代码实现的细节”,这就相当于把后继提问权直接交给面试官。下表列出了一些不好的回答方式。

    回答方式

    后果

    我在XX软件公司做了XX门户网站项目,这个项目做到了XX功能,具体是XX和XX模块,各模块做了XX功能,客户是XX,最后这个项目挣了XX钱

    直接打断,因为业务需求我不需要了解,我会直接问他项目里的技术

    (需要招聘一个Java后端开发,会Spring MVC)

    最近一个项目我是用C#(或其他非Java技术)实现的,实现了……或者我最近做的不是开发,而是测试……或者我最近的项目没有用到Spring MVC

    提问,你最近用到SSH技术的项目是什么时候,然后在评语上写:最近XX时间没接触过SSH

    在毕业设计的时候(或者在读书的时候,在学习的时候,在XX培训学校,在XX实训课程中),……

    直接打断,提问你这个是否是商业项目,如果不是,你有没有其他的商业经验。如果没商业项目经验,除非是校招,否则就直接结束面试

    描述项目时,一些关键要素(比如公司、时间、所用技术等)和简历上的不匹配

    我们会深究这个不一致的情况,如果是简历造假,那么可能直接中断面试,如果真的是笔误,那么就需要提供合理的解释

    在避免上述不好的回答的同时,大家可以按下表所给出的要素准备项目介绍。如果可以,也请大家准备一下用英语描述。其实刚毕业的学生,或者工作经验较少的人,英语能力都差不多,但你说了,这就是质的进步。

          

    要素

    样式

    控制在1分钟里面,讲出项目基本情况,比如项目名称,背景,给哪个客户做,完成了基本的事情,做了多久,项目规模多大,用到哪些技术,数据库用什么,然后酌情简单说一下模块。重点突出背景,技术,数据库和其他和技术有关的信息。

    我在XX公司做了XX外汇保证金交易平台,客户是XX银行,主要完成了挂盘,实盘成交,保证金杠杆成交等功能,数据库是Oracle,前台用到JS等技术,后台用到Java的SSH,几个人做了X个月。不需要详细描述各功能模块,不需要说太多和业务有关但和技术无关的。如果面试官感兴趣,等他问。

    要主动说出你做了哪些事情,这部分的描述一定需要和你的技术背景一致。

    我做了外汇实盘交易系统,挂单成交系统,XXX模块,做了X个月

    描述你在项目里的角色

    我主要是做了开发,但在开发前,我在项目经理的带领下参与了业务调研,数据库设计等工作,后期我参与了测试和部署工作。

    可以描述用到的技术细节,特别是你用到的技术细节,这部分尤其要注意,你说出口的,一定要知道,因为面试官后面就根据这个问的。

    你如果做了5个模块,宁可只说你能熟练说上口的2个。

    用到了Java里面的集合,JDBC,…等技术,用到了Spring MVC等框架,用技术连接数据库。

     

    这部分你风险自己承担,如果可以,不露声色说出一些热门的要素,比如Linux,大数据,大访问压力等。但一旦你说了,面试官就会直接问细节。

    这个系统里,部署在Linux上,每天要处理的数据量是XX,要求是在4小时,1G内存是的情况下处理完5千万条数据。平均访客是每分钟XXX。

    面试前,你一定要准备,一定要有自信,但也要避免如下的一些情况。   

     

    要避免的情况

    正确的做法

    原因

    回答很简单。问什么答什么,往往就用一句话回答

    把你知道的都说出来,重点突出你知道的思想,框架

    问:你SSH用过吗?

    答:用过。

    问:在什么项目里用到?

    答:一个保险项目

    问:你做了哪方面的事情?

    答:开发

    我直接不问了

    说得太流利

    适当停顿,边思考边说

    让面试官感觉你在背准备的东西,这样后面问题就很难

    项目介绍时什么都说,

    就说些刚才让准备的一些,而且要有逻辑地说

    会让面试官感觉你思路太乱

    别太多介绍技术细节,就说你熟悉的技术

    技术面点到为止,等面试官来问

    你说到的所有技术要点,都可能会被深问。面试官一般会有自己的面试节奏,如果你在介绍时就太多说技术细节,很有可能被打断,从而没法说出你准备好的亮点。

    3、不露痕迹地说出面试官爱听的话

    在项目介绍的时候(当然包括后继的面试),面试官其实很想要听一些关键点,只要你说出来,而且回答相关问题比较好,这绝对是加分项。我在面试别人的时候,一旦这些关键点得到确认,我是绝对会在评语上加上一笔的。

    下面列些面试官爱听的关键点和对应的说辞。

    关键点

    说辞

    能考虑到代码的扩展性,有参与框架设计的意识

    我的项目XX保险项目,用到SSH技术,数据库是Oracle,(这个是铺垫),开发的时候,我会先和项目经理一起设计框架,并参与了框架的构建,连接数据库的时候,我们用到了DAO,这样做的理由是,把SQL语句封装到DAO层,一旦要扩展功能模块,就可以不用做太多的改动。

    有调优意识,能通过监控发现问题点,然后解决

     

    在开发阶段,我就注意到内存的性能问题和SQL运行的时间问题,在压力测试阶段,我会通过xx工具来监控内存和数据库,发现待提升的代码点,然后通过查资料来优化。最后等项目上线后,我们会部署监控系统,一旦发现内存和数据库问题,我们会第一时间解决。

    动手能力很强,肯干活,会的东西比较多,团队合作精神比较好

    在项目里,我不仅要做开发的工作,而且需要自己测试,需要自己根据一些日志的输出到数据库或Java端去debug,当我开好一个模块时,需要自己部署到Linux上测试。

    或者,一旦遇到问题,如果是业务方面的,我会及时和项目经理沟通,如果是技术方面的,我会自己查资料,如果是测试方面的,我会及时和测试的人沟通。

    责任心比较强,能适应大压力的环境

    被问“你如果在项目里遇到问题怎么办?”

    回答:遇到问题我先查资料,如果实在没法解决,不会拖,会及时问相关的人,即使加班,也会在规定的时间内解决。

    有主见,能不断探索新的知识

    在项目里,我会在保证进度的前提下和项目经理说我的想法,提出我的解决方案。在开发过程中,我会先思考一下,用一种比较好的方式,比如效率最高的方法实现。

    另外你要找机会说出:平时我会不断看一些新技术(比如大数据Hadoop),会不断深入了解一些框架和技术的实现底层。

       

    4 、一定要主动,面试官没有义务挖掘你的亮点

     我去面试人家的时候,往往会特别提问:你项目里有什么亮点?或者你作为应聘者,有什么其他加分项能帮你成功应聘到这个岗位。即使这样问,还有些人直接说没有。

    我这样问已经是处于角色错位了,作为面试者,应当主动说出,而不是等着问,但请注意,说的时候要有技巧,找机会说,通常是找一些开放性的问题说。

    比如:在这个项目里用到了什么技术?你除了说一些基本的技术,比如Spring MVC,Hibernate,还有数据库方面的常规技术时,还得说,用到了Java内存管理,这样能减少对虚拟机内存的压力,或者说用到了大数据处理技术等。也就是说,得找一切机会说出你拿得出手的而且当前也非常热门的技术。

    或者找个相关的问题做扩展性说明,比如被问到:你有没有用到过一对多和多对多?你除了说基本知识点以外,还可以说,一般我还会根据需求适当地设置cascade和inverse关键字,随后通过一个实际的案例来说明合理设计对你项目的帮助,这样就能延伸性地说明你的技能了。相反如果你不说,面试话一定会认为你只会简单的一对一和一对多操作。

    面试的时候,如果候选人回答问题很简单,有一说一,不会扩展,或者用非常吝啬的语句来回答我的问题,那么我一般会给机会让他们深入讲述(但我不敢保证不是每个面试官都会深入提问),如果回答再简洁,那么也会很吝啬地给出好的评语。

    记住:面试官不是你的亲戚,面试官很忙,能挖掘出你的亮点的面试官很少,而说出你的亮点是你的义务。

    我在面试别人过程中,根据不同的情况一般会给出如下的评语。

    1、回答很简答,但回答里能证明出他对框架等技术确实是做过,我会在评语里些“对框架了解一般,不知道一些深层次的知识(我都问了多次了你都回答很简答,那么对不起了,我只能这么写,或许你确实技术很强,那也没办法,谁让你不肯说呢?)”,同时会加一句“表达能力很一般,沟通能力不强”,这样即使他通过技术面试,后面的面试他也会很吃力。

    2、回答很简单,通过回答我没法验证他是在项目里做过这个技术,还是仅仅在平时学习中学过这个技术。我就会写“在简历中说用过XX技术,但对某些细节说不上来,没法看出在项目里用到这个技术”,如果这个技术是职务必需点,那么他通过面试的可能性就非常小。

    3、回答很简单,而且只通过嗯啊之类的虚词回答,经过提醒还这样,我会敷衍几句结束面试,直接写“技术很薄弱,没法通过面试”。

    4、虽然通过回答能很好地展示自己的技能,但逻辑调理不清晰,那么我会让他通过技术面试,但会写上“技能很好,但表达能力一般(或有待提高),请后继面试经理斟酌”。这样通过后继综合面试的机会就一般了,毕竟综合面试会着重考察表达能力交往能力等非技术因素。

    不管怎样,一旦回答简单,不主动说出你的擅长点,或没有条理很清楚地说出你的亮点,就算我让你通过面试,也不会写上“框架细节了解比较深,数据库应用比较熟练”等之类的好评语,你即使通过技术和后面的综合面试,工资也是比较低的。

    5 、一旦有低级错误,可能会直接出局

    面试过程中有些方面你是绝对不能出错,所以你在准备过程中需要尤其注意如下的因素。下面列了些会导致你直接出局的错误回答。

    错误类型

    导致的后果

    前后矛盾,后面的回答无法证明你的项目描述,比如一开始说用到了Spring MVC,后面没法说出最基本的实现,比如不知道Spring有哪些类,或者没法说出项目的细节。

    我会怀疑这个项目的真实性,我就会进一步问:数据库用什么,数据量多少?多少人做了多少时间,一旦再出现明显漏洞,比如一个小项目用到非常多的时间,那么就不仅仅是技术问题,而是在面试过程中企图“蒙混过关”的性质了。

    项目里一定会用到的基本概念性问题都回答不上,Spring的依赖注入概念是什么,怎么用的,或者Hibernate的一对多怎么实现

    一旦被我发现概念不知道,我就会通过更多问题确认,如果被我确认很弱,这就相当严重,因为技术能力差和技术没用过是两个截然不同的状况,技术没用过会导致直接出局。

    面试时说出的工作经验和简历上的不一致

    我会直接怀疑简历是编的,我会让候选人解释,即使是说简历写错了,我也会问比较深入的问题来核实他的技能和能力。

    简历上的技能描述和回答出来的明显不一致,比如明明是只会简单的Linux,但吹得天花乱坠

    我会通过一些比较深的问题核实其他技能,找出其他方面吹嘘的水分。

    所以建议,你可以适当夸张,但别过分,比如你在项目里没搭建框架但平时学习时搭建过,你可以写“XX项目的框架是你搭建的”,但你不能说你是一个架构师,非常了解项目的底层。

    让面试官感觉你不稳定,很浮躁,比如说话不庄重,或者面试时打扮非常不正规,就穿背心来。

    即使你技术再好,这个会可能导致你直接出局。

    我对油嘴滑舌的候选人一般会直接写上不好的评语,这样很难过后面项目经理的面试。

    我还遇到一个人,简历上工作是半年一换,我问他为什么经常换,他直接说是待遇问题,这个人我是直接Fail掉。

    明说不能加班,不能出差

    其实虽然有这一问,但公司里未必真的会加班会出差。但

    听到这类回答,说明这个人不能承受大压力的工作,或者责任心不强,大多数公司是不会要这种人的。

    6 、引导篇:准备些加分点,在介绍时有意提到,但别说全

    在做项目介绍的时候,你可以穿插说出一些你的亮点,但请记得,不论在介绍项目还是在回答问题,你当前的职责不是说明亮点而是介绍项目,一旦你详细说,可能会让面试官感觉你跑题了。

    所以这时你可以一笔带过,比如你可以说,“我们的项目对数据要求比较大,忙的时候平均每小时要处理几十万条数据”,这样就可以把面试官引入“大数据”的方向。

    你在面试前可以根据职位的需求,准备好这种“一笔带过”的话。比如这个职位的需求点是Spring MVC框架,大数据高并发,要有数据库调优经验,那么介绍以往项目时,你就最好突出这些方面你的实际技能。

    再给大家举个例子,比如Java虚拟机内存管理和数据库优化是绝大多数项目都要遇到的两大问题,大家都可以在叙述项目经验时说,在这个项目里,我们需要考虑内存因素,因为我们的代码只允许在2G内存环境中运行,而且对数据库性能要求比较高,所以我们经常要监控优化内存和数据库里的SQL语句。这样当面试官深入提问时,就能抛出自己准备好的虚拟机内存优化和数据库优化方面的说辞。

    实在不行,你也可以说“我除了做开发,也做了了解需求,测试和部署的工作,因为这个项目人手比较少,压力比较大”,这样你也能展示你有过独挡一面的经历。

    我在面试过程中,一旦听到有亮点,就会等到他说好当前问题后,顺口去问,一般技术面试最多办半小时,你把时间用在回答准备好的问题点上的时候,被问其他问题的时间就会少了。

    7、你可以引导,但不能自说自话

    我面试的时候,也会遇到些有准备的人,其实如果你真的想应聘的话,一定要事先准备,这点我能理解,甚至赞同,你只要别露出太明显的痕迹,我不会写上“似乎有准备,没法考察真实技能”这种话,更何况未必每个面试官都能感觉出你准备过。  但你不能凭着有准备而太强势,毕竟面试是面试官主导的。

    我遇到个别面试的人,他们说话太多,一般会主动扩展,比如我问他数据库用什么,他不仅回答数据库是什么,自己做了什么,甚至顺便会把大数据处理技术都说出来。

    其实过犹不及,我就会重点考察你说的每个细节,因为我怀疑你说的都是你从网上看的,而不是你项目中用到的,我甚至会直接威胁:“你先和我说实话这个技术你真在项目里用到,我后面会重点考察,一旦被认为你项目里没做,这个性质就是蒙混过关了”,往往这些人会主动坦白。

    不过话说回来,他如果仅仅说,数据量比较大,但点到为止,不继续说后面的话,我就会深入去问,他自然有机会表达。同时请注意,一般在面试过程中,一旦你亮出加分点,但面试官没接嘴,这个加分点可能就不是项目必备的,也不是他所关注的,当前你就可以别再说了,或者等到你提问题的时候再说。   

    8、不是结尾的总结

    到这里,我们已经给出了介绍项目的一些技巧。

    这些技巧都是从 Java Web轻量级开发面试教程和Java核心技术及面试指南里摘录的。

    两句话,第一,面试前一定要准备,第二,本文给出是的方法,不是教条,大家可以按本文给出的方向结合自己的项目背景做准备,而不是死记硬背本文给出的一些说辞。

    当大家介绍好项目背景后,面试才刚刚开始,哪怕你说得再好,哪怕你把问题引导到你准备的范围里,这也得应付Java Web(比如Spring MVC,ORM等)、Java Core(多线程、集合、JDBC等)和数据库等方面的问题。

    那么本文的价值体现在哪呢?如果引导不好,你根本没机会展示自己的能力。这就是本文给出的方法价值所在。

    说句自夸的话,本文给出的一些方法和说辞不是拍脑袋想出来的,而是从面试上百个候选人的经历中抽取出来的,其中有不少血泪,也有不少人成功的途径,这篇文章多少对大家(尤其是经验不满3年的初级程序员)有帮助,这也是本文申请放入首页的理由。

    这不是结尾,我们还将在合适的时候写一些关于“如何应对常见问题”或“如何快速提升自己能力”等方面的博文。

    ……

    虽然作者最后面的举例是用Java,但我们可以吸收他的思考哈。记得关注我公众号,每日分享精彩文章。

    ❤️ 看完两件事

    如果你觉得这篇内容对你挺有启发,我想邀请你帮我两个小忙:

    1. 点个「在看」,让更多的人也能看到这篇内容(喜欢不点在看,都是耍流氓 -_-)

    2. 关注公众号「前端开发博客」,每周重点攻克一个前端面试重难点,

    3. 公众号后台回复「简历模板」即可免费获取 33个精选 简历模板!

    点个在看支持我吧,转发就更好了

    展开全文
  • 如何在自己项目中引入ElasticSearch搜索引擎?

    千次阅读 多人点赞 2021-05-17 23:35:07
    在前端thymeaf中,我是用了th:utext,这个标签可以将Html解析,最终的高亮显示如下: (六)总结 ES的应用到这里就结束了,ES可以很方便地嵌入到真实的项目中,对于应用来,了解到这一步已经足够,对于想要提高的...

    听说微信搜索《Java鱼仔》会变更强!

    本文收录于JavaStarter ,里面有我完整的Java系列文章,学习或面试都可以看看

    (一)介绍

    在大多数系统中,都需要支持搜索的功能,以简单博客系统为例,虽然说Mysql也可以通过模糊查询匹配到对应的数据,但是效率实在太低。这个时候就需要拿出分布式搜索引擎ElasticSearch了。本博客重点在于ES的集成使用,因此前端采用最简单的方式呈现,大家只需要关注后端逻辑即可。(本博客基于ES7.6.1,和ES6.X版本有较大差异)

    (二)项目搭建

    2.1 依赖引入

    依赖主要就是web、es以及thymleaf相关:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>1.2.76</version>
    </dependency>
    <!--thymleaf相关-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
    <dependency>
        <groupId>org.thymeleaf</groupId>
        <artifactId>thymeleaf-spring5</artifactId>
    </dependency>
    <dependency>
        <groupId>org.thymeleaf.extras</groupId>
        <artifactId>thymeleaf-extras-java8time</artifactId>
    </dependency>
    

    2.2 编写ES的配置类

    编写ES的配置类,编写连接信息,之后直接通过Autowired连接即可:

    @Configuration
    public class ElasticSearchConfig {
        @Bean
        public RestHighLevelClient restHighLevelClient(){
            RestHighLevelClient client=new RestHighLevelClient(
                    RestClient.builder(
                            new HttpHost("192.168.78.128",9200,"http")
                    )
            );
            return client;
        }
    }
    

    2.3 编写Blog实体类

    编写一个类用来存储要存储的数据,我这里为了演示只在es中插入标题和作者的信息

    @Data
    @AllArgsConstructor
    public class BlogDO {
        private String title;
        private String author;
    }
    

    2.4 准备controller和service

    最后新建一个IndexController和IndexService以及IndexServiceImpl,接下来会使用。最终的目录结构如下:

    (三)数据准备

    要做数据的搜索,首先第一步就是数据的导入。在真实的业务场景中,数据的导入有很多方式。一种是当新增数据时在代码逻辑中做增量的导入操作,或者是由数仓团队负责数据的增量导入。我接触到的业务中,后端程序员不需要去关注导入的操作,这个步骤是数仓团队做的。

    在我们个人的博客系统中,可以在新增博客后立刻同步数据到ES,也可以先通过消息中间件发送一条消息,消费者定期去读取消息新增数据。

    这里演示就直接导入了:

    @Controller
    public class IndexController {
        @Autowired
        private IndexService indexService;
        @ResponseBody
        @GetMapping("/prepareData")
        public String prepareData(){
            String result=indexService.prepareData();
            return result;
        }
    }
    

    具体的service实现如下:

    @Service
    public class IndexServiceImpl implements IndexService {
    
        @Autowired
        private RestHighLevelClient restHighLevelClient;
        @Override
        public String prepareData() {
            List<BlogDO> blogDOS = new ArrayList<>();
            blogDOS.add(new BlogDO("ElasticSearch究竟是个什么东西", "Java鱼仔"));
            blogDOS.add(new BlogDO("SpringBoot+SpringSecurity实现基于真实数据的授权认证", "Java鱼仔"));
            blogDOS.add(new BlogDO("Dubbo两小时快速上手教程(直接代码、Spring、SpringBoot)", "Java鱼仔"));
            blogDOS.add(new BlogDO("浅析五种最常用的Java加密算法", "Java鱼仔"));
            blogDOS.add(new BlogDO("Java程序员需要知道的操作系统知识汇总", "Java鱼仔"));
            blogDOS.add(new BlogDO("一步步教你如何在SpringBoot项目中引入支付功能", "Java鱼仔"));
            blogDOS.add(new BlogDO("Zookeeper实现分布式锁的原理是什么?", "Java鱼仔"));
            blogDOS.add(new BlogDO("一个成熟的Java项目如何优雅地处理异常", "Java鱼仔"));
            blogDOS.add(new BlogDO("基于SpringBoot实现文件的上传下载", "Java鱼仔"));
            blogDOS.add(new BlogDO("如何用Java写一个规范的http接口?", "Java鱼仔"));
            BulkRequest bulkRequest = new BulkRequest();
            bulkRequest.timeout("10s");
            blogDOS.stream().forEach(x -> {
                bulkRequest.add(new IndexRequest("blog_index").source(JSON.toJSONString(x), XContentType.JSON));
            });
            BulkResponse responses=null;
            try {
                responses = restHighLevelClient.bulk(bulkRequest, RequestOptions.DEFAULT);
            } catch (IOException e) {
                e.printStackTrace();
            }
            return String.valueOf(responses.status());
        }
    }
    

    我选取了自己的几篇博客文章,多执行几次接口,保证ES中有几十条数据供测试使用即可。

    (四)博客搜索

    接下来就是搜索的过程了,搜索的逻辑其实比较简单,具体的代码就按照上一篇博客中的方式来编写,在真实业务场景中,每个公司可能会有自己的封装搜索方法:

    IndexController中增加一个方法:

    @GetMapping("/search")
    public String search(@RequestParam("keywords")String keywords, @RequestParam("pageNum")String pageNum, @RequestParam("pageSize")String pageSize, Model model){
        List<Map<String,Object>> list=indexService.searchByKeywords(keywords,pageNum,pageSize);
        model.addAttribute("datas",list);
        return "search";
    }
    

    具体实现类中增加方法:

    @Override
    public List<Map<String, Object>> searchByKeywords(String keywords, String pageNum, String pageSize) {
        return this.searchData(keywords,Integer.parseInt(pageNum),Integer.parseInt(pageSize));
    }
    
    public List<Map<String,Object>> searchData(String keywords, int pageNum, int pageSize){
        if (pageNum<1){
            pageNum=1;
        }
        //生成搜索对象
        SearchRequest request = new SearchRequest("blog_index");
        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
        //设置分页参数
        searchSourceBuilder.from(pageNum);
        searchSourceBuilder.size(pageSize);
        //设置搜索的字段
        MatchQueryBuilder matchQueryBuilder = QueryBuilders.matchQuery("title", keywords);
        searchSourceBuilder.query(matchQueryBuilder);
        searchSourceBuilder.timeout(new TimeValue(10, TimeUnit.SECONDS));
        request.source(searchSourceBuilder);
        SearchResponse search=null;
        try {
            search = restHighLevelClient.search(request, RequestOptions.DEFAULT);
        } catch (IOException e) {
            e.printStackTrace();
        }
        //将结果返回
        List<Map<String,Object>> result=new ArrayList();
        SearchHit[] hits = search.getHits().getHits();
        for (SearchHit searchHit:hits){
            result.add(searchHit.getSourceAsMap());
    
        }
        return result;
    }
    

    简单写一个前端页面

    <!DOCTYPE html>
    <html xmlns:th="http://www.thymeleaf.org"><!--引入thymeleaf-->
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <div>
        <div th:each="datas:${datas}">
            <span th:text="${datas.author}"/>
            <span th:utext="${datas.title}"/>
            <hr/>
        </div>
    </div>
    </body>
    </html>
    

    跑起来看一下,访问

    http://localhost:8080/search?keywords=Java&pageNum=1&pageSize=10

    在链接中,我关键词填了Java,pageNum是1,每页展示10行,可以看到和Java相关的数据就被查出来了。

    (五)实现高亮查询

    在百度搜索Java时,可以看到查询出来的Java被高亮显示了,之前在讲ES语法的时候,我们也知道了ES支持高亮查询,下面就通过代码来实现。

    稍微修改一下搜索的代码,增加高亮配置,在返回值中用高亮字符串替换原来的字符串。

    public List<Map<String,Object>> searchHighLightData(String keywords, int pageNum, int pageSize){
        if (pageNum<1){
            pageNum=1;
        }
        SearchRequest request = new SearchRequest("blog_index");
        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
        searchSourceBuilder.from(pageNum);
        searchSourceBuilder.size(pageSize);
        //高亮构造器
        HighlightBuilder highlightBuilder=new HighlightBuilder();
        //高亮查询字段
        highlightBuilder.field("title");
        //是否将所有匹配到的字段高亮显示,false表示只显示一个
        highlightBuilder.requireFieldMatch(false);
        //高亮的标签
        highlightBuilder.preTags("<span style='color:red'>");
        highlightBuilder.postTags("</span>");
        searchSourceBuilder.highlighter(highlightBuilder);
        
        MatchQueryBuilder matchQueryBuilder = QueryBuilders.matchQuery("title", keywords);
        searchSourceBuilder.query(matchQueryBuilder);
        searchSourceBuilder.timeout(new TimeValue(10, TimeUnit.SECONDS));
        request.source(searchSourceBuilder);
        SearchResponse search=null;
        try {
            search = restHighLevelClient.search(request, RequestOptions.DEFAULT);
        } catch (IOException e) {
            e.printStackTrace();
        }
        List<Map<String,Object>> result=new ArrayList();
        SearchHit[] hits = search.getHits().getHits();
        //遍历结果,将高亮返回值title替换到原来的title中
        for (SearchHit searchHit:hits){
            Map<String, Object> sourceAsMap = searchHit.getSourceAsMap();
            Map<String, HighlightField> highlightFields = searchHit.getHighlightFields();
            HighlightField title = highlightFields.get("title");
            if (title!=null){
                StringBuilder highLightTitle=new StringBuilder();
                Text[] texts = title.fragments();
                for(Text text:texts){
                    highLightTitle.append(text);
                }
                sourceAsMap.put("title",highLightTitle);
            }
            result.add(sourceAsMap);
        }
        return result;
    }
    

    继续访问

    http://localhost:8080/search?keywords=Java&pageNum=1&pageSize=10,

    通过断点可以看到,搜索的关键词已经被我们设置的span标签包住了。

    在前端thymeaf中,我是用了th:utext,这个标签可以将Html解析,最终的高亮显示如下:

    (六)总结

    ES的应用到这里就结束了,ES可以很方便地嵌入到真实的项目中,对于应用来讲,了解到这一步已经足够,对于想要提高的人来说,还远远不够。作为最流行的分布式搜索引擎,ES还有许多值得学的地方,任重而道远。我是鱼仔,我们下期再见!

    展开全文
  • 在面试时,经过寒暄后,一般面试官会让介绍项目经验 。常见的问法是,说下你最近的(或最拿得出手的)一个项目。 根据我们的面试经验,发现有不少候选人对此没准备,说起来磕磕巴巴,甚至有人说出项目经验从时间段...

    在面试时,经过寒暄后,一般面试官会让介绍项目经验 。常见的问法是,说下你最近的(或最拿得出手的)一个项目。

    根据我们的面试经验,发现有不少候选人对此没准备,说起来磕磕巴巴,甚至有人说出项目经验从时间段或技术等方面和简历上的不匹配,这样就会造成如下的后果:

    第一印象就不好了,至少会感觉该候选人表述能力不强。

    一般来说,面试官会根据候选人介绍的项目背景来提问题,假设面试时会问10个问题,那么至少有5个问题会根据候选人所介绍的项目背景来问。

    候选人如果没说好,那么就没法很好地引导后继问题了,就相当于把提问权完全交给面试官了。

    面试时7份靠能力,3份靠技能,而刚开始时的介绍项目又是技能中的重中之重,所以本文将从“介绍”和“引导”两大层面告诉大家如何准备面试时的项目介绍。

    好了,以下是正文内容:

    1、在面试前准备项目描述,别害怕,因为面试官什么都不知道。

    面试官是人,不是神,拿到你的简历的时候,是没法核实你的项目细节的(一般公司会到录用后,用背景调查的方式来核实)。

    更何况,你做的项目是以月为单位算的,而面试官最多用30分钟来从你的简历上了解你的项目经验,所以你对项目的熟悉程度要远远超过面试官,所以你一点也不用紧张。

    如果你的工作经验比面试官还丰富的话,甚至还可以控制整个面试流程(笔者在面试方面成精后也经常干这种事情,大家一定也能行)。

    既然面试官无法了解你的底细,那么他们怎么来验证你的项目经验和技术?下面总结了一些常用的提问方式。

    2、准备项目的各种细节,一旦被问倒了,就说明你没做过:

    一般来说,在面试前,大家应当准备项目描述的说辞,自信些,因为这部分你说了算,流利些,因为你经过充分准备后,可以知道你要说些什么。

    而且这些是你实际的项目经验(不是学习经验,也不是培训经验),那么一旦让面试官感觉你都说不上来,那么可信度就很低了。

    不少人是拘泥于“项目里做了什么业务,以及代码实现的细节”,这就相当于把后继提问权直接交给面试官。下表列出了一些不好的回答方式。

    在避免上述不好的回答的同时,大家可以按下表所给出的要素准备项目介绍。

    如果可以,也请大家准备一下用英语描述。其实刚毕业的学生,或者工作经验较少的人,英语能力都差不多,但你说了,这就是质的进步。

    面试前,你一定要准备,一定要有自信,但也要避免如下的一些情况。

    3 . 不露痕迹地说出面试官爱听的话

    在项目介绍的时候(当然包括后继的面试),面试官其实很想要听一些关键点,只要你说出来,而且回答相关问题比较好,这绝对是加分项。

    我在面试别人的时候,一旦这些关键点得到确认,我是绝对会在评语上加上一笔的。

    下面列些面试官爱听的关键点和对应的说辞:

     

    4. 一定要主动,面试官没有义务挖掘你的亮点:

    我去面试人家的时候,往往会特别提问:你项目里有什么亮点?或者你作为应聘者,有什么其他加分项能帮你成功应聘到这个岗位。即使这样问,还有些人直接说没有。

    我这样问已经是处于角色错位了,作为面试者,应当主动说出,而不是等着问,但请注意,说的时候要有技巧,找机会说,通常是找一些开放性的问题说。

    比如:在这个项目里用到了什么技术?你除了说一些基本的技术,比如Spring MVC,Hibernate,还有数据库方面的常规技术时,还得说,用到了Java内存管理,这样能减少对虚拟机内存的压力,或者说用到了大数据处理技术等。

    也就是说,得找一切机会说出你拿得出手的而且当前也非常热门的技术。

    或者找个相关的问题做扩展性说明,比如被问到:你有没有用到过一对多和多对多?

    你除了说基本知识点以外,还可以说,一般我还会根据需求适当地设置cascade和inverse关键字,随后通过一个实际的案例来说明合理设计对你项目的帮助,这样就能延伸性地说明你的技能了。

    相反如果你不说,面试话一定会认为你只会简单的一对一和一对多操作。

    面试的时候,如果候选人回答问题很简单,有一说一,不会扩展,或者用非常吝啬的语句来回答我的问题,那么我一般会给机会让他们深入讲述(但我不敢保证不是每个面试官都会深入提问),如果回答再简洁,那么也会很吝啬地给出好的评语。

    记住:面试官不是你的亲戚,面试官很忙,能挖掘出你的亮点的面试官很少,而说出你的亮点是你的义务。

    我在面试别人过程中,根据不同的情况一般会给出如下的评语:

    1 回答很简洁,但回答里能证明出他对框架等技术确实是做过,我会在评语里些“对框架了解一般,不知道一些深层次的知识(我都问了多次了你都回答很简答,那么对不起了,我只能这么写,或许你确实技术很强,那也没办法,谁让你不肯说呢?)”。

    同时会加一句“表达能力很一般,沟通能力不强”,这样即使他通过技术面试,后面的面试他也会很吃力。

    2 回答很简单,通过回答我没法验证他是在项目里做过这个技术,还是仅仅在平时学习中学过这个技术。

    我就会写“在简历中说用过XX技术,但对某些细节说不上来,没法看出在项目里用到这个技术”,如果这个技术是职务必需点,那么他通过面试的可能性就非常小。

    3 回答很简单,而且只通过嗯啊之类的虚词回答,经过提醒还这样,我会敷衍几句结束面试,直接写“技术很薄弱,没法通过面试”。

    4 虽然通过回答能很好地展示自己的技能,但逻辑调理不清晰,那么我会让他通过技术面试,但会写上“技能很好,但表达能力一般(或有待提高),请后继面试经理斟酌”。

    这样通过后继综合面试的机会就一般了,毕竟综合面试会着重考察表达能力交往能力等非技术因素。

    不管怎样,一旦回答简单,不主动说出你的擅长点,或没有条理很清楚地说出你的亮点,就算我让你通过面试,也不会写上“框架细节了解比较深,数据库应用比较熟练”等之类的好评语,你即使通过技术和后面的综合面试,工资也是比较低的。

    5 . 一旦有低级错误,可能会直接出局

    面试过程中有些方面你是绝对不能出错,所以你在准备过程中需要尤其注意如下的因素。下面列了些会导致你直接出局的错误回答。

    6. 引导篇:准备些加分点,在介绍时有意提到,但别说全

    在做项目介绍的时候,你可以穿插说出一些你的亮点,但请记得,不论在介绍项目还是在回答问题,你当前的职责不是说明亮点而是介绍项目,一旦你详细说,可能会让面试官感觉你跑题了。

    所以这时你可以一笔带过,比如你可以说,“我们的项目对数据要求比较大,忙的时候平均每小时要处理几十万条数据”,这样就可以把面试官引入“大数据”的方向。

    你在面试前可以根据职位的需求,准备好这种“一笔带过”的话。比如这个职位的需求点是Spring MVC框架,大数据高并发,要有数据库调优经验,那么介绍以往项目时,你就最好突出这些方面你的实际技能。

    再给大家举个例子,比如Java虚拟机内存管理和数据库优化是绝大多数项目都要遇到的两大问题,大家都可以在叙述项目经验时说,在这个项目里,我们需要考虑内存因素,因为我们的代码只允许在2G内存环境中运行,而且对数据库性能要求比较高,所以我们经常要监控优化内存和数据库里的SQL语句。

    这样当面试官深入提问时,就能抛出自己准备好的虚拟机内存优化和数据库优化方面的说辞。

    实在不行,你也可以说“我除了做开发,也做了了解需求,测试和部署的工作,因为这个项目人手比较少,压力比较大”,这样你也能展示你有过独挡一面的经历。

    我在面试过程中,一旦听到有亮点,就会等到他说好当前问题后,顺口去问,一般技术面试最多办半小时,你把时间用在回答准备好的问题点上的时候,被问其他问题的时间就会少了。

    7. 你可以引导,但不能自说自话

    我面试的时候,也会遇到些有准备的人,其实如果你真的想应聘的话,一定要事先准备,这点我能理解,甚至赞同,你只要别露出太明显的痕迹,我不会写上“似乎有准备,没法考察真实技能”这种话,更何况未必每个面试官都能感觉出你准备过。但你不能凭着有准备而太强势,毕竟面试是面试官主导的。

    我遇到个别面试的人,他们说话太多,一般会主动扩展,比如我问他数据库用什么,他不仅回答数据库是什么,自己做了什么,甚至顺便会把大数据处理技术都说出来。

    其实过犹不及,我就会重点考察你说的每个细节,因为我怀疑你说的都是你从网上看的,而不是你项目中用到的,我甚至会直接威胁:“你先和我说实话这个技术你真在项目里用到,我后面会重点考察,一旦被认为你项目里没做,这个性质就是蒙混过关了”,往往这些人会主动坦白。

    不过话说回来,他如果仅仅说,数据量比较大,但点到为止,不继续说后面的话,我就会深入去问,他自然有机会表达。

    同时请注意,一般在面试过程中,一旦你亮出加分点,但面试官没接嘴,这个加分点可能就不是项目必备的,也不是他所关注的,当前你就可以别再说了,或者等到你提问题的时候再说。

    8. 总结

    到这里,我们已经给出了介绍项目的一些技巧。这些技巧都是从 Java Web轻量级开发面试教程和Java核心技术及面试指南里摘录的。

    两句话,第一,面试前一定要准备,第二,本文给出是的方法,不是教条,大家可以按本文给出的方向结合自己的项目背景做准备,而不是死记硬背本文给出的一些说辞。

    当大家介绍好项目背景后,面试才刚刚开始,哪怕你说得再好,哪怕你把问题引导到你准备的范围里,这也得应付Java Web(比如Spring MVC,ORM等)、Java Core(多线程、集合、JDBC等)和数据库等方面的问题。

     

    本文原文地址:https://www.sohu.com/a/311106306_120104204

    展开全文
  • 在面试时,经过寒暄后,一般面试官会让介绍项目经验 。常见的问法是,说下你最近的(或最拿得出手的)一个项目。 根据我们的面试经验,发现有不少候选人对此没准备,说起来磕磕巴巴,甚至有人说出项目经验从时间...

    在面试时,经过寒暄后,一般面试官会让介绍项目经验 。常见的问法是,说下你最近的(或最拿得出手的)一个项目。

     

    根据我们的面试经验,发现有不少候选人对此没准备,说起来磕磕巴巴,甚至有人说出项目经验从时间段或技术等方面和简历上的不匹配,这样就会造成如下的后果。

     

    第一印象就不好了,至少会感觉该候选人表述能力不强。

     

    一般来说,面试官会根据候选人介绍的项目背景来提问题,假设面试时会问10个问题,那么至少有5个问题会根据候选人所介绍的项目背景来问,候选人如果没说好,那么就没法很好地引导后继问题了,就相当于把提问权完全交给面试官了。

     

    面试时7份靠能力,3份靠技能,而刚开始时的介绍项目又是技能中的重中之重,所以本文将从“介绍”和“引导”两大层面告诉大家如何准备面试时的项目介绍。

     

    好了,如下是正文内容。

     

    1、在面试前准备项目描述,别害怕,因为面试官什么都不知道

     

    面试官是人,不是神,拿到你的简历的时候,是没法核实你的项目细节的(一般公司会到录用后,用背景调查的方式来核实)。

     

    更何况,你做的项目是以月为单位算的,而面试官最多用30分钟来从你的简历上了解你的项目经验,所以你对项目的熟悉程度要远远超过面试官,所以你一点也不用紧张。

     

    如果你的工作经验比面试官还丰富的话,甚至还可以控制整个面试流程(笔者在面试方面成精后也经常干这种事情,大家一定也能行)

     

     

    既然面试官无法了解你的底细,那么他们怎么来验证你的项目经验和技术?下面总结了一些常用的提问方式。

     

     

    2、准备项目的各种细节,一旦被问倒了,就说明你没做过

     

    一般来说,在面试前,大家应当准备项目描述的说辞,自信些,因为这部分你说了算,流利些,因为你经过充分准备后,可以知道你要说些什么。而且这些是你实际的项目经验(不是学习经验,也不是培训经验),那么一旦让面试官感觉你都说不上来,那么可信度就很低了。

     

    不少人是拘泥于“项目里做了什么业务,以及代码实现的细节”,这就相当于把后继提问权直接交给面试官。下表列出了一些不好的回答方式。

     

     

    在避免上述不好的回答的同时,大家可以按下表所给出的要素准备项目介绍。如果可以,也请大家准备一下用英语描述。其实刚毕业的学生,或者工作经验较少的人,英语能力都差不多,但你说了,这就是质的进步。

     

     

    面试前,你一定要准备,一定要有自信,但也要避免如下的一些情况。

     

     

    3、不露痕迹地说出面试官爱听的话

     

    在项目介绍的时候(当然包括后继的面试),面试官其实很想要听一些关键点,只要你说出来,而且回答相关问题比较好,这绝对是加分项。我在面试别人的时候,一旦这些关键点得到确认,我是绝对会在评语上加上一笔的。

     

    免费分享JavaJ学习视频学习手册,面试题,开发工具,PDF文档书籍教程,需要的童鞋关注QQ裙:639714511,自行领取~

    点击链接加入群聊

    下面列些面试官爱听的关键点和对应的说辞。

     

     

    4、一定要主动,面试官没有义务挖掘你的亮点

     

    我去面试人家的时候,往往会特别提问:你项目里有什么亮点?或者你作为应聘者,有什么其他加分项能帮你成功应聘到这个岗位。即使这样问,还有些人直接说没有。

     

    我这样问已经是处于角色错位了,作为面试者,应当主动说出,而不是等着问,但请注意,说的时候要有技巧,找机会说,通常是找一些开放性的问题说。

     

    比如:在这个项目里用到了什么技术?你除了说一些基本的技术,比如Spring MVC,Hibernate,还有数据库方面的常规技术时,还得说,用到了Java内存管理,这样能减少对虚拟机内存的压力,或者说用到了大数据处理技术等。也就是说,得找一切机会说出你拿得出手的而且当前也非常热门的技术。

     

    或者找个相关的问题做扩展性说明,比如被问到:你有没有用到过一对多和多对多?你除了说基本知识点以外,还可以说,一般我还会根据需求适当地设置cascade和inverse关键字,随后通过一个实际的案例来说明合理设计对你项目的帮助,这样就能延伸性地说明你的技能了。相反如果你不说,面试话一定会认为你只会简单的一对一和一对多操作。

     

    面试的时候,如果候选人回答问题很简单,有一说一,不会扩展,或者用非常吝啬的语句来回答我的问题,那么我一般会给机会让他们深入讲述(但我不敢保证不是每个面试官都会深入提问),如果回答再简洁,那么也会很吝啬地给出好的评语。

     

    记住:面试官不是你的亲戚,面试官很忙,能挖掘出你的亮点的面试官很少,而说出你的亮点是你的义务。

     

    我在面试别人过程中,根据不同的情况一般会给出如下的评语。

     

    1、回答很简答,但回答里能证明出他对框架等技术确实是做过,我会在评语里些“对框架了解一般,不知道一些深层次的知识(我都问了多次了你都回答很简答,那么对不起了,我只能这么写,或许你确实技术很强,那也没办法,谁让你不肯说呢?)”,同时会加一句“表达能力很一般,沟通能力不强”,这样即使他通过技术面试,后面的面试他也会很吃力。

     

    2、回答很简单,通过回答我没法验证他是在项目里做过这个技术,还是仅仅在平时学习中学过这个技术。我就会写“在简历中说用过XX技术,但对某些细节说不上来,没法看出在项目里用到这个技术”,如果这个技术是职务必需点,那么他通过面试的可能性就非常小。

     

    3、回答很简单,而且只通过嗯啊之类的虚词回答,经过提醒还这样,我会敷衍几句结束面试,直接写“技术很薄弱,没法通过面试”。

     

    4、虽然通过回答能很好地展示自己的技能,但逻辑调理不清晰,那么我会让他通过技术面试,但会写上“技能很好,但表达能力一般(或有待提高),请后继面试经理斟酌”。这样通过后继综合面试的机会就一般了,毕竟综合面试会着重考察表达能力交往能力等非技术因素。

     

    不管怎样,一旦回答简单,不主动说出你的擅长点,或没有条理很清楚地说出你的亮点,就算我让你通过面试,也不会写上“框架细节了解比较深,数据库应用比较熟练”等之类的好评语,你即使通过技术和后面的综合面试,工资也是比较低的。

     

    5、一旦有低级错误,可能会直接出局

     

    面试过程中有些方面你是绝对不能出错,所以你在准备过程中需要尤其注意如下的因素。下面列了些会导致你直接出局的错误回答。

     

     

    6、引导篇:准备些加分点,在介绍时有意提到,但别说全

     

    在做项目介绍的时候,你可以穿插说出一些你的亮点,但请记得,不论在介绍项目还是在回答问题,你当前的职责不是说明亮点而是介绍项目,一旦你详细说,可能会让面试官感觉你跑题了。

     

    所以这时你可以一笔带过,比如你可以说,“我们的项目对数据要求比较大,忙的时候平均每小时要处理几十万条数据”,这样就可以把面试官引入“大数据”的方向。

     

    你在面试前可以根据职位的需求,准备好这种“一笔带过”的话。比如这个职位的需求点是Spring MVC框架,大数据高并发,要有数据库调优经验,那么介绍以往项目时,你就最好突出这些方面你的实际技能。

     

    再给大家举个例子,比如Java虚拟机内存管理和数据库优化是绝大多数项目都要遇到的两大问题,大家都可以在叙述项目经验时说,在这个项目里,我们需要考虑内存因素,因为我们的代码只允许在2G内存环境中运行,而且对数据库性能要求比较高,所以我们经常要监控优化内存和数据库里的SQL语句。这样当面试官深入提问时,就能抛出自己准备好的虚拟机内存优化和数据库优化方面的说辞。

     

    实在不行,你也可以说“我除了做开发,也做了了解需求,测试和部署的工作,因为这个项目人手比较少,压力比较大”,这样你也能展示你有过独挡一面的经历。

     

    我在面试过程中,一旦听到有亮点,就会等到他说好当前问题后,顺口去问,一般技术面试最多办半小时,你把时间用在回答准备好的问题点上的时候,被问其他问题的时间就会少了。

     

    7、你可以引导,但不能自说自话

     

    我面试的时候,也会遇到些有准备的人,其实如果你真的想应聘的话,一定要事先准备,这点我能理解,甚至赞同,你只要别露出太明显的痕迹,我不会写上“似乎有准备,没法考察真实技能”这种话,更何况未必每个面试官都能感觉出你准备过。 但你不能凭着有准备而太强势,毕竟面试是面试官主导的。

     

    我遇到个别面试的人,他们说话太多,一般会主动扩展,比如我问他数据库用什么,他不仅回答数据库是什么,自己做了什么,甚至顺便会把大数据处理技术都说出来。

     

    其实过犹不及,我就会重点考察你说的每个细节,因为我怀疑你说的都是你从网上看的,而不是你项目中用到的,我甚至会直接威胁:“你先和我说实话这个技术你真在项目里用到,我后面会重点考察,一旦被认为你项目里没做,这个性质就是蒙混过关了”,往往这些人会主动坦白。

     

    不过话说回来,他如果仅仅说,数据量比较大,但点到为止,不继续说后面的话,我就会深入去问,他自然有机会表达。同时请注意,一般在面试过程中,一旦你亮出加分点,但面试官没接嘴,这个加分点可能就不是项目必备的,也不是他所关注的,当前你就可以别再说了,或者等到你提问题的时候再说。

     

    8、不是结尾的总结

     

    到这里,我们已经给出了介绍项目的一些技巧。这些技巧都是从 java web轻量级开发面试教程从摘录的。

     

    两句话,第一,面试前一定要准备,第二,本文给出是的方法,不是教条,大家可以按本文给出的方向结合自己的项目背景做准备,而不是死记硬背本文给出的一些说辞。

     

    当大家介绍好项目背景后,面试才刚刚开始,哪怕你说得再好,哪怕你把问题引导到你准备的范围里,这也得应付Java Web(比如Spring MVC,ORM等)、Java Core(多线程、集合、JDBC等)和数据库等方面的问题

    展开全文
  • 如何在面试中介绍自己项目经验(作者原创版)

    千次阅读 多人点赞 2021-02-17 21:46:52
     要素 样式 控制在1分钟里面,项目基本情况,比如项目名称,背景,给哪个客户做,完成了基本的事情,做了多久,项目规模多大,用到哪些技术,数据库用什么,然后酌情简单说一下模块。重点突出背景,技术,...
  • 2 背若干配置参数,比如JPA访问数据库是如何做配置,面试中要以此证明自己做过。 3 了解项目敏捷开发的模式,因为你是要把这个项目介绍成商业项目,而不是学习项目。 4 看如下项目管理方式:用Maven + Git管理...
  • 主要讲述的是:如何把别人的工程加入到自己的idea中进行调试? 第一步:己经有一个项目,比如叫springbootjsp ; 第二步:将此项目复制一份,并改名叫 gzgl (工资管理的意思); 第三步:将此gzgl中的所有文件夹和...
  • 面试大厂,我是这样准备项目

    千次阅读 多人点赞 2021-07-21 09:05:40
    不过上牛客看了最近的面经和自己几轮面试经验,感觉各家对项目的重视还是蛮大的,所以提早吃透自己项目,做好介绍和描述优化,能够在冲刺面试专心备战八股文和面经。 项目重要嘛 项目真的蛮重要的!对于简历模块来...
  • 前提讲解: 两种方式都可以实现: 第一种: 基于opensea直接发布——此种方式代表NFT的生成和管理,均被opensea后台默认的NFT管理合约进行管理,此种方式部署的NFT,不灵活,无法灵活配置自己项目。 第二种: ...
  • 自我介绍和 项目经验介绍, 感觉有真实工作经验,都好说。我说一下, 如何突出自己, 我自己的技巧个人理解 面试有一个关键的指标是 面试时长,有的面试30分钟就结束, 有的面试2小时甚至更久。面试官想挖掘你身上更...
  • 这个问题几乎在每次面试都会被问到,面试官可能会就你简历上所写的项目经历来具体问,或者会更加开放式的,让你自己选择一个项目讲述。 作为面试者来说,简历上有的项目可能是你半年前,一年前的工作,如果你对你...
  • 项目经验和总结

    千次阅读 2020-12-19 12:41:41
    去年,在一个大型项目(1500w)中用到Web Services,现在项目进入了尾声,所以对以前的开发经历做一个总结。我想大家一定会问?为什么你们项目中要用到Web Services,因为客户有如下需求:1、客户要求项目用C/S架构,...
  • 项目组成员们往办公椅上一趟,长出一口气说终于结束了,项目组成员们都琢磨着去哪里吃上一顿大餐犒劳一下自己。但是这样真的已经结束了么?没有,恰恰相反,项目过程中的一个重要环节才刚刚开始,那就是:复盘,或者...
  • 项目是为向客户提供独特的产品或服务而进行的临时性任务,项目有两个重要的特点: 一个是一次性的活动:项目有明确的开始和结束日期; 另一个显著的特点是独特性的活动:交付的结果是独特的,所以其过程中需要创新...
  • 面试指南-----项目自我介绍

    千次阅读 2020-12-18 13:47:48
    面试中自我介绍、项目是我们的重头戏,在面试二面、三面中都起到了至关重要的的作用。有可能因为一个点成功上岸,也有可能因为一句话而失之交臂。那么这一块究竟应该如何展现自我呢,下面由我来结合自己的案例阐述...
  • 使用自己的开源项目,是可以白嫖JetBrains正版全家桶的! 前言 之前在学Go的时候,想着要用什么编辑器,网上的大佬都,想省事直接用Goland,用VsCode配置会存在一些未知的使用体验问题,大佬们的敦敦教诲不能不听...
  • 特别是开发一些VRAR项目的时候,每次都需要导入一些包,对工程做一些配置。那么有没有办法制作一个初始的模板工程,以便我们每次创建工程的时候复用呢? 先说一个最简单的办法:维护一个初始工程,将所需要的初始...
  • 在本文里,不讨论这种门槛是否合理,而会以Java相关经验为例,说说面试官甄别真实商业项目的方式,并以此为基础讲述在简历中描述项目的要点,并进一步给出在面试中介绍项目的相关技巧。1 和学习项目相比,商业项目为...
  • vue项目——Vue Router路由的使用

    千次阅读 2020-12-20 19:06:34
    前言:学习vue也有一段时间了,这里把学习整个vue项目中的一些知识点和问题,整理下方便自己记录,也希望给大家带来方便。我会连续写几篇系统的文章,讲解一个完整的vue项目中用到的各个使用模块。今天先来学习路由...
  • PMP第六章:项目进度管理

    千次阅读 2021-03-09 17:33:08
    一、明确项目管理中的进度管理 项目进度管理是指在项目实施过程中,对各阶段的进展程度和项目最终完成的期限所进行的管理。 一般进度管理一共分三大步: ⑴对进度做出客观直实的判断 其具体方法包括: 横道图...
  • 想要成长为高级开发,掌握更多层面的技术,兼顾深度和广度是毋庸置疑的。你肯定认为,我要认真努力的学习技术,丰富自己的技术栈,然后就可以成为一个优秀的高级开发了。但当你真正去学习之后就会发现...
  • 技术学习是一个总结、纠错、触类旁通的过程,而不是单纯重复练习的过程,如果你问一个做过5年以上Java的老码农,他们很多人都会有很强的“搬砖感”,这种“搬砖感”其实就是对Java项目的触类旁通、看出套路来了,...
  • 接下来简单一下在本地怎么去搭建litemall商城用来学习使用,,当然,具体的部署教程,一般的开源项目上都有写,你如果看别人的文档能够直接看懂当然是最好,看不懂的朋友,可以再试试看这篇文章。 准备工作: 电脑...
  • Java项目报告ppt

    2021-04-18 11:08:23
    《Java项目报告ppt》由会员分享,可在线阅读,更多相关《Java项目报告ppt(20页珍藏版)》请在人人文库网上搜索。1、软件16-2 王森,联系人管理系统(通讯录,1,目 录,2,需求分析,过渡页,3,需求分析,随着每个人的成长,其...
  • Idea如何导入一个SpringBoot项目的方法(图文教程)最近公司要求开发工具要用Idea,作为一个eclipse的老员工,记录一下Idea中遇到的坑刚...(git的相关使用请自行百度,这里只Idea的使用方法)2.将这个文件夹直接拖...
  • 在这期节目里,我们不仅会谈到单项目项目经理,也会提到其他项目管理类的相关职位,包括项目群经理、项目组合经理、以及PMO的一些职位,当然了因为目前项目经理这个职位或者叫角色的从业人数是最多的,所以我们...
  • 什么是项目亮点

    2021-07-13 11:31:08
    1. 比如你对h5 和css动画非常感...2. 在你项目中有问题可以用更好更新的技术解决的,但当时你用了比较保守稳定的方法解决,在面试的时候可以讲自己是用新技术解决的,这就是你的项目亮点,但你一定要会这个新技术,并
  • NO.0前言背景入职阿里从双十一会场前端PM到平台项目等PM大大小小的担任了不少,自认为是老司机,不想还是踩了坑,这段时间好好地回想了下这次项目中的一些问题,根据个人经验整理了这篇文章,...
  • 项目延期了怎么办?

    2021-03-15 21:41:05
    虽然在项目排期的时候,已经给自己预留了一定的时间(至于预留多少时间,公众号:chanpinliu880 里面有说),避免项目紧张,但是还是因为种种原因导致项目延期,项目延期不可怕,可怕的是没有对策,今天我们就讲讲产品...
  • php项目心得以及总结

    2021-03-23 16:58:38
    这次项目主要使用了面向过程的开发方法,在开发过程熟悉掌握php一些常用的函数以及php数组的使用以及文件上传功能等。学东西,永远不要妄想有速成这一说,告诉你了一个方式,但是缺少努力这一环节,那也是白搭。 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 633,504
精华内容 253,401
关键字:

怎么讲自己的项目