外资公司面试

来源:互联网 发布:mac os x 10.8升级包 编辑:程序博客网 时间:2024/04/28 14:57
上周一外资公司面试时向我提的问题(能回忆起来的),问题和我理解的答案都列出,欢迎大家评论......问题:1.谈谈你对设计模式的理解.是否完整看过一本关于设计模式的书.2.给你一个40G的硬盘,你将如何分区.3.产品设计与架构设计的区别.4.谈谈你在实际的程序设计中运用到的设计模实.5.什么是MVC.6.面向对象设计的本质是什么.7.HTTP请求的类型(get和post)的本质区别.8.pop3服务器和smtp服务器的主要区别.9.如何避免多个用户对同一数据的同时修改.10.jdbc驱动程序的类型及区别.11.C++类的继承和java的本质区别.12.C++中内存溢出的原因及防止办法.13.VB中如何实现类的继承.14.VB中的变量作为参数传递的两种类型及本质区别.15.什么是VBA编程.16.VB中如何访问windows API回答:1.设计模式是一种可以重用的思想,经验丰富的设计者将常见的问题和解决方案归纳为一种模式,模式记录了软件开发者的最佳实践经验.2.c--4G/win98,d--6G/win2000Server,e--500MB/交换区,f--10G/所有应用程序,G--4G/程序备份,H--8G/游戏,I--6.5G/文档资料.3.产品设计是确定软件系统的功能,性能指标,交互模式等方面的需求,也就是说,产品设计者决定 "做什么 "的问题,而把 "怎么做 "的问题留给实现人员来完成.系统架构设计是对已确定的需求的技术实现构架,与产品设计相比,后者的工作更为明确,主要着眼于系统的技术实现.5.在一个传统的应用程序中,一个单一代码要处理所有事物。 藉由MVC模型,你可以将你的应用程序有机的分成三个协作的部份: 模型,视图和控制器。视图是直接面向用户使用的部份。它格式化数据使数据以各种形式展现在荧屏上。然而实际上,它不包含数据。数据包容在模型中。最后,控制器部分接受用户操作命令进而修正模型内的数据。6.面向对象设计,是一个很严肃的话题.就象任何的自然学科一样,面向对象设计也需要遵循面向对象设计自身的规律.现在我们人人都在做设计,人人都在写程序.那是不是所有的人都明白设计应该遵循的规律呢?可能未必如此.任何学科上升到一定的高度都属于哲学的范畴,面向对象设计自然也不会例外.我们在学习哲学思想的时候(比方说说马列),都需要学习哲学思想及其方法论.那么面向对象设计的哲学思想又是什么呢?面向对象设计的方法论又是什么呢?面向对象哲学的思想是它的设计原则(Design Principle).7.当客户向服务器发送一个HTTP请求时,这个请求包含有客户信息和参数信息,参数信息只是需要在服务器上处理的窗体数据。每个HTTP请求分为两个部分:首部和正文 例如:1、请求的日期和时间2、关于浏览器产生一个请求的详细过程3、请求页的位置4、客户端的IP地址参数在首部或正文中发送,这取决于窗体标记的METHOD属性集的类型。action属性可设置为GET或POST,如果设置为GET,则数据通过首部发送,如果设置为POST,发送的数据为请求的正文部分。参数的名称连同数据与HTTP请求一起成对发送GET方法通过首部发送数据,因而它对发送数据的大小有限制,数据的大小不超过1K。当使用GET方法时,Querystring集合将持有发送的参数和客户端请求,参数值可以使用Request对象访问。当使用POST方法时,Form集合将持有发送的参数和客户端请求,参数值可以使用Request对象访问。8.pop,和smtp一个是收信,一个是发信的协议。SMTP (Simple Mail Transfer Protocol)pop(Post Office Protocol)9.一般处理并发问题时我都这样做的,1.开启事务2.申请写权限,也就是给对象(表或记录)加锁.3.如果失败,则结束事务,过一会重试。4.如果成功,也就是给对象加锁成功,防止其它用户再用同样的方式打开。5.进行编辑操作6.写入所进行的编辑结果7.如果写入成功,则提交事务,完成操作。8.如果写入失败,则回滚事务,取消提交。9.(7.8)两步操作已释放了锁定的对象,恢复到操作前的状态。10.JDBC网络纯JAVA驱动程序:将JDBC转换为与DBMS无关的网络协议,之后这种协议又被某个服务器转换为一种DBMS协议,这种网络服务器中间件能够将它的纯JAVA客户机连接到多种不同的数据库上,所用的具体协议取决于提供者.这是最为灵活的JDBC驱动程序.本地协议纯JAVA驱动程序:将JDBC调用直接转换成DBMS所使用的网络协议,这将允许从客户机上直接调用DBMS服务器,是Intranet访问的一个很实用的解决办法,由于许多这样的协议是专用的,因此数据库厂商将是此类驱动程序的主要来源.11.C++支持多继承,JAVA不支持,但JAVA采用可以继承多个接口的办法来实现并提高了代码的可读性.12.内存溢出可能有以下几个根本因素造成的: 1.指针变量指向了其它非正常区域造成了那段内存不能回收再利用; 2.在动态分配内存时用完后没有及时的动态回收。 3.多级指针使用不合理造成的指针混乱而不能删除指针使得内存被空置。处理办法很多种:在vc编译器中可以自动在output窗口中告之;也可以自己设立Assert或Trace等来跟踪指针的处理,或进行某段内存的监视。13.vb6中可以实现接口继承但不支持实现继承.不过可以变通一下用包含的方式实现相同的功能,下面是范例: 首先建立一个新工程,然后添加一个新的类模块(Class Module),类名称设定为BaseClass。 然后在BaseClass中加入以下代码: Public Sub BaseSub() '虚拟特性,BaseSub在子类中实现 End Sub 然后添加两个类模块,类名称分别设定为ImpClass以及ImpClass2,然后在类的代码窗口中写入: Implements BaseClass '继承特性 上面这行代码说明类ImpClass以及ImpClass2实现类BaseClass。 在ImpClass窗口中加入以下代码: Private Sub BaseClass_BaseSub() '实现基类中的BaseSub方法 MsgBox "Hello. This is Imp. inherited from BaseClass " End Sub 在ImpClass2中加入以下代码: Private Sub BaseClass_BaseSub() MsgBox "Hello. This is Imp2. inherited from BaseClass " End Sub 完成了上面的类代码后,打开Form1,在上面添加一个CommandButton,在按钮的Click事件中 写入以下代码: Dim xImp As New ImpClass Dim xIMp2 As New ImpClass2 Dim xBase As BaseClass Set xBase = xImp '多态特性 xBase.BaseSub Set xBase = xIMp2 xBase.BaseSub Set xBase = Nothing Set xImp = Nothing Set xIMp2 = Nothing 运行程序,点击CommandButton,程序会先后弹出消息框,显示在ImpClass以及ImpClass2中设定的消息。 从上面的代码中可以看到VB中是如何实现面向对象的特性:继承、虚拟以及多态的。只是同诸如Java、C++、Object Pascal不同,VB将很多实现的细节隐藏了起来。14.按值传递和按引用传递,前者传递的是变量的一个副本,后者传递的是变量的内存地址中的值.15.便宜,实用,功能强大,可随便嵌入其他控件或api,以弥补了自身的不足,与vb极为相似,又拥有自身的独立属性及语法,比vb开发更便捷。并且中小企业,外资公司一般都用vba,并主要集中在excel和access上。16.简单用法用VB自带的外接程序管理器中的VB API Viewer工具,并浏览VB主目录下的Winapi子目录中的Win32api.txt文件高级用法使用Declare声明DLL过程
原创粉丝点击