东软面试试题汇总
1 堆和栈那个是对程序员透明的?
答案:栈。
2 请结合具体实例阐述一下面向对象中"多态"的概念。
答案:同一操作用于不同的类的实例,不同的类将进行不同的解释,最后产生不同的结果,它有两种: →编译时多态---- 通过overload来实现,系统在编译时,根据传递的参数和返回的类型等信息决定实现何种操作
→运行时多态---- 通过override来实现,根据运行时具体对象的类型决定调用哪个方法。
给我面试的人很有亲和力,我没有感到有压力。
首先是自我介绍;他根据你自己介绍的情况来问你问题,我主要是说得现在正在做的青软实训内部管理系统。
你在项目组里主要负责什么?是怎么做的?
主要负责页面前台展示,我现在设计页面框架,用的Struts-tile;把页面分为4部分,sidebar,header,footer,context;然后把sidebar,header,footer这些每个页面都要用的写成一个整体,放在配置文件中,每个页面都引用他,这样就不用变了。变得就是context部分。另外在sidebar里面,用javascript来实现导航栏的弹出功能。 用什么方法可以检测一个环行链表?
首先可以在data里面初始化一个数据,然后向下循环,可以找到这条数据的话,就是环行链表,否则就不是;
但这个链表不一定是完全的链表,里面可能有分支,该怎么检测?
设置一个循环,条件设为true,如果可以结束就不是,不能结束里面就有环。
那这样的话怎么让他跳出循环呢?
我也不知道,那请教一下吧。
你看看如果next引用如果相同的话是不是就是环行链表?
对,是
那你想个办法来实现他吧。
把这个next引用,写进一个list,以后都把next引用和list里面的内容进行比较,如果有相同的就是环,没有就不是。
但如果链表很大,而你做的是嵌入式项目,有内存溢出,该怎么检测呢?
呵呵, 我想不出来了。
2. 自我介绍,(注 自我介绍中的自我经历可能会成为他的考点)
3. 我在自我介绍中说了我参加过数学建模,他问了我我们建的什么模型,我给他介绍了一下。主要考点是你的思路问题。
4. 单链表若最后一个节点指向前面的某个节点,请问怎么检测出现了环?
主要是考察你对问题有无解决方案,不对也无所谓,最后他一定会把你难倒。怎么也要说上几句,不说那就over了。
5. Final和finally的区别?
6. Java的垃圾回收机制?
4 5 两题应该都会,我就不说了。
1。什么是J2EE,J2SE,J2ME
这个就不用说了吧
2。什么是EJB
也不用说了吧
3。你做过哪些项目,负责该项目的哪个模块,M、V还是C
我说我做过一个网上花店,负责管理员模块,然后简单说了一下这个模块的各项功能,他让我说是M、
V还是C,我说这个项目的目的之一是让我门每个人对整个流程都有所锻炼,所以没有谁只做M或者V或者
C,一个人负责一个模块,然后做这个模块的全部。
4。我说我学到STRUTS了,他问我ACTION和ACTIONFORM是什么关系,是一对一吗,是一个ACTION一个
ACTIONFORM吗,确定吗?
我说是的,确定一定以及肯定。因为一个ACTION标签里只有一个NAME属性(他说这个我知道)。
5。学过日语啊,说个句子你翻译一下吧,@#$%#%$...
我也@#$#@%$#%...然后他说“恩,还懂点日语皮毛,学起来应该快一些。”
技术上也就这些了,别的也没什么了,不知道为什么就问我这些,我准备的那些他一个也没问着,可能我
一开始说我正在学J2EE,把他引向了这个方向,或者是我回答的太快了,时间太紧了。就这些。
东软面试总结: 1. 问题:栈和队列的主要区别
答案:栈----------后进先出;
队列--------先进先出。
2. 问题:完全二叉树的结构
答案:深度为k,有n个节点的二叉树,当且仅当其每一个节点都与深度 为k的满二叉树中编号从1至n的结点一一对应时,称之为完全二叉树。
当初面试人员画了几个树让我辨认谁是完全二叉树。
3. 问题:什么是索引
答案:索引依附于基表,建立索引是加快查询的有效手段。 4. 问题:什么是视图
答案:视图是关系数据库系统提供给用户以多角度观察数据库中数据的重要机制。是从一个或多个基
表(或视图)导出的表,它与基本表不同,是虚表。
5. 问题:什么是游标
答案:游标是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果,每个游标区都有一个
名字。用户可以通过游标逐一获取记录,并赋给主变量,交由主语言进一步处理。
6. 问题:对数据库操作的语句
答案:select,insert,update,delete 7. 问题:数据库的操作过程
答案:(1)加载驱动程序;(2)建立数据库连接;(3)向数据库发送SQL 语句;(4)事务处理;(5)
管理连接。
8. 问题:所知道的排序方法的种类
答案:插入,快速,选择,交换,归并,基数,希尔等。
9. 问题:什么是MVC
答案:这个大家都清楚,可查询有关资料。
1。首先得问题就是让我做自我介绍
答 当然就自己的大致情况说就行了,在这个过程中 又让我分析自己的性格与优缺点。然后让说明自己的职业规划。这些都是因自己而定了
2。做过的项目 简单介绍一下
答:做过的项目在来软件园之前没有多少机会 只有课程设计的时候做过一个java聊天室的项目,然后来到软件园之后做过jsp的产品支持中心的例子,sruts的固定资产管理的例子,还有hibernate 的例子,(可惜我都忘了竟然忘了那个项目的名字了,就是留言板的那个,刚做完竟然忘了)。随后她又随便问我关于java聊天室是不是自己编协议实现的,当然没有。 随后让我讲一个项目,我就讲了那个关于struts的项目。因为对方不懂struts,我讲也不知道她听懂了没有。
3。问你几个c语言的问题,
char *p;int i;p++与i++的区别?这个大家都知道就是p++是指向下一个元素,p的移动位置与p指针指向的类型有关,i++是自身增加一。差不多就是这样说的。
p保存占多少位? 我开始说与它指向的类型有关,然后她提示我说她不是那个意思,然后我说我感觉是在内存中占16位吧?我是这样说的,其实我也不清楚,c都忘了。
char *p=malloc(100),给p分配了多少个字节的空间?是堆内存还是栈内存?
我回答100个,(但是我忘了是堆还是栈)我认为是堆内存。
4。一个程序编译完成后在内存中是如何存储的??
我说这个没有学过,我把我认为的说了一下,她说她就是随便问问。
5。java有多态性,继承,什么意思?是如何实现的?
(这个我虽然也知道大概 但是好像理解的也不是太深刻,说不太清晰)
答:我就说了前几天老师利用接口与DAOFactory实现的那个例子,她说那抽象类呢,我说不太上来但是也就我理解的说了点。我又扯上了重载,她就问重载是多态吗?我说不是(因为我记得不是),但是可以实现多态。说得很乱
7. 最后就是随便聊了。她问我怎么没有考研,为什么?一个女生为什么学软件?然后问我有没有什么问
题,我就问了关于对日外包的事情和关于东软的一些事情。
1.着装:是第一项。
2.英语水平: 问:四级539分?答: 恩。
3.数据库:
问: Sql语句是在sql server 里写的还是在程序里写的?
答: 学数据库的时候,是在sql server里,
也在程序里写。
问:存储过程有没有用过
答:在个人网站里,用到过。
4. 网络:
问: 有没有socket编程的经验。
答: 在大三做过网络五子棋。
5.架构:
问 :三层架构:是什么 ?
正确答案:(web服务器,数据库服务器,应用程序服务器)
6. 编程语言:
问: Java学的怎么样?答:学了一个学期的课程
问:C或C++挑一个你最好的。答 :C++
C++:问:面向对象的特点:解释一下什么继承,多态。
答 :我在回答的时候,是通过一个经典的例子说的。
7. 你的项目经验:
问:是用什么开发的 ? 答:asp
8. 日语基础: 写一下五十音图 ,说一个存在句,说一个判断句,说一个你学过的最复杂
的句子。
首先,面试官对整个试卷的成绩做个一个评价。我的编程做了一个 java 和一个 c 语言的。面试官问我这两门语言那一门更熟悉,我说我是 .net 班的,相对来说对 C 语言相对熟悉一些。他接着问我什么时候学的 C 语言,我说大一下学期,他问以后用的多吗?我说:大二以后就不用了,因为 C 的编程环境太单调了,以后我们就用 C++ 代替了 C语言。接着,面试官就以 VC++ 为切入点问我。问题可以分为以下几个:
1、让我谈谈面向对象是怎样理解的?
2、谈谈类、子类的联系和区别。
3、谈谈继承、多态、封装、抽象、重载、虚函数、抽象类。
4、VC++ 中的 MFC 的理解,对 MFC 的理解程度?
答:我对 MFC 有一定的了解,因为里面的指针应用太过与复杂, 我只是对里面的几个类如:视图类、文挡类,做了简单的介绍。接着面试官就给我说学 VC 怎么能不理解 MFC 呢,他大体的介绍了里面的内容,并嘱咐我接下来的时间一定要抓紧这方面的学习。
5、数据库学的怎么样?学的是什么数据库?
答:我说学的是关系型的数据库,以 SQLSERVER 为主。首先,问我对一条记录有几种操作方式。我回答是:查询、插入、删除、更新。其次、有问了问里面的一些具体关键字的应用,例如:having. in. with check option.等等
6、为什么学习 .net 而不学习 java?
答:我说上个学期,学校开了 C# 对这门语言产生了很浓的兴趣,所以四月份报名的时候就选择的 .net 方向。如果是 java 在先的话,我可能就选择了 java 。接着,面试官说大型的项目都是用 java 开发的,要我以后向这方面靠一靠。
7、为什么选择国内解决方案?对这方面了解多少?对当今软件的发展有什么看法(外包、国内)?
大体上就问了这么多,首先是面试管不是我想象中的那么严肃,感觉就好象金澄老师一样,让人感觉就像是自己的大哥在和自己说话,所以整个过程中没有紧张。
每个公司的面试都各不相同,东软面试的问题同样具有一定的深度、广度。
1.final 怎么用?
答:final可以用在定义变量、方法以及类。
final的变量必须要初始化,也可以将初始化的操作推到类的静态块中进行,而且这样的变量不能再被重新赋值,可以将其看成这个类的“常量”了。
final的方法不能被所在的类的子类重写。
final的类不能再被继承了。
2.那么,finally怎么用?
答:finally适合try、catch块配合使用的。finally一般放一些收尾的代码,也就是说,不管try块中的代码是否正常执行,也不管catch块中的代码是否工作了,finally中的代码都要执行。比如,JDBC或是Hibernate中的关闭连接操作,就是放在finally中执行的。
3.wait方法和sleep方法的区别?
答:他们都是用来堵塞、挂起当前线程的方法,大体上应该是wait方法可以释放原先占有的资源,而 sleep方法好像不能... 在以前的编写的代码中,我几乎没有用过控制线程的操作,这部分知识我确实不敢随便说。
4.Java中,是否有内存泄漏问题?
答:为什么会有“内存泄漏问题”呢,主要是以前的一些编程语言,如C、C++等,因为存在指针变量,而且这些指针是可以进行运算的,所以可能会产生“内存泄漏问题”。对于Java来说,尽管声称废除了指针,但是每个类的实例的引用就是一种“指针”,然而这些引用是不支持运算的,也就不存在内存地址混乱问题,所以应该没有“内存泄漏问题”。
5.Java虚拟机的垃圾回收机制,是否真的不会有问题?
答:一个类的实例,如果长时间不用了,就可能被虚拟机垃圾回收掉。但是具体的被回收的时间的长短、具体什么时刻能被回收是不确定的。一般情况下,如果虚拟机认为当前可以使用的内存空间不多的时候,就会进行垃圾回收。据我现在的知识,认为,虚拟机的垃圾回收机制应该不会产生问题。
6.在平常的代码编写的过程中,有没有测试?一般怎样进行?
答:我平常写代码,也写一些测试程序,一般是使用JUnit,对编写的DAO类进行各种功能操作,如保存、删除、添加等的测试.
(他又补充问道:你这是小部分的测试,我指的是“单元测试”)
我平常写的差不多就是这类的简单测试了,还没有写一个功能强大的、有较大实际使用价值的“单元测试”。
7.你在代码中,都是怎样对待异常情况的?
答:在绝大多数情况下,我都回知道哪些代码可能会抛出异常以及会抛出什么样的异常。所以我也会针对不同类型方面的异常区分对待。我一般会分成几类情况:一类是服务器崩溃等情况,是最严重的异常了,没有什么可以挽救的余地,返回给用户“服务器维护中,暂时无法使用”;一类是数据库操作失败等情况,比如JDBC连接数据库失败、Hibernate正常删除数据失败等,是属于意外情况,严重程度稍微低一些,返回给用户“刚才由于网路不畅,导致操作失败,请重新操作”,同时,需要回滚的及时回滚;再一类在实现有所准备的、业务操作异常的情况,比如登录密码错误、新用户注册重名现象等等,这些异常都是在意料之中、有所准备的。此时可以返回相关的提示,严重程度相对比较的低。
8.说一下数据库表设置多个外键的事情
答:我以前设计的数据库表,还没用多个外键的情况.从外键的定义上说,一个表设置多个外键是完全可以的,外键对应着相关表的主键,内容只能是对应的主键的值。如果对应的主键发生变化,那么就要按照当时定义外键时制定的规则对外键所在的纪录条进行保留、删除或是更新操作。
9.谈谈对CMM的认识
答:CMM是一种开发的模式,正好我们做的一个项目就是按照CMM3的基本要求做的。因为以前的时候都是采用类似“快速”开发一样的方式,还快就会开始编码,但是CMM3要求每一步都要事先有一份完整的文档,所以一开始,对这种整天只写文档,不写代码的模式不太适应。随着项目的不断进行,才觉着CMM3的这种开发模式有许多的优点和好处。每做一步都有上一步的文档的支持,保证了工作的一致性和完整性。同时,因为是在统一的文档进行的工作,较容易了解的项目的进展情况,便于对项目的监控。
10.别人的进度拖延了,影响到了你的进度,这种事情在实际情况下经常有,你怎么处理?
答:我会直接找到这位(些)同事,了解情况,看看我是否能帮得上忙。如果帮不上,问一下什么时候能够结束,调整一下自己的工作安排,先做其它的一些和他们的进度联系不大的东西。都是自己项目组的同事,应该很好协调。
(如果是,别的项目组的进度影响到你呢?)
如果是别的组的人,自己就不好直接找人家,我会和项目组长说。如果事情紧急,让项目组长带着我,我们一起与那个项目组进行沟通。
学习Java的同学注意了!!!
学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入Java学习交流群346942462,我们一起学Java!