本帖最后由 武汉-活动 于 2017-3-29 11:42 编辑
羽翼渐满,展翅翱翔 --武汉黑马5期学员毕业经验帖 转眼间毕业一个星期了,从满怀期待的踏入黑马的教室,到依依不舍的离开。半年的黑马生活过去了,当初怀揣着月薪过万的梦想而来,如今带着满腹的软件开发技能离开,继而踏上新的征程,我们离梦想更近一步了。半年的生活过去的很快,每天都在学习一些当下实用的开发技能,从前端到后台,从页面到数据库。老师们陪伴我们度过了一个又一个艰辛而又充实的时光,而我们也日渐茁壮,梦想的羽翼也逐渐丰满。记得临近毕业的时候,同学们的心情是五味陈杂的,有觉得自己学得不好,不敢找工作的;有担心面试被拆穿的;有担心受聘之后不能胜任工作面临被开除的;当然也都有一些不舍的。而我,则是怀揣着激情,展开梦想的羽翼,努力实现当初来黑马的目标--月薪过万。 由于个人的原因,选择了留在薪资水平较低的武汉。虽暂时不能真的达到月薪过万,但也努力达到自己期望的薪资。屁话不多说了,下面给大家分享一下近期十几家面试后总结的一些经验和心得。
一:心态篇。 很多同学会有顾虑,我从一个技术小白到所谓3年开发经验,只用了短短半年时间,我的技术够吗?这个是最普遍的问题。我想说的是完全够了,你缺乏的只是说出你脑袋里面的知识的勇气。大家都清楚,在学校里我们从前端到后台,从框架到插件。现如今流行的一些技术点我们都学过,只是稍微的缺乏一些实战经验而已,所以大家需要给自己足够的信心和勇气,向面试官说出你知道的东西。再者就是部分同学在陌生人面前会稍显胆怯。其实大家只要记住一点,也是最简单粗暴的一点:怕个毛啊,他又不会吃了我,如果面试不行,大不了我换下一家!总结这两个问题,技术和心态,也就是不要担心你的技术不能胜任,公司要用的,你都会,不要胆怯,勇敢的说出你所学的知识,大不了咱换一家,谁怕谁。
二:简历准备篇 对于我们来说,简历的包装最为重要。首先要确定你的硬件(学历+毕业年限)条件和期望薪资。根据学历和毕业年限来酌情写自己的期望薪资,如果你的毕业年限是3年及以下,非211,那么久不要写薪资面议,最好给出一个确定一点的范畴,连区间也不要给。简历中个人信息部分能简洁就简洁,政治面貌,非计算机的专业等等就不要写了。接下来就是掌握的技能点,最好有条理的罗列出来,采用分类的方式,不要杂乱,一会儿前端一会儿后台。还有就是用词,熟悉、掌握、精通等,要斟酌,也可以随时参照你即将投递的公司的任职要求来更改,当然,遇到你不擅长的,你最好提前补习。再者就是工作经验,项目经验。不要写什么电商+物流,写烂了。虽然这两个项目对于我们来说再熟悉不过了,但是别人面试官,HR比我们更熟悉。工作年限为两年及以上的,建议最少写3个项目,可以写一些办公自动化,酒店管理系统之类的,最后可以加上一个购物商城,因为现在是互联网的时代,很多都是B/S结构。自我评价部分简单些一下就行了,乐于钻研,吃苦耐劳之类的。最好不要写能接受加班,特别是工作3年以上的。我当时就是这么写的,觉得这样会增加HR的好感,增加面试机会。后来经过一个"高人"指点:一个正常的开发3年的人是会反感加班的,更不会把这个写在简历里面,正解!于是我果断去掉了这句话。
三:面试准备篇 简历搞定之后就是投递简历了。如果大家确定了工作的地点,可以在此范围旁边进行一波海投。为什么要这样呢?第一,用那些地址是你不想去的地方的公司进行练手,海投能大大的增加面试的机会。当然,投递之前大家都是会进行筛选的,不然某某公司招保洁的电话就打到你这里来了,哈哈。相信大家刚开始收到面试电话的时候都是很兴奋的,接到电话之后,你应该第一时间去看他们家的任职要求,看看哪些部分是你不擅长的,临时抱佛脚,面试的时候不至于一问三不知,这个很重要,对你后续的面试也会有很大的帮助。再者,大家如果有比较想去的公司,切记不要偷懒,直接把之前的简历投出去,你应该进行相应的修改,"投其所好"这个很重要,会增加很多机会。我就是这样做的,海投一波只是为了增加经验,熟悉一下面试,而针对自己想去的公司,则是因地制宜的修改简历。大家不妨尝试一下,不要嫌麻烦,不单只是技能掌握点,也可以是项目经验。这些方面准备好之后,就是整理仪容进行面试了,大家穿着方面要尽量"程序员"一点,不要太过正式或者屌丝,具体怎么样的,大家自行体会,还有就是千万不要迟到,千万不要迟到,千万不要迟到。 四:面试技巧篇 一般进入公司之后,人事MM会让你填表,你安安分分的填完就行了。接下来就是笔试了,有些公司是信息表跟笔试题一起给,也有的公司没有笔试,上来就是干,直接面试。笔试部分大家不用担心,不会的找同学,找度娘,都可以解决,无非就是一些理论知识和数据库相关的。接下来就是最重要的技术面试了,礼仪也很重要。如果你们一起进会议室,那么你一般后进,你要记得轻轻的把门关上,他让你坐你再坐。出去的时候不分先后,你可以选择给他开个门,这不是怂,是礼仪,稍微有点反客为主的味道,能为你的面试加分。自我介绍的时候尽量简洁一点,因为个人简历上面有,不必浪费时间。一般面试官会从你自我介绍项目经验工作经历的过程中进行提问,在时断时续的介绍中千万不要乱,否则会表现得很没有条理,很紧张。也不要扯远了,那样面试官会顺着你的话题问你其他问题,可能是你所不了解的,这样也会给你减分。所以大家面试之前,一定要熟知你的项目(你所负责的模块),如果突然卡壳了,那么可以跟面试官说,这个模块当时是你们共同完成的。大家面试的时候最怕的就是面试官问到你所不了解的知识点,这个时候一定不要慌,不要半天不回答,甚至回答不知道。你可以淡定的告诉面试官,你很熟悉这个,可以通过查阅一些文档,独立完成。顺便可以吹一波你的自学能力,能自己在网上学习一些新潮的技术,这样能达到化险为夷的效果。你的整个面试过程一定不能冷场,也就是面试官问到你某某技术的时候,你语塞了。不懂的不要说不懂,就说你了解过,能查查资料就可以解决。你也可以反问,我试过几次,因为面试官问的问题他可能也不是很清楚,你反问他,会打乱他的思路,在他找回思路的过程中会问一些比较简单的问题。这个时候你也可以整理一下自己的思绪,想好下一步该说什么。还有就是在面试的过程中要保持显得从容,适当的微笑,除开思索的时候。面试结束的时候,记得跟面试官握手再见。 总而言之,面试前一定要准备好,简历的内容因公司而异,提前补习公司的任职要求,面试的时候要从容淡定,这些都会助你一臂之力。 五:个人面试经验摘选 下面简单的介绍一下我近期面试的十几家公司中的3家。
武汉源启科技股份有限公司
地址:武汉市东湖高新技术开发区光谷大道35号光谷总部时代6栋2层 该公司是我作为程序员之后的第一次面试,大家可能猜测我比较紧张,其实恰恰相反。收到这家公司的面试邀请时,心情是非常激动的。平静过后就是准备工作的,看公司的任职要求,查阅一下相关资料。准备就绪之后就在约定的时间之前十几分钟进入公司。细节我就不多啰嗦了,流程就是先填一张“查户口”的表,然后是笔试,题目相对比较简单,运用学的知识,外加百度,轻松搞定。然后就是简单的等待,被人事MM带到了同一栋的8楼,所谓的研发部门。然后就是开始面试了,简单的自己介绍,然后谈到项目经验的时候面试官会从中进行一些提问。整个面试过程持续大概30分钟,期间也问道了技术之外的东西,例如未来的职业规划,离职的原因,还问到了他们公司现在从事的软件开发的方向。这一点我要重点说明,大家去一家公司的时候,一定要提前了解所去公司的业务行业。当面试官问到我知不知道他们公司是做什么的时候,我很快的就回答了是做医疗相关的。然后告诉他在我看来医疗是一个一直很有市场有前景的行业,顺带吹一波这就是我来你们公司的原因。最后,习惯性的与面试官握手。 这就是我的第一次面试,感觉时间过的很快,中间也没有什么尴尬的时候。但是,苦等了两天,却没有收到offer。于是我总结了一下失败的原因,第一:回答的时候过于浅显,没有适当的深入,只是回答了一些理论上知识。第二:思路过于杂乱,没有条理。第三:问道职业规划的时候想太多,没有及时的回答,让面试官觉得我是一个做事没有计划没人人生目标的人。第三:整个过程是提问与被提问的关系,没有互动,我显得太过稚嫩(别人可能会猜出是培训机构出来的)。
地址:湖北省武汉市江汉北路九运大厦B102室 这家公司的流程是通过电话面试审核之后,然后去再去公司面试。当时打电话的可能是个普通的组员,问了我一堆学校学到的基础的知识,所以我都流畅的回答出来了,持续了大概二十多分钟,然后让我等通知。个人对于电话面试是比较轻视的,没想到过了一天就给我发来了复试的邀请。于是我再次看了一下公司的任职要求,发现他们对线程一块比较重视,而我则对线程的了解比较薄弱,于是晚上的时候查阅了很多相关的资料,临时抱一下佛脚。第二天我照样按照约定的时间早到十几分钟,同样是填个人信息表(吐槽一下,都特别详细,所以一些无关的部分我并没有填,后来细想,这样不好,建议大家耐心一点都填一下)。面试我的是他们的项目经理,了解到他们招聘的原因是部分员工离职,而项目还没做完,也就是我入职之后需要接收别人的工作,这个很棘手。大家都知道,有时候自己写的代码过一段时间回头看都可能不知道写的啥,何况是别人的。于是经理首当其冲的就是问我看代码的能力,因为有些人的编程习惯不是很好,没有详细的注释。我当然是满口回答没问题,然后说了一下我平时喜欢逛一些技术贴,里面有很多别人写的代码,小程序,接口什么的。于是面试官就开始让我自我介绍,后面都是同样的套路。期间我并没有让他一直占有主动权,而是偶尔适时的反问一下他,特别是遇到我不是很清楚的问题的时候,这样可以缓解我的尴尬也可以让他不那么觉得我对该技术的不了解。三十多分钟之后,技术面试结束,问了一下我的薪资要求,然后就让我回去等通知。当天下午便给我发来了入职邀请函,我说的薪资是7.5K,而他们给的薪资是6K。虽然结果不是很理想,但是给了我很大的信心,毕竟是第一次拿到offer。 地址:武汉市东湖新技术开发区光谷大道77号金融港B15栋8楼 这家公司是我朋友所在的公司,是做信贷的,有自己的b/s架构的网页,以及一些业务管理系统,得知在找JAVA开发工程师,于是让朋友内推,获得了面试机会。流程跟第一家几乎一样,并没有多大区别。因为公司做的行业方向不一样,所以面试笔试的问题侧重点也不一样,这个大家一定要注意,如果你去的不是外包公司,那么一定要仔细的查看该公司的行业方向,以及任职要求。他们需要你会的,就是以后你上岗之后要用的,所以必问。也不知道是不是内推的原因,面试官并没有问太多问题,反而给我讲解了一些公司的业务以及流程,让我很吃惊,当然,我也顺势装作比较了解信贷的流程,吹了一波以前没毕业的时候做过几个月。这家公司面试完之后让我坐了一会儿,然后HR就进来跟我谈一些薪资,作息相关的东西。我的期望薪资是7.5K,但是HR就是不松口,各种理由各种原因,只能给到6K。于是我便答应了下来,福利待遇还不错,有很多补贴,也有班车。 我是大专文凭,于是我用本科文凭在武汉试了一下水,面试的4家公司中有一家拿到了offer。
最后,奉上一些面试中遇到的一些笔试以及面试题目(除程序题,变化太多)。
一、Java基础 1. HashMap的实现原理,底层结构。 2. 说说你知道的几个Java集合类 3. 描述一下ArrayList和LinkedList各自实现和区别 4. 反射中,Class.forName和classloader的区别 5. Java数组和链表两种结构的操作效率,在哪些情况下(从开头开始,从结尾开始,从中间开始),哪些操作(插入,查找,删除)的效率高 6. string、stringbuilder、stringbuffer区别 7. hashtable和hashmap的区别 8.异常的结构,运行时异常和非运行时异常,各举个例子 9. String a=“abc” String b = “abc” String c = new String(“abc”) String d = “ab” + “c” .他们之间用 == 比较的结果 15. String 类的常用方法 16. Java 的引用类型有哪几种 17. 抽象类和接口的区别 18. java的基础类型和字节大小。 19.Hashtable,HashMap,ConcurrentHashMap 底层实现原理与线程安全问题 20.hashCode() 与 equals() 生成算法、方法怎么重写
二、Java IO 1. 讲讲IO里面的常见类,字节流、字符流、接口、实现类、方法阻塞。 2. 什么时候使用字节流、什么时候使用字符流? 3. 递归读取文件夹下的文件,代码怎么实现
三、Java Web 1. session和cookie的区别和联系,session的生命周期,多个服务部署时session管理。 2. jdbc连接,forname方式的步骤,怎么声明使用一个事务。 3. 无框架下配置web.xml的主要配置内容 4. jsp和servlet的区别
四、开源框架 1. hibernate和ibatis的区别 2. 讲讲mybatis的连接池。 3. springMVC的原理 4. springMVC注解的意思 5. spring中beanFactory和ApplicationContext的联系和区别 6. spring如何实现事物管理的 7 spring AOP的原理 8. hibernate中的1级和2级缓存的使用方式以及区别原理
五、多线程 1. Java创建线程之后,直接调用start()方法和run()的区别 2. 常用的线程池模式以及不同线程池的使用场景 3. 多线程之间通信的同步问题,synchronized锁的是对象,衍伸出和synchronized相关很多的具体问题,例如同一个类不同方法都有synchronized锁,一个对象是否可以同时访问。或者一个类的static构造方法加上synchronized之后的锁的影响。 4. 了解可重入锁的含义,以及ReentrantLock和synchronized的区别 5. 线程间通信,wait和notify 6. 场景:在一个主线程中,要求有大量(很多很多)子线程执行完之后,主线程才执行完成。多种方式,考虑效率。 7. 进程和线程的区别 8. 什么叫线程安全?举例说明 9. 线程的几种状态 10.HashMap 是否线程安全,为何不安全。 ConcurrentHashMap,线程安全,为何安全。 11. 简单介绍下多线程的情况,从建立一个线程开始。然后怎么控制同步过程,多线程常用的方法和结构 12. 实现多线程有几种方式,多线程同步怎么做,说说几个线程里常用的方法
六、网络通信 1. http是无状态通信,http的请求方式有哪些,可以自己定义新的请求方式么。 2. socket通信,以及长连接,分包,连接异常断开的处理。 3. socket通信模型的使用,AIO和NIO。 4. socket框架netty的使用,以及NIO的实现原理,为什么是异步非阻塞。 5. 同步和异步,阻塞和非阻塞。 6. OSI七层模型,包括TCP,IP的一些基本知识 7. http中,get post的区别 8. 说说http,tcp,udp之间关系和区别。
七、数据库MySql 1. 单个索引、联合索引、主键索引 2. Mysql怎么分表,以及分表后如果想按条件分页查询怎么办(如果不是按分表字段来查询的话,几乎效率低下,无解) 3. 分表之后想让一个id多个表是自增的,效率实现 4. MySql的主从实时备份同步的配置,以及原理(从库读主库的binlog),读写分离 5. 事务的四个特性,以及各自的特点(原子、隔离)等等,项目怎么解决这些问题 6. 数据库的锁:行锁,表锁;乐观锁,悲观锁 7. 数据库事务的几种粒度; 8. 关系型和非关系型数据库区别
八、设计模式 1. 单例模式:饱汉、饿汉。以及饿汉中的延迟加载,双重检查 2. 工厂模式、装饰者模式、观察者模式。 3. 工厂方法模式的优点
九、性能调优 1. 高并发情况下,我们系统是如何支撑大量的请求的 2. 集群如何同步会话状态 3. 负载均衡的原理 4 .如果有一个特别大的访问量,到数据库上,怎么做优化(DB设计,DBIO,SQL优化,Java优化) 5. 如果出现大面积并发,在不增加服务器的基础上,如何解决服务器响应不及时问题“。 6. 假如你的项目出现性能瓶颈了,你觉得可能会是哪些方面,怎么解决问题。 7. 你的项目中使用过缓存机制吗?有没用用户非本地缓存
十、其他 1.常用的linux下的命令
最后,祝大家都能实现当初来传智播客&黑马程序员的梦想——月薪过万!
|