(一)职业规划和制定计划

来源:互联网 发布:北邮图书馆软件 编辑:程序博客网 时间:2024/05/13 14:09

一.时代分析和各技术方向的招聘要求

我们所处的时代是一个移动、云计算和大数据兴起的时代。

移动平台有Android、IOS、Windows Phone,手机应用呈现出百花齐放的态势,移动平台上的游戏开发和现有桌面产品或BS产品的移动端的开发还比较有前途,搞移动开发最需要的就是创意和好的用户体验。

J2EE+3G/Android学习路线图:http://edu.csdn.net/main/studyline/heimaline.html

云计算还知识刚刚兴起不久,技术趋向成熟,还没有完全成熟,对传统行业和互联网格局产生了非常大的影响,现在进入这个领域还不算晚。而且未来必定的大数据的天下,海量数据的架构设计(高性能高并行)对开发人员提出了更高的要求。分析各大招聘网站对大数据架构师的要求,找到了其共同之处:

(1)     精通数据结构和算法

(2)     Java/C++至少掌握一种,有相关开发经验优先

(3)     有某行业或领域业务经验优先,有需求分析和架构设计经验优先

(4)     精通Hadoop、Hbase、Hive、ZooKeeper或Infobright,有调优经验或修改过源码的优先

(5)     熟悉数据仓库、大数据理论、熟悉主流的大数据产品和数据分析技术优先

(6)     熟悉分布式文件系统、分布式数据库系统、集群存储系统,NoSQL数据库技术(如Cassandra,MongoDB,Redis等)优先

(7)     大数据管理(db优化,分割,聚类),有实际开发运营大数据系统者优先

(8)     可能还需要熟悉敏捷开发的原理和流程

(9)     有良好的沟通能力和管理经验者优先,有创造力,有研究精神,有激情,有很强的学习能力,工作积极主动优先。

 

二.大方向(基本原则):

1.      英语学习要贯穿在技术学习的始终

2.      理论结合实践(实践才是硬道理),学习结合思考(总结使人进步)

3.      已经明确走技术方向(J2EE体系结构的大数据架构师)

a.      JVM平台的优化

b.     各种Web服务器和软件的集群配置以及优化

c.      精通J2EE体系结构

d.     掌握数据库的优化和大数据架构设计

        4.自我认识的局限和职业发展的动态变化,任何计划也必须实时调整,可以根据工作情况和兴趣选一个点进行重点突破,毕竟人的精力有限,肯定得先广后专。

三.从一个高级程序员面试看清自己所在的层次

1. CORE JAVA的一些基础是肯定逃不掉的,如

a) HashMap, TreeMap的机制、源码片段这个侯选人肯定应该能够分析、了解和掌握了。

b) Comparable与Comparator接口的使用。

c) stack的原理,如:计算({[<>]}这样的左边括号和右边的括号是否匹配,就可能通过stack的pop, push原理去实现。

d) 单向链表,双向链表的完型填空。

e) 序列化与反序列化的具体用法

f) HashCode Equals的原理,怎么写,算法,为什么要HashCode Equals,两个对象如果Equals了是不是HashCode一定相等,反之呢?

g) GOF设计模式考个2-3道,主要是问侯选人碰到这样的情形用什么设计模式;装饰模式和工厂模式和侯选人搞一下脑子,什么是ITERATOR模式。

让侯选人自己写一个ITERATOR看看,去一个饭店点菜,每个饭店里都有一个菜单,然后顾客根据这个菜单点菜,这是一个什么设计模式?能否写一个菜单和顾客点菜的这样的一个设计模式来呢(享元设计模式)。

h) JAVA垃圾回收机制

i) 从《深入理解JAVA虚拟机》这本书里抽一道关于JDK平台的架构问题如:JAVA的新生代和老年代怎么安排他们的比例较好,新生代里放的是什么,老年代里放的又是什么?

j) 最后来两道数据结构,排序是肯定要考的,如果这个侯选人开价较高,给他一道归并排序,归并排序归并排序归并排序,有没有,大家还记得吗?呵呵呵!

除了排序后,给侯选人来一道较难的,如:约瑟夫环问题,汉诺塔问题,傅立叶级数问题,求极限问题,迷宫问题(有如何生成迷宫和走出迷宫两种问题)。

 

2. 多线程

a)两个线程间如何通讯(不是WAIT, NOTIFY这种简单的哦),比如说一个线程如何传一个含有复杂结构的对象到另一个线程,对于批量数据如:读一个含有数百万行记录的.txt文本文件看看侯选人有什么实际能力。

 

b)线程锁的机制, synchronized关键字的用法,作用在method上,作用在method内以 synchronized(this){}开头的用法,synchronized(Object)的用法;

public synchronized static method(){}又是如何使用的它和public synchronized method()有何区别?

在JDK1.6中有什么好的方法可以代替synchronized,lock关键字的使用。

c)阻塞队列的作用?JDK1.5后的阻塞队列是怎么用的,用阻塞队列来模拟一个可以执行100个TASK的TASK POOL,即我有一个工作池,里面可以同时处理100条任务。

此时我有一个客户端,不断的往工作池里加任务,能否给出你的核心设计,拿支mark笔在黑板上画出。

同时请给出你认为比较优化的task pool的设计,并且给面试官解释一下你的设计 。

 

3. 问点J2EE问题吧

a) 侯选人用过Spring,Spring中AOP, IOC举个实际应用场景吧

