- 相关推荐
Java面试技巧
Java的主要工作是通过编程语言来制作互联网页面、制作动态效果以及网站等技术。下面是CN人才网小编为大家整理的,希望对大家有所帮助。
1.基本仪容和礼仪
其实不是针对面试,基本仪容和礼仪在日常生活也是非常重要的,是一个人是否有教养,是否有素质的基本要求。
穿着:如无特别需要,不要着正装,休闲装即可。但是不要光脚丫子大拖鞋,背心吊带,男士不要穿露脚趾凉鞋。干净整洁即可,表示对本次面试的重视和对面试官的尊重。
仪容:女士如果想化妆的话,淡妆即可,素颜也可以。男士头发理一下,胡子剃掉。还是那句话,干净整洁,万万不可口腔有异味,或者身上有体味(特别是脚丫子臭味,绝对不行!)
礼仪:多说“请”,“您”,“谢谢”,记得进门后关门,前台给你倒的水走的时候记得拿出去扔掉。坐下来面对面试官要有坐像,不要跟在家里一样太随便,说话口齿清楚,慢一点说,不要跟打机关枪一样。切记,不可做作,细节处把握尺度就行。如果遇到和面试官有分歧的时候,立即闭嘴并闭嘴,不要争论,不要试图说服面试官,更不可耻笑或者蔑视面试官,哪怕你确实不知道比面试官高到哪里去了。记住,这是礼貌,跟你技术有多牛逼无关。
谦虚:任何时候,把自己放在一个相对低的姿态,你是来面试,不是来教育面试官的,抱着一种接受检阅和学习的态度面对面试,千万千万不要觉得自己主角光环加身,天下之大老子第一。相信我,这个世界牛人大把的,别人不说穿是因为给双方留面子,你可别认为是你真牛逼。谦虚,起码不会让你有成为一个跳梁小丑的机会。
2.专业基础知识
什么重要的话说三遍已经烂大街了,我就不说了。对于程序猿来说,专业基础知识绝对是重中之重,是面试成功的最基础要素。我说的专业基础知识,不是说你做了多少个项目,写了多少行代码,而是软件开发的基础知识。
我在面试的时候,有时候会遇到一些候选人,乍一看简历也有好几年工作经验,项目也写的满满的,但是却连“值类型引用类型本质区别”,“构造函数有哪些特点,何时被调用”,“类和接口区别是什么”这样的问题也回答不了,注意,是回答不了,也就是不知道,不是知道意思但是组织不了语言。这类候选人通常在连续回答不上几个问题后,开口为自己辩解:“我动手比较强,写代码都没问题,但是书上的概念我真的不太清楚”。能说出这个话,就说明此人根本就明白作为一个技术工作者最基本的专业素质是什么。(我在这里就不展开谈基础知识在开发中的作用以及对自身成长的作用,以后会专门撰文来讨论)所以千万不要觉得自己工作几年,有些代码经验就已经可以挑战更加高薪的工作。
在面试前,一定要先审视一下自身的基础知识掌握程度,如果有必要,自己买书回来或者网上找一些资料,利用空余时间系统的学习一遍,比如你所使用的语言本身,比如你擅长的框架底层实现,比如编译原理,比如多线程的知识,比如Http相关的知识等等。千万不要没有一点点基础知识储备或者基础知识储备不丰富就跑去面试,失败的几率非常大,如果眼睁睁的看着自己心仪的工作机会擦肩而过,我想是谁都会难过的吧。
3.沟通能力
面试的过程本质上就是一次沟通的过程,候选人在短短的时间内要尽量的向对方展现自己的长处,隐藏自己的短处,尽量让对方问题得到圆满答复并且留下较好印象。有些程序猿性格内向,在陌生人面前比较腼腆,话语不多。当然,这不能说是做错了,只能说是一些性格上的短处而已(如果很严重,那就有自卑的可能,需要重视并且纠正)。在面试时,候选人一定要精神焕发,昂首挺胸,眼神坚定,切记切记眼神不要飘忽不定,切记切记不要瓮声瓮气。有人会问我,“那我回答不上面试官的问题,或者一时没有想起来,心里没底了怎么办?”,怎么办??回答不上也不能被吓尿了啊,是吧,咱们遇到不会的问题,就老老实实的说“这个我不清楚”,或者“这个我不会”,千万千万不要不懂装懂,顾左右而言他,打算糊弄过去,我告诉大家,捣糨糊是过不去的,面试官的问题肯定是他非常清楚答案的,你忽悠面试官就是在忽悠你自己,有意思吗?当然,也不要胡乱回答,否则只会成为面试官和他的同事茶余饭后的笑话。
在面试时,尽量双眼直视面试官(但不要瞪着人家。。。),背挺直,手机开飞行模式,说话口齿清楚,利落干脆,回答得上就尽量说,回答不上直接说不知道,不要罗里吧嗦,特别是谈到薪酬,对方问你期望时,最好在现有基础上增加10%-20%,不要漫天要价,也不要不好意思,放心大胆的说出你的期望,如果对方觉得略高,会再跟你商量。务必一开口就给人真诚,干练,干脆,专业的印象。
4.过往项目经验
很多面试者不大重视自己的过往项目经验,这是我不能理解的地方。我每个做过的项目,虽然我在其中可能只是做一个模块甚至一个功能,但是我都会想办法搞清楚整个项目的业务流程,研发背景,内部模块功能,和外部如何实现集成,底层数据库的设计,整体系统架构设计等等。我在面试候选人的时候,通常都会问最近一个项目相关的东西,有很多候选人都会表示是ta自己一个人设计开发了这个项目,但是连有哪些功能模块,系统结构(注意,不是架构)都回答不出来。有些面试者,在面试一些中高级的程序员时,很喜欢从过往经验入手,你再一遍介绍的时候他可能随时提问。因为这样有2个好处,第一是预防一问一答的形式,候选人事先背了很多问题的答案,第二是从候选人过往项目经验入手,除了可以看出候选人是否虚假构建了项目经验,还可以判断该候选人对开发细节的把握以及对一些技术点的反应能力和掌握情况,毕竟“突然袭击”比“瞄准射击”要更加考验候选人。
所以,在面试前,应该好好把自己以前的项目经验都捋一捋,特别是上一个项目,从业务流程到产品设计到系统开发,特别是项目内一些你做过的细节地方,你准备在面试时拿出来说的,必须以此为点,相关的东西都查查资料看一看。再一个就是项目里面的闪光点,什么叫闪光点,就是高大上的东西,需要自己多了解了解,在面试的时候拿出来说也可以加分。比如我以前做过一个项目,是一个类似网页爬虫的东西,把爬下来的东西根据数据库里面的地址上传到设置的路径,再删除这个文件。当时我还是比较小白的阶段,懵懵懂懂的听人说多线程好像效率比较高,于是就用到了new Thread的多线程方式,确实解决了一些效率上的问题。后来换工作时,我又把这个项目拿出来看了一遍,并且着重看了看多线程相关的东西,知道了还有异步编程(当时好像C#还没有Task),于是就自己学习了一番,然后动手做做实验什么的,把多线程这一块理论联系实际又巩固了一遍。果然,后来面试的时候谈到这个上面的时候,面试官对这一块很有兴趣,越问越深,我也知无不言,为自己增分不少。
5.不要作弊
有些企业在面试程序员的时候,喜欢一开始扔一张试卷让候选人先做,然后再去面试。暂且先不谈做卷子考察方式的好坏,在做试卷的时候,万万不要用移动设备上网查询答案。本身作弊的行为就让人不齿,如果面试官在暗处进行观察,发现你作弊,那就太尴尬了。会就是会,不会就是不会,即便你用手机查答案把试卷写的满满的,在接下来面试的时候,面试官再就试卷上的问题展开一问你,你还是不会。所以不管有没有人监督,在面试的做试卷环节,千万不要作弊。
6.热门技术点的掌握
其实这是个增分项目,如果上面几点都已经通过面试的考核,那么这一点就会成为你绝对的亮点。首先要先自己了解一下当前热门的技术,然后通过分析自己申请的职位,去看看可能涉及到哪些热门的技术,然后再去专门的找资料进行学习和动手实验。比如你是搞互联网的,那么最好学习一下负载均衡相关的技术,学习分布式数据库的技术,学习缓存技术,学习页面静态化的技术;如果你是搞数据分析的,那么最好学习一下Hadoop,学习一下微软的Cube,学习一下惠普的Vertical;如果你是搞iOS的,那么可以看看Swift,可以看看Xamarin,可以看看WebSocket等等,当然,我只是举几个例子,不一定非要这样对应,你如果是搞Java的,也可以去看看Pathon如果你是搞.net的,也可以去看看Ruby on rails等等。所谓技多不压身,就是这个道理。
#拓展知识#
java基础:
1.接口的意义(百度)
规范、扩展、回调
2.抽象类的意义(乐视)
为其子类提供一个公共的类型
封装子类中得重复内容
定义抽象方法,子类虽然有不同的实现但是定义是一致的
3.内部类的作用(百度,乐视)
内部类可以用多个实例,每个实例都有自己的状态信息,并且与其他外围对象的信息相互独立。
在单个外围类中,可以让多个内部类以不同的方式实现同一个接口,或者继承同一个类。
创建内部类对象的时刻并不依赖于外围类对象的创建。
内部类并没有令人迷惑的“is-a”关系,他就是一个独立的实体。
内部类提供了更好的封装,除了该外围类,其他类都不能访问
4.父类的静态方法能否被子类重写,为什么?(猎豹)
不能
子类继承父类后,用相同的静态方法和非静态方法,这时非静态方法覆盖父类中的方法(即方法重写),父类的该静态方法被隐藏(如果对象是父类则调用该隐藏的方法),另外子类可继承父类的静态与非静态方法,至于方法重载我觉得它其中一要素就是在同一类中,不能说父类中的什么方法与子类里的什么方法是方法重载的体现
5.举1-2个排序算法,并使用java代码实现(美团)
6.java虚拟机的特性(百度、乐视)
Java语言的`一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用模式Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。