首页 > 就业 > 面试

不同类型软件工程师面试题

不同类型软件工程师面试题



不同类型软件工程师面试题集合

这是小编为大家整理的软件工程师面试题目,里面包含有java、.net和百度的题目。

  java软件工程师面试题

  1、EJB与JAVA BEAN的区别?

  答:Java Bean 是可复用的组件,对Java Bean并没有严格的规范,理论上讲,任何一个Java类都可以是一个Bean。但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,通常Java Bean还要实现Serializable接口用于实现Bean的持久性。Java Bean实际上相当于微软COM模型中的本地进程内COM组件,它是不能被跨进程访问的。Enterprise Java Bean 相当于DCOM,即分布式组件。它是基于Java的远程方法调用(RMI)技术的,所以EJB可以被远程访问(跨进程、跨计算机)。但EJB必须被布署在诸如Webspere、WebLogic这样的容器中,EJB客户从不直接访问真正的EJB组件,而是通过其容器访问。EJB容器是EJB组件的代理,EJB组件由容器所创建和管理。客户通过容器来访问真正的EJB组件。

  2、MVC的各个部分都有那些技术来实现?如何实现?

  答:MVC是Model-View-Controller的简写。"Model" 代表的是应用的业务逻辑(通过JavaBean,EJB组件实现), "View" 是应用的表示面(由JSP页面产生),"Controller" 是提供应用的处理过程控制(一般是一个Servlet),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可以进行交互和重用。

  3、WEB SERVICE名词解释。JSWDL开发包的介绍。JAXP、JAXM的解释。SOAP、UDDI,WSDL解释。

  答:Web Service描述语言WSDL

  SOAP即简单对象访问协议(Simple Object Access Protocol),它是用于交换XML编码信息的轻量级协议。

  UDDI 的目的是为电子商务建立标准;UDDI是一套基于Web的、分布式的、为Web Service提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的Web Service注册,以使别的企业能够发现的访问协议的实现标准。

  4、开发中都用到了那些设计模式?用在什么场合?

  答:每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心。通过这种方式,你可以无数次地使用那些已有的解决方案,无需在重复相同的工作。主要用到了MVC的设计模式。用来开发JSP/Servlet或者J2EE的相关应用。简单工厂模式等。

  5、CORBA是什么?用途是什么?

  答:CORBA 标准是公共对象请求代理结构(Common Object Request Broker Architecture),由对象管理组织 (Object Management Group,缩写为 OMG)标准化。它的组成是接口定义语言(IDL), 语言绑定(binding:也译为联编)和允许应用程序间互操作的协议。 其目的为:

  用不同的程序设计语言书写

  在不同的进程中运行

  为不同的操作系统开发

  6、 如何给weblogic指定大小的内存?

  在启动Weblogic的脚本中(位于所在Domian对应服务器目录下的startServerName),增加set MEM_ARGS=-Xms32m -Xmx200m,可以调整最小内存为32M,最大200M

  7、 如何设定的weblogic的热启动模式(开发模式)与产品发布模式?

  可以在管理控制台中修改对应服务器的启动模式为开发或产品模式之一。或者修改服务的启动文件或者commenv文件,增加set PRODUCTION_MODE=true。

  8、 如何启动时不需输入用户名与密码?

  修改服务启动文件,增加 WLS_USER和WLS_PW项。也可以在boot.properties文件中增加加密过的用户名和密码.

  9、 在weblogic管理制台中对一个应用域(或者说是一个网站,Domain)进行jms及ejb或连接池等相关信息进行配置后,实际保存在什么文件中?

  保存在此Domain的config.xml文件中,它是服务器的核心配置文件。

  10、 说说weblogic中一个Domain的缺省目录结构?比如要将一个简单的helloWorld.jsp放入何目录下,然的在浏览器上就可打入http://主机:端口号//helloword.jsp就可以看到运行结果了? 又比如这其中用到了一个自己写的javaBean该如何办?

  Domain目录\服务器目录\applications,将应用目录放在此目录下将可以作为应用访问,如果是Web应用,应用目录需要满足Web应用目录要求,jsp文件可以直接放在应用目录中,Javabean需要放在应用目录的WEB-INF目录的classes目录中,设置服务器的缺省应用将可以实现在浏览器上无需输入应用名。

  .net软件工程师面试题

  一、不定项选择

  Question 1

  以下叙述正确的是:

  A. 接口中可以有虚方法。 B. 一个类可以实现多个接口。

  C. 接口不能被实例化。 D. 接口中可以包含已实现的方法。

  Question 2

  以下描述错误的是()

  1. 在C++中支持抽象类而在C#中不支持抽象类。

  2. C++中可在头文件中声明类的成员而在CPP文件中定义类的成员,在C#中没有头文件并且在同一处声明和定义类的成员。

  3. 在C#中可使用 new 修饰符显式隐藏从基类继承的.成员。

  4. 在C#中要在派生类中重新定义基类的虚函数必须在前面加Override。

  Question 3

  声明一个委托public delegate int myCallBack(int x); 则用该委托产生的回调方法的原型应该是

  1. void myCallBack(int x)

  2. int receive(int num)

  3. string receive(int x)

  4. 不确定的

  Question 4

  下列描述错误的是()

  a) 类不可以多重继承而接口可以;

  b) 抽象类自身可以定义成员而接口不可以;

  c) 抽象类和接口都不能被实例化;

  d) 一个类可以有多个基类和多个基接口;

  Question 5

  下列关于构造函数的描述正确的是()

  a) 构造函数可以声明返回类型。

  b) 构造函数不可以用private修饰

  c) 构造函数必须与类名相同

  d) 构造函数不能带参数

  Question 6

  接口是一种引用类型,在接口中可以声明( ),但不可以声明公有的域或私有的成员变量。

  a) 方法、属性、索引器和事件;

  b) 方法、属性信息、属性;

  c) 索引器和字段;

  d) 事件和字段;

  二.问答题

  1. 简述 private、 protected、 public、 internal 修饰符的访问权限。

  private:私有访问,它只能在声明自身的类中进行访问。

  protected:表示受保护的访问,该类内部和继承类中可以访问

  .public :表示公共访问,在代码任何位置都可对其进行访问

  internal表示内部成员,在同一命名空间内可以访问。

  2. C#中的委托是什么?事件是不是一种委托?

  委托是指具有相同属性(也称具有相同的函数签名:返回类型相同,参数类型、参数顺序及参数个数相同)的函数或方法的抽象,关键字为delegate。主要用途是三个:1)函数回调;2)传递方法;3)事件机制

  事件就是一个狭义的委托,也就是事件是一个用于事件驱动模型的专用委托,对事件的声明, 实际是声明一个私有的委托变量,对委托变量进行封装,即委托变量加上event关键字后,不管其前面的访问修饰符是public还是private,编译器都会将其编译为private。

  委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使得程序具有更好的可扩展性。以委托为参数的函数具有一定的通用性。

  使用委托可以将多个方法绑定到同一个委托变量,当调用此变量时(这里用“调用”这个词,是因为此变量代表一个方法),可以依次调用所有绑定的方法。

  3. abstract 可以和 virtual 一起使用吗?可以和 override 一起使用吗?

  不可以一起使用,但是可以和override一起使用。

  4. 请叙述属性与索引器的区别。

  属性:它是存取类的字段,索引器:Indexer它是特殊的属性,用它可以使用户像访问数组一样访问类的成员。

  5. 请详述在dotnet中类(class)与结构(struct)的异同。

  类class可以进行实例化,它是引用类型,内存分配在栈中,效率高,它有默认的构造函数,有析构函数可以使用 abstract 和 sealed, protected 修饰符。要用new进行初始化,

  结构它是属于值类型,内存分配在堆中,效率低,它没有默认的构造函数,但是可以添加构造函数,没有析构函数没有 abstract 和 sealed(因为不能继承) 不能有protected 修饰符 可以不使用new 初始化,但是可以在结构中初始化实例字段。

  百度软件工程师面试题

  1、找到满足条件的数组

  给定函数d(n)=n+n的各位之和,n为正整数,如d(78)=78+7+8=93。这样这个函数可以看成一个生成器,如93可以看成由78生成。

  定义数A:数A找不到一个数B可以由d(B)=A,即A不能由其他数生成。现在要写程序,找出1至10000里的所有符合数A定义的数。

  回答:

  申请一个长度为10000的bool数组,每个元素代表对应的值是否可以有其它数生成。开始时将数组中的值都初始化为false。

  由于大于10000的数的生成数必定大于10000,所以我们只需遍历1到10000中的数,计算生成数,并将bool数组中对应的值设置为true,表示这个数可以有其它数生成。

  最后bool数组中值为false的位置对应的整数就是不能由其它数生成的。

  2、一个大的含有50M个URL的记录,一个小的含有500个URL的记录,找出两个记录里相同的URL。

  回答:

  首先使用包含500个url的文件创建一个hash_set。

  然后遍历50M的url记录,如果url在hash_set中,则输出此url并从hash_set中删除这个url。

  所有输出的url就是两个记录里相同的url。

  3、海量日志数据,提取出某日访问百度次数最多的那个IP。

  回答:

  IP地址最多有2^32=4G种取值可能,所以不能完全加载到内存中。

  可以考虑分而治之的策略,按照IP地址的hash(IP)%1024值,将海量日志存储到1024个小文件中。每个小文件最多包含4M个IP地址。

  对于每个小文件,可以构建一个IP作为key,出现次数作为value的hash_map,并记录当前出现次数最多的1个IP地址。

  有了1024个小文件中的出现次数最多的IP,我们就可以轻松得到总体上出现次数最多的IP。

  4、有10个文件,每个文件1G,每个文件的每一行都存放的是用户的query,每个文件的query都可能重复。如何按照query的频度排序?

  回答:

  1)读取10个文件,按照hash(query)%10的结果将query写到对应的文件中。这样我们就有了10个大小约为1G的文件。任意一个query只会出现在某个文件中。

  2)对于1)中获得的10个文件,分别进行如下操作

  -利用hash_map(query,query_count)来统计每个query出现的次数。

  -利用堆排序算法对query按照出现次数进行排序。

  -将排序好的query输出的文件中。

  这样我们就获得了10个文件,每个文件中都是按频率排序好的query。

  3)对2)中获得的10个文件进行归并排序,并将最终结果输出到文件中。

  5、蚂蚁爬杆问题

  有一根27厘米长的细木杆,在第3厘米,7厘米,11厘米,17厘米,23厘米这五个位置上各有一只蚂蚁,木杆很细,不能同时通过两只蚂蚁,开始时,蚂蚁的头朝向左还是右是任意的,他们只会朝前走或掉头,但不会后退,当两只蚂蚁相遇后,蚂蚁会同时掉头朝反方向走,假设蚂蚁们每秒钟可以走1厘米的距离。求所有蚂蚁都离开木杆的最小时间和最大时间。

  答案:

  两只蚂蚁相遇后,各自掉头朝相反方向走。如果我们不考虑每个蚂蚁的具体身份,这和两只蚂蚁相遇后,打个招呼继续向前走没有什么区别。

  所有蚂蚁都离开木杆的最小时间为

  max(min(3,27-3),min(7,27-7), min(11,27-11), min(17,27-17),min(23,27-23))=11

  所有蚂蚁都离开木杆的最大时间为

  max(max(3,27-3),max(7,27-7), max(11,27-11), max(17,27-17),max(23,27-23))=24

  6、当在浏览器中输入一个url后回车,后台发生了什么?比如输入url后,你看到了百度的首页,那么这一切是如何发生的呢?

  回答:

  简单来说有以下步骤:

  1、查找域名对应的IP地址。这一步会依次查找浏览器缓存,系统缓存,路由器缓存,ISPDNS缓存,根域名服务器。

  2、向IP对应的服务器发送请求。

  3、服务器响应请求,发回网页内容。

  4、浏览器解析网页内容。

  当然,由于网页可能有重定向,或者嵌入了图片,AJAX,其它子网页等等,这4个步骤可能反复进行多次才能将最终页面展示给用户。

相关内容

热门阅读
随机推荐