b) 我在SPRING里把一个PROPERTIES文件注入,然后我在SPRING框架Coding时只要通过get properties文件中的一个key就可以得到这个value,相当于我不需要每次在读写properties文件时要输入或算出properties文件当前所在的入径,通过spring的context就可以得到这个properties文件的内容了。

c) 在spring中,一个类child继承自一个abstract的parent类,该child类要作为@Service到处注入的,在spring的配置文件中如何写法?

d) 切面,SPRING的事务管理用过吧?用过,说一下SPRING中“事务的传播性”,有没有,有没有!事务切在Dao层,切在Service层,为什么要切在Dao层,为什么要切在Service层。

e) 除了事务你还作过哪些Spring方面的AOP编程? 不要和我说对操作的method进行日志记录这个例子,因为SPRING出来时就是拿这两个例子来讲它的特性,是个JAVA程序员都知道。

你可以说说看Spring Batch里的“event" "flow",不知大家看过没;

你可以说说看Spring与Ehcache的结合,利用AOP来模拟Hibernate里的二有缓存;

f) Spring JdbcTemplate的用法,这个肯定要考到的吧,对吧

g) 说一下jsp中有哪些”隐式对象“,以及他们的用法

 

h) servlet的生命周期

i) Struts1和Struts2的核心区别

j) Strutss2中常用的几个拦截器的用法(面试官可是会问里面的关键方法的使用的哦,因此你光会背STURTS2里有几个拦截器也是没有用的)

k) 改变一个request中的值,然后把改变的值再放回该request

L) 你说你用过缓存,如果我的应用布署在一个集群运用中,你的缓存是怎么设计的?每个集群节点一个缓存?那你有没有全局缓存,全局缓存你是怎么用在集群上的?

4. 再问一些Hibernate吧

a) 哦,你用过Hibernate,和我说一下Hibernate里我要对一张表进行锁定是怎么做的

b) 说一下Hibernate里evict, flush两个关键方法的区别

c) 用Hibernate插入1万条数据,怎么做,有什么好的优化方法吗

d) Hibernate的sessionFactory是怎么管理的,ThreadLocal的SessionFactory和非ThreadLocal的SessionFactory。

e) Hibernate和Spring结合后为什么我们就不用手动关闭SessionFactory了,不要和我说因为Spring帮我们关了,废话,是个人都知道,但原理是什么?是Spring里在哪边并且是怎么去帮我们关的?

f) Hibernate里 lazy loading的用法,由其是fetch关键字是怎么用的

5. 哦!!!还有人撑到现在?没有say 88?好,下面继续

基本上,我们的问题问到这边,有些本来很自信的侯选人,应该有几个已经动怒了。

这些侯选人本来准备好的面试问题,结果在我们这边面到现在这个地步已经一塌糊涂了,这时可以问一下他们有什么问题,或者问一下他为什么要离开上家公司,然后基本可以和他们say 88了。

6. 从简历上看oracle用了48个月,4年(我还看到过用了6年,7年的呢),我们问点Oracle相关的问题吧

a) 什么叫数据库设计范式,来,把5个范式说一下,然后给你几个例题,让你说出,这样的设计是符合第一、第二、第三还是第四、第五范式,光背可没有用哦,呵呵呵。

b) 说过了数据库设计范式,什么叫反范式呢?

 

c) 做了48个月的Oracle了,对于日志归档,flashrecovery,SGA, PGA的设置管理及原理因该很知道了

e) 在plsql中选取100万条数据写成txt文件怎么做?只依赖于plsql

f) orace中的索引有几种,分别应用在何种场景

g) 给出一个sql,请用plsql的分析器即analyze来分析一下这条SQL的性能如何,有哪几个关键指标是你需要看的,什么叫hashjoin, 什么叫nestedloop

h) 用exist, not exist代替in的写法

i) 从我上次写的面试宝典第6天和第7天的那近百道SQL里选2道让侯选人写写看,以此来看侯选人的SQL能力

j) ORACLE中的bitmap 和 btree索引,说一下原理

k) 有没有必要对FK建索引啊?如果建和不建分别在ORACLE中会是什么样啊?

结束语:

基本到此为止,相信50个侯选人里可能真正能够满足:

第一部分CORE JAVA答对70%以上

第二部分多线程答对60%以上

第三和第四部分合起来 答对70%以上

第六部分能够答对50%以上(但2道SQL题必须有一道是全答出,另一道复杂的可以写出思路和核心语句,不一定全答出)

第七部分智力题中,能够给出自己的想法,思路的,不一定得出最后答案(因为这种题很特别,有些侯选人没有这种思考习惯或者是准备过的是基本答不出的)。

另外对于一些500强内的公司,侯选人面临的还可能是第一部分、第二部分、第三、第四部分是全英语问答!

 

四.个人计划(先实践一段实践,然后再进行量化,自己对自己进行每日考勤)

1、《Vocabulary5000》一天2-3篇,听mp3录音,坚持1-2个月;

《Vocabulary10000》每天背完后听前一天背完的单词,坚持2-3个月;

《新编循序渐进美国英语》从第四册看到第七册,每年1-2篇小故事,天天看,增加阅读量,增加“习惯用语”;

普特英语听力—>每日听力,初学者从“SpecialEnglish”开始听起,下载mp3,每个mp3时间不超过2min,每天坚持听3个mp3,听完想大致讲什么内容,然后在论坛上搜索听力记录进行对比。

多看美剧,用英语来思考                               

 2.《精通C#》第6版

3.《Python核心编程》第二版

4.《SQL Cookbook》

 

原创粉丝点击