(二)专业问题
" r5 F( H! l; ~' D! O; J 这部分问的就是,跟你的项目无关的专业知识,主要考察的是你对具体专业知识的掌握情况,以及编程能力。面试的形式有:问答,现场编程,上机编程。一般问答的形! y; w* K, Z; V7 S7 S; u6 i
式居多,像微软、google、moto这种非常牛的公司,才会现场考你编程,纯考算法的公司也就那么几家。大部分情况都是问你一些基本的技术细节,考察你对专业基础知识的: c* p) O+ C5 a8 F3 W/ Z( N( _
掌握情况。注意:IT企业往往问的都比较细,非IT领域的计算机职位往往问的比较泛泛。 @& y% o% h& e) N- T
这部分的关键还是在于技术积累,因为很多技术问题你不知道就是不知道。所以多积累面试常见问题和知识点还是非常重要的。
& Z' D" S7 j6 u& d z 下面按照不同的技术领域分类总结各部分常见的面试问题,括号中会标注该问题的来源。6 U" |+ p1 |1 H J6 X
1、java
- Y0 n6 `8 H2 g4 ?0 C7 X8 X 因为我投的职位主要是java相关的,所以这方面积累的经验比较多一下。这部分考查的重点主要有:java基本语法,多线程,异常处理,抽象类,匿名类,接口,MVC架构+ j' w, u7 N) u2 G
,设计模式,Servlet,Struts,Spring,J2EE。以下是我遇见过的面试问题:3 g: k0 i- W1 H$ R _
1)transient和volatile是java关键字吗?(瞬联)
, B! R# g x4 b* L. M, Q7 }2)抽象类和接口有什么区别?(瞬联); b) M G7 O K) \3 X; P' w, A
3)能说一下java的反射机制吗?(瞬联)0 P" V: H$ `; B9 C- e
4)在java中怎样实现多线程?(瞬联)
4 N" d3 E! J1 e2 c# r5)你用过哪种设计模式?(瞬联,IBM,aspenTech)1 {9 D& s/ V7 C, Y% U$ t8 ~
6)请说一下MVC架构(瞬联,IBM,aspenTech)+ n. s! z. Q' D* f( o
7)如果类a继承类b,实现接口c,而类b和接口c中定义了同名变量,请问会出现什么问题?(瞬联)
1 g4 j; ]4 H! A f$ U0 f8)请说一下java中为什么要引入内部类?还有匿名内部类?(瞬联,IBM)
" a0 F0 H# t* {) d9)请说一下final,finally和finalize的区别?(瞬联)
7 x9 e6 J' X' b9 F, x. d) u10)请说一下HTTP请示的基本过程(IBM)
; ^" i: P! h/ q1 @! Z! ~11)java中存在内存泄漏问题吗?请举例说明?(IBM)0 k, e1 a4 c! X: Y
12)请说一下java中的内存回收机制所采用的算法(IBM,瞬联)
! y# W2 S6 T$ v: v3 H2 d4 h13)请说一下System.gc()函数的作用。什么什么时候可以调用垃圾回收器?(瞬联)2 H! E3 C+ g- G( l" {& m+ G
14)你做过的项目中采用了什么安全认证机制?(IBM)
. r/ ]6 K: }) V( h1 u' G15)Math.round()什么作用?0 x) _# W7 p' @# B1 [
2、C
* Y% u- f: `# H8 M C语言考查的重点一般是:指针、结构体、条件编译、全局变量/局部变量。以下是我遇见过的面试问题:3 u& C7 m; r+ V5 R( ?' k
1)请说一下extern C的作用(汉略)
. t% }2 g* z7 d7 V% `2)请说一下#ifdef...的作用(汉略)
0 F' ?; i$ M8 x& E2 L+ V; z3)C语言里,哪些变量是存放在堆里,哪些是存放在栈里?(普天)3 z+ Y3 ~$ \, { p+ g
4)C语言里的static关键词是什么含义?(普天)2 N9 B4 k- p0 e) G, c; m: A! |9 Z
5)进程和线程有什么区别?(普天)
. D$ m7 ]5 ^" \' t% C$ F3、C++9 L' [# M8 b" p8 z; N8 W4 F# \
C++语言考查的重点主要有:多继承,抽象类,虚函数,拷贝构造函数,析构函数,动态联编,多态,const,static。以下是我面试中遇到的问题:- o& R. Z( ^8 q, q9 l; U
1)你听说过拷贝构造函数吗?能具体说一下它的作用吗?(汉略)
: K, @8 V# S0 i. s* ?0 y: z- ~. I6 w! z# _2)析构函数必须是虚函数吗?为什么?(汉略)
7 V1 A6 Y4 r V f% l" ]3)你听说过钻石结构吗?请具体说一下(aspenTech)' q/ @ I' g h* M9 Y" i
4)什么是深拷贝?什么是浅拷贝?他们有什么区别?(aspenTech)+ x3 H, B- }3 B5 R& D H7 J& |$ _
5)什么是虚函数,什么是纯虚函数?为什么引入虚函数和纯虚函数?(汉略,aspenTe
6 [& H) p1 c1 t. |* Dch,普天). E3 c) R7 T& ]
6)请说一下面向对象的基本特性。(aspenTech)2 E8 W1 w# G) Z2 W* W4 y a
7)C++中的const关键定代表什么含义?跟C语言中的const有什么区别?(aspenTech); p# M: a9 {2 u* B; Y7 w9 x& e
8)C++中的static关键定代表什么含义?跟C语言、Java中的static有什么区别?(普天* c& W5 Z' M6 n+ a( n
)4 v3 i4 b C( d. _
4、数据结构
0 ?% {$ B+ e) m 这是面试中几乎必考的部分。考查的重点有:链表,二叉树前序、中序、后序遍历(递归,非递归),二叉树结点、层次的计算,树转二叉树,各种排序算法(冒泡排序* X5 B* b, k3 }3 E4 K- L( Y
,快速排序,堆排序是重点)。以下是我在面试中遇到过的问题:! v3 @3 q3 f7 A
1)请编写程序,将一个链表倒置。(联发)% ^/ c, G1 x7 B( {
2)请编写二叉树的中序遍历非递归算法。(新华社)+ I2 M1 X7 `8 `
3)请编写一个程序,实现将树转化成二叉树。(华为)3 C: {# r4 W, I; B: d
4)一棵满二叉树有x个结点,请问整棵二叉树有多少结点?(新华社,中国信保)
' [8 v2 ?. b5 H5)请编程实现一个堆排序算法/快速排序算法。(汉略): U" I6 z; Q* w/ g
5、数据库5 U: X- F5 ~, F8 v
这也是面试重点内容。主要考查点有:范式,1、2、3范式,事务,内连接,外连接,关系代数,数据库设计。以下是我遇到过的面试问题:! `) Z8 g9 l, P: h9 c/ L
1)什么是范式、1范式、2范式、3范式?(百度,中航信,新华社,中国信保)$ |" X& U6 I) T' \, u( z
2)事务具有哪些特性?(中航信)0 c" ~" w2 \7 L5 M0 \. N" {
3)请说说什么是外连接、左外连接、右外连接?(aspenTech)2 b! | y- \ l
4)请说说关系代表中的几种基本运算?(中航信)
% O; Z( v5 f( p B5)请对一个论坛进行数据库设计,并说说你设计的数据库满足哪个范式(百度)
4 x' p0 V l- c7 s* z( M6)给你一个数据库需求,请对数据库进行设计,并根据要求写出查询语句(中国信保)
+ @3 R+ q+ P* C+ E1 ~( M6、网络
: t3 }1 q9 x: C 这也是常考的部分。主要考查点有:OSI参考模型,TCP/IP参考模型。以下是我遇到过的具体面试问题:
g7 h( `0 J" O/ }4 Y1)请解释一下OSI参考模型。(中国信保)
5 u( W" Z/ @" Y2)请解释一下TCP/IP参考模型。(中国信保)
5 I% S9 n' B1 U; j1 n# ]! j3)为什么现在的网络最后采用了TCP/IP参考模型而没用OSI参考模型?(中国信保)" \# H2 W v( ^8 S
总结:这部分面试主要考查的还是你的专业基础知识和技术积累程度。所以一定要回过头,把书上的重点章节再看一遍。对于一些常见的面试问题,要多注意积累,这样
2 i" \( H$ ?* z1 ?3 }才能在面试的时候充满自信,临阵不慌。
( f) W6 o' M* V L+ [4 h 建议:首先把重点的专业课知识重新复习一遍,做到熟记于心,灵活运用。然后,买一本<程序员面试宝典>好好看看,一定要把里面的重点章节全看完,全背下来。在: D, F3 z1 m9 M, A
这里,强烈向大家推荐那本<程序员面试宝典>,一定要人手一本,认真看完,找工作时你会发现,大部分面试题都是那里面的。最后,多向周围的人取取经,把你在面试中9 L: T/ E) [3 R: S U* Y3 U
遇到的问题和别人在面试中遇到的问题记下来,不会的及时问,把它弄懂。这样,在不断的总结、改进过程中,自己的技术水平、面试经验才能不断提高。
3 ]' E* h, h! L! d" k9 b 最后,祝愿大家都能顺利通过面试,拿到满意的offer!0 T) y* U. g. }
(注:面试部分到这里就全部写完了,如果还有同学有其它方面问题,请直接和我联系,衷心希望每一个同学都能顺利通过面试,拿到理想的offer!) |