给准备从事java开发的毕业季同学的建议

9月 24, 2016 |

欢迎大家反馈呀,觉得有帮助帮忙点个赞,不好请吐槽啦
推荐大家观看:面试加油站

序言:

很多同学的青春都献给了dota或者LOL,这也无可厚非,谁没年轻过呢,可是又是一年毕业季,大家将要企业的挑选和社会的检验。很多同学每次都是志在必得的前去面试,却一次次铩羽而归。渐渐地开始怀疑自己,看到周围的同学都陆续的找到工作,自己不由自主的开始慌张起来了。下面是我总结的一些建议,希望对大家有所帮助。

1、系统复习的重要性

面试即是对我们专业知识的一个考量,也是对我们临场发挥的一个考量,俗话说只有胸有成竹,才能做到信手拈来,系统的复习真的很重要,专业知识的复习不是高中时地史政的复习,只要记住了就好了,这是需要我们理解性记忆的。比如有的面试官会问"问什么我们要重载自定义对象的equals()和hashCode()方法",有的则会问"使用自定义的对象作为Map的key需要注意些什么",实践是检验真理的唯一标准,像这样的问题大家最好是敲敲代码实践验证一下。

2、复习的参考范围:

1)、java基础

比如Object有哪些方法,各个方法的作用。String的操作,StringBuidlder,StringBuffer的区别。hashmap,ConcurrentHashMap的区别。java的值传递。ArrayList,LinkedList的区别。面向对象的概念,继承、多态、封装。接口和抽象类的区别。还有自增操作(i++)。位操作。异常的机制。synchronized关键字的使用,这些大家最好是看看javadoc,然后亲自实践一下,如果你懂一定jvm的基础知识,了解java反射,其实了解点皮毛,比如它的分代回收机制也能让你的简历显得与众不同。

2)、数据库

大家不要以为自己会一个单表的增删改查就足以应付面试,这远远是不够的。比如范式的概念,数据库的隔离级别,乐观锁和悲观锁。自join(比如表结构为(成绩id,课程ID,学生id,成绩)需要查询出(张三,语文,数学,外语)这样的结果)。数据库的索引,如何建立高效的索引,什么是hash索引,什么是B树索引,它们有什么不同。exists关键字的使用。什么是聚簇索引。如何使用数据库的查询执行计划优化SQL(比如MySQL的explain)。

3)网络编程

各个套接字接口的作用,以及一个典型应用的流程,比如你写了一个网络聊天室,那么整个的网络交互流程是什么样的。还有现在大火的NIO编程。这个领域我基本没有使用过,所以抱歉啊,不能更细粒度的分享了,不准备从事这个领域的也可以暂时不用了解。

4)java WEB编程

filter 的概念,多个filter的执行顺序。servlet的请求映射规则。中文乱码问题。OSI的七层模型,http相关的基础知识,比如redirect的code=302,404资源没找到,500以上的错误是服务器内部错误。200表示服务器正确处理请求。了解Accept-Header,比如如何请求返回一个json数据而不是html页面。REST接口一定能让你的简历增色不少。Ajax请求。反而一个具体的jsp页面怎么写在面试的时候真的很少提及。

5)多线程部分

Thread的run()和start()方法的区别。线程如何实现同步,如何将一个集合进行线程安全化,比如Collections.synchronizedList(list)能让该list是线程安全的。不但要了解synchronized的关键字,还要了解java.util.concurrent.locks包下的ReentrantLock等类的机制。java.util.concurrent包是一个值得深挖的矿,比如线程池的创建ExecutorServcie等,生产者消费者模式。

6)算法和数据结构

那几种典型的内存排序算法,冒泡排序,堆排序,归并排序,快速排序,简单排序等,以及各个排序算法的时间复杂度。树的遍历算法以及复杂度。二分查找等。

7)linux的基本操作

java在生产环境基本都是部署在linux上的,了解linux、以及在linux下部署java应用。也是一个闪光点。

8)java WEB框架

比如常见的SSH和SSM,了解为什么要用这些框架。了解spring的依赖注入和AOP功能,了解控制器的工作流程,无论是spring mvc还是Struts无非就是请求分发的功能,spring mvc将请求分发到@controllr注解的类中,struts将请求分发到@Acttion注解的类中。mybatis和hibernate都是数据库的ORM框架,都是讲数据库表中的记录映射为java的vo。比起我们手动的jdbc操作能提高效率和不容易出错。熟悉这整个框架的搭建流程,最好自己动手搭建。切记只会在别人搭建好的框架下垒代码就往简历上写熟悉这个框架。

9)设计模式

如果感兴趣就系统的学习吧,不感兴趣或者时觉得空洞就了解常用的吧,比如单例模式,工厂模式(spring的PropertiesFactoryBean类是对这两个模式的完美解释),适配器模式(spring mvc的HandlerAdapter接口),装饰模式(HttpservletRequest对象典型的装饰模式使用),构建者模式(spring-web的Jackson2ObjectMapperBuilder)等。最好是能列举你在项目中用到的或者在著名的源码中遇到的。
10)大伙复习的时候可以借鉴这个列表,但是不尽限于此喔。

3、谈谈工作经验

很多同学在找工作的时候,很愁的一个问题是所有的招聘岗位都需要工作经验或者项目经验。如果你做过实际的项目那么恭喜你已经比别人多了一个筹码。没有工作经验的同学也不要着急。诸葛亮出山前不是也没带过兵吗?但是诸葛亮出山前可不是在他的茅屋中天天打LOL的,他可是天天分析天下形势,在脑海中一遍一遍模拟演习应对之策,当刘备面试他的时候,才能对答如流。这里的工作经验和项目经验强调的不是工作的经验和做项目的经验。没有工作没关系,没有做过真正的项目也没关系。我觉得可以通过如下的途径获取经验:
1)自己动手写一个系统,在实际操作的过程中肯定会遇到这样那样的问题,比如中文编码问题,解决问题的过程也就是积累经验的过程啦,自己动手做项目的另一个好处是毕竟后面毕业论文的时候还需要呢
2)阅读一个有源码的案例。然后将其吃透
3)深度学习一个开源框架,了解它的原理,如果能了解它的源码那么更能证明你是一名合格的社会主义接班人啦

最好祝大家都能拿到满意的OFFER!

Posted in: MySQL practise

Comments are closed.