对照,补充和提高
今天看到一篇好文 --《找 Java,J2EE 工作之我见》
* |8 B" _' e- g& C+ R6 t现摘抄以便自己对比(@代表个人评论),由于已经有了不少基础, 感觉这些目标不是特别可怕。$ u) a! Y: [" a9 T: T! T# j
& I9 ~; u T2 D( H
首先,确定你找什么样的职位?" H; @- p( @; D' \
' n. g p: x t; z# `& T7 a1 G
- Junior (1-2 years) @ 这种职位现在很少。
8 g; Q) k7 |/ @* v) U- intermediate (3-5 years) @ 这个合适鄙人, A9 r N- S/ O8 q$ o1 \0 T
- senior (5-7 years) @ 目标' t1 W. }$ r) r8 r$ I
- architect (7-10 years or 10 years +) @ 其实他们并不懂新技术的操作,但底层的基础扎实。 S0 |' b% }2 U! Z- z
; V% s- `7 s$ l' |9 T所以,你可以根据自己的工作年限,对号入座。这是 HR 的标准。每个公司会有出入,但相信差别不大。
" B. b/ Z- S5 c3 V8 m4 Q
! h% ?& Y3 [) i9 ?) y其次,技术的要求:( W: }* N S8 e5 ?' D
% Z7 l+ s4 Q9 L1 c+ T: q9 c- JavaServer Faces (RichFaces,...), Struts 这些是比较流行的,JSF 现在开始占据主导地位,要想找好工作,这个应该要会。AJAX 也是应该会的,但许多 JSF 的 implementation 里,都支持 Ajax, 不用自己会写 Ajax 的 Java
; E+ k+ T. b. ^( {! k) N3 M@ 正在学
1 Q" B# `5 ^* E- p. O' O- e! q* d& w' Y, \! P. J5 A- y T4 y
- POJOs, EJB 2.0, 3.0, Spring 这些是 business tier 要知道的。特别是 Spring Framework, 许多中小公司特爱用,主要是 open source 的。如果没用过 Spring,起码要知道什么是 DI (Dependency Injection), IoC 等概念。
' N b; \. T: a k@ 这个OK啦。还得细细掌握。" p3 I7 l. b6 m
: A0 E1 e' d+ Y. G6 U5 ~4 r- ?- Hibernate, TopLink, JPA 这些是 ORM 的技术,至少精通其中一个, 因为他们相同。这个是 must have 的技术。Sun 的趋势是走 EclipseLink,基于 TopLink 的 code base 的 community edition.
- h/ x$ A8 v% q- _@ 会Hibernate的原理和应用。- d6 N0 I) u K
k- T1 j( c, t( }. g- ?- AOP (Aspect oriented programming), Annotation 都应该知道,最好有实战经验。@Annotation要学
6 ^- M/ K/ ~5 J9 H% A4 T- |" F& K3 M, ?9 q
- Design Patterns: GoF, Core J2EE Design Patterns 都应该精通,要会每个 patten 的 class diagram,知道都干什么用。@得加强!; k" B) j8 x1 R5 B+ S5 Y
% B9 v5 P8 O- g( N* l+ n/ n- Methodology: RUP (Rational Unified Process) 和 Agile Method (Scrum, XP)都要知道他们的有缺点,为什么现在都用这个,而放弃了传统的 SDLC?@还真不了解。补吧!9 ~8 l( `+ B: u* q
+ e' a9 h" }1 s+ x# Q" y; O
- Architecture and Design: N-tier architecture, Layer/Tier Architecture etc. How to design a system?; ?2 ?. B) W/ ^* Y( Q
2 ~2 A' @ ? R2 n4 }5 `- Software Architecture: 4+1 view of architecture, Zachman architecture, DoDAF, SunTone Architecture, TOGAF, etc, 至少知道一个。尤其是申请 Architect 职位,@我建议至少知道 2 个。
! ]5 j2 y2 O3 }! l. m: q
$ h' J4 z3 t& }& }7 S; y8 P' K- OOAD & UML: inheritance, polymorphism, generalization, realization, abstraction, encapsulation, etc. @知道如何用 UML 表述.
: \6 F, Y) I1 i% P) O
: n3 i9 t& B5 v) d8 h- Web Services & SOA: How to implement WS? WS-Security? Describe SOA solution stack? What is ESB? BPM?Service oriented analysis and design: Identification/Specification/Realization. 主要还会问到具体的 platform 上,比如 IBM Process Server 和 Integration Developer,或是 BEA Acqulogic ESB。还有比如 JAX-RPC 和 JAX-WS 的区别?9 S, b" r Y& s' V% {
) A) d% G: G; I7 H一般面试时,都会问你在书本上找不到的问题,比如给你个 Scenario,如何 design a class diagram? Show the associations between the classes, and multiplicity.8 H: |: ]* n D# _+ z0 J
; C- [$ J ~7 ^' y$ Z8 d$ A还会问一些 design pattern 的问题,或是比较两个 patterns 的不同用处。% k5 ?% V' L% v: K1 P. i
% W( {6 V7 ]5 W+ P8 M& d4 A请同学们准备至少两个 success stories,面试时用得到。
: ~, i& _- o: A- B: h9 O! K/ i# O: ~# t+ D- C3 r% r. w( |
有些 tough questions you should be well prepared before interview:' e1 Z! ` w- _) i- l
s3 l+ [. L& `
- Why are you leaving your current company?
) L& t1 \; x) I: t. [( G- How to deal with people whom you don't like?
% V7 v. _: ?( m% V0 R& l- What are your weaknesses?
. l$ c: k) W( C. x- g1 B" o- How much are you looking for? Please give a figure.
7 X& s! V7 `- Y
; m9 X! ]9 T$ ~2 {2 }$ x4 ~6 o如果你是牛人,我会问你:Have you designed your own custom framework? What is your intent and what problems do you try to address? What patterns do you use in your framework and why?/ J1 q& [$ ]# P C
+ s9 T. A/ k$ U; B* z r6 F- i
If you pass 90% of the questions, you’re hired as an architect.
8 ^/ ?) J+ D/ @0 y* E" a
/ \6 m/ Y. V, u" D在补充一些,# N6 r6 f2 z! n
( f1 q O6 x! H7 \9 N5 Y- Transaction Control: 2-phase commit, global transaction, local transaction. Programmatic vs. declarative transaction.
* H: L6 q; ]5 w0 | g, ?- g& ?
) v5 j1 n: m" u- Asynchronouse communication: Message-Driven Beans, JMS, MQ Series
8 T+ Z# {% l* a, m, k( P) X
: ^0 [: _+ k; {0 y+ N# {5 d- Scalability, Security, Performance & Availability: How to design a system that can scale well? How to improve performance? How to support the availability? How to implement J2EE Security (Authentication & Authorization)?
3 p9 k: A1 |& S" V6 d, ]' l1 f0 a7 j0 `9 v$ j2 |9 f( W! P
- What is digital signature? How to encrypt data? How to achieve client and server handshake? What is a security token?
8 q! R6 ?" }+ W! _$ V
/ i1 E3 N. `: ]- What is Data Integrity? Confidentiality?
6 p4 f; I1 N+ @# C$ Z2 v+ ^7 l4 n I: v
- 最好有 Sun 的证书:比如, Sun Certified Enterprise Architect, Sun Certified Web Component Developer, Sun Certified Java Programmer.
$ o: \6 H) d9 U* u& ?/ |6 o& _0 B H z0 X
- Unit Test: JUnit, Cactus
- [0 E- i3 i: y3 g7 ?) p* X* p# M8 t( V+ \2 W$ O5 V: m" J
- Database: Oracle, MS SQL Server, MySQL, DB2, TeraData, IMS (legacy)+ Z6 \4 r c- m! O5 j, y
3 ?$ Y/ V/ T& _% \
- Server: WebSphere 6.1, WebLogice 10, JBoss, Tomcat, OC4J
* h( c' a5 E% X1 u2 F
8 ^4 J7 \$ c4 p9 d( S% W- IDE: Eclipse, Rational Software Architect, Rational Application Developer, JDeveoper, NetBeans, JBuilder, Together Architect0 A) N" _/ {' J, f7 ]) I/ Q7 z" X
8 ^/ J( ?2 X6 Y) t5 z: U
[- @, M/ v8 m0 ]1 Z
@ 还有很多,以后再谈。后面的,我要收学费了,哈哈。