本人是一名95后的老奶奶了,是一名彻头彻尾的程序媛,这是本人的第一篇博客,只是随笔,写写自己的心得而已,写的不好勿喷!!!
学习计算机大概已经四年了,在这期间接触过各种计算机语言,也用各种语言做过开发,但是本人还是最喜欢java,为什么喜欢呢,因为他是面向对象的,嘿嘿,你懂得,没有对象,随便new出一个就可以了,不用做单身狗,哈哈开玩笑呢,现在就我面试的经验分享给大家。
首先就我自己感觉程序员这一类的面试和一般其他行业的面试还是有很大的区别:
1.我自己感觉程序员面试没有必要在自己的着装上花费太大的时间,只要穿得干净整洁就可以,给人一种自信阳光的感觉,因为搞技术的程序员没有很多时间用来打扮自己;
2.面试时间的把握,假如说人家说让你上午十点面试,你最好能在九点半或十点之间到,据我观察,因为一般公司的人事比较忙,如果你来的太早或者太迟,都会打乱人事的很多 工作,这样对后面你和人事谈相关的薪资或者福利的时候,人事会比较苛刻
3.面试过程中,在这里分为两类,一类是像百度阿里这种大公司其次就是一些中小或者刚注册的小公司:
首先说说前一种情况,我个人感觉像这种大公司最注重员工的自信心以及反映能力,所以我建议你在面试这些大公司之前,最好可以上网查查这类公司的面试或者笔试题,这对你的面试有很大的帮助,然后就是面试的时候尽量把话题引到自己比较擅长的方向,而且在给面试官讲述某个理论知识的时候,最好以举例子的方式,如果你的例子讲的比较生动,能让面试官听懂的话,我感觉你面试成功的概率会大很多,就比如说人家问你AOP是什么,为什么要用这个技术,他有什么好处,然后你就可以举例子,当时我在百度面试时这样说的,AOP是面向切面编程,基于动态代理原理,可以用在日志事务上等,拿银行转账来说吧,银行转账操作也是一个简单的增删改外加查询,但是在基于增删改的时候需要保持事务的原子性和一致性,假设在进行转账操作的时候如果网络断了或者是停电,这肯定会给银行带来很大的安全问题,所以就需要在进行操作之前必须开启事务,操作结束之后如有异常就回滚,正常执行完操作就提交,这样的操作就会保证银行账户里面的余额安全问题,但是每个方法开始和结束都要加事务语句方法,这样就显得代码重复繁琐,站在代码优化方面这不是一个很好的方法,所以AOP面向切面编程就像在某一个类的某一个方法上抛开一个面,然后再将这些语句植入,这样既避免了代码的繁琐也避免的转账的安全性,无疑这样的回答可以让面试官对你的信任度加大,至少他认为你是真正理解这些知识的,所以面试的时候可以像我这样举相关的例子;像这些大公司在运行的速度上可能要求比较高,他们一般是在linux操作系统下运行相关程序的,所以最好能记住一些常见的linux命令。这样面试成功的概率又上升了,最后就是一些随机反应题,它会现场出一个需求,然后让你给出一个解决方案,一般像这种完全是由自己平常的积累有关,所以我建议你可以上网看看很多的相关博客,微信也可以关注相关的公众号,在这里我推荐两个我认为挺不错的公众号ImportNew和算法爱好者,这两个公众号相对来说比较好;就我百度面试的面试题分享给大家,里面涉及到装饰模式的类别以及实现,线程安全问题,List,Set,Map集合底层的实现以及源码的了解,Object类的源码,Linux的处理一些需求的操作命令,Sping的原理,数据库Sql的优化,事务的隔离级别等还有现在的一些新技术的使用(redis,Dubbo,消息队列等),这里问到的linux的操作命令的问题较多,所以可以多看看linux操作命令,还有就是他们一般会问你再做某个需求的时候,遇到什么问题,然后你是如何解决这个问题的等等;
第二种情况就是一些中小型公司,他们问的比较详细,对你的能力的要求也比较高,比如说你在项目中负责哪个模块,它会问你是怎么实现其中的某个功能的,在这个功能中你主要做了什么操作,然后他们就会相对这个操作给你提一些相关的问题,这个时候就完全需要你对你负责的功能模块的完全了解,所以我建议在写代码的时候先了解需求,然后用伪代码的方式写出思路,最后在用具体的代码实现,这样对业务的理解相对比较深刻,还有这种公司特别注重你的sql的书写水平,以及sql的优化,他们会现场让你写出相关的sql语句,然后相关sql语句给你提一些具体的问题,其次就是平常的一些像什么Sping和structs2的区别,诸如这类的问题,而且这类型公司的面试问的问题都比较多元化和繁杂化,所以还是重在你平时的积累;
4.面试结束之后,在谈薪资和福利的时候,尽量按照自己的回答的好与坏的程度以及平时的能力定薪资,这样成功的几率会稍微大点;
5.最重要的一点就是面试之后总结,无论你面试的好与坏都将本次面试的内容记录下来,然后一个一个想明白了,如果有些问题你不会,你直接可以在现场问那些面试官,这种是相对于面试官比较好说话的。
以上就是我面试的一些经验,希望对你有帮助。