• 程序设计语言常见面试题


    本意用于考研复试,以下是博主自己整理,博主是大四本科生,不能保证内容完全正确,请辩证地看,如果有问题可以在评论区指出我再修改。 整理不易,我就不挂个二维码请游客付费了,如果可以的话,麻烦高抬贵手,点一下右下角的推荐吧! 

    面向对象与面向过程的区别

    1)面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用

    2)面向对象是把构成问题事务分解成各个对象,描述某一个事物做某件事情的行为,以功能来划分问题。

    例如五子棋,面向过程的设计思路就是首先分析问题的步骤:1、开始游戏,2、黑子先走,3、绘制画面,4、判断输赢,5、轮到白子,6、绘制画面,7、判断输赢,8、返回步骤2,9、输出最后结果。把上面每个步骤用分别的函数来实现,问题就解决了。

    而面向对象的设计则是从另外的思路来解决问题。整个五子棋可以分为 1、黑白双方,这两方的行为是一模一样的,2、棋盘系统,负责绘制画面,3、规则系统,负责判定诸如犯规、输赢等。第一类对象(玩家对象)负责接受用户输入,并告知第二类对象(棋盘对象)棋子布局的变化,棋盘对象接收到了棋子的变化就要负责在屏幕上面显示出这种变化,同时利用第三类对象(规则系统)来对棋局进行判定。

    面向对象的三个特征

    三大特性是:封装,继承,多态

    现实世界中任何实体都可以看作是对象,对象之间通过消息互相作用。

    l  封装:把客观事物封装成抽象的类,对外界实现接口调用,可以隐藏内部方法实现细节。比如:计算机语言加减乘除,我们只需提供数字与符号即可得出结果。具体怎么计算我们不知道底层实现。

    l  继承:让一个对象在无需重新编写原来的类的情况下拥有另一个对象的属性和方法,同时该对象可以拥有自己独有的属性和方法。例如:狗和人都继承自动物类,都有身高和体重等属性,都会吃饭、走路、睡觉等方法,但是人还可以说话。

    l  多态:让一个方法面对不同类型的对象做出不同的响应。例如:狗和人--->吃饭 ,狗吃饭不用工具,人吃饭要用筷子等工具。

    B/S和C/S的优缺点

    C/S(Client/Server):客户端/服务器结构。界面表示、事务处理逻辑放在客户端,服务端主要负责数据的存储管理,

    B/S(Browser/Server):浏览器/服务器结构,界面显示逻辑放在浏览器,事务处理逻辑则在Web Server。通常由Browser、Web Server、数据存储Server形成三层架构。

    1.   C/S优缺点

    (1) 优点:

    l  能充分发挥客户端PC的处理能力,具有较强的事务处理能力,能实现复杂的业务流程

    l  操作界面漂亮、形式多样,可以充分满足客户自身的个性化要求

    l  容易保证安全性,程序更注重流程

    (2) 缺点:

    l  需要专门的客户端安装程序,分布功能弱,快速部署安装和配置困难

    l  兼容性差,需要考虑运行平台,如操作系统版本

    l  开发、维护成本较高, 发生一次升级,则所有客户端的程序都需要更新。

    2.   B/S优缺点

    (1)优点:

    l  分布性强,客户端零维护,只要有网络、浏览器,就可以随时随地进行查询、浏览等业务处理。

    l  业务扩展简单方便,通过增加网页即可增加服务器功能

    l  维护简单方便,只需要改变网页,即可实现所有用户的同步更新

    (2)缺点:

    l  个性化特点明显降低,无法实现具有个性化的功能要求

    l  在跨浏览器上,BS架构不尽如人意

    l  在速度和安全性上需要花费巨大的设计成本

    l  功能弱化,难以实现传统模式下的特殊功能要求

    5. Java和C的区别

    1)内存管理

    在Java中,基本不用考虑内存的问题,如果想用一个对象,new一个就可以,这个过程的背后则是JRE为对象分类的一定内存,当JRE发现你不再使用这个对象的时候,他就会自动回收内存,也就是说只管借东西,不用管归还

    但是C则不同,如果你想用,你可以用malloc之类的方法申请内存,当你使用完了,需要自己把这块内存归还回去,也就是调用free方法来完成这个任务。由于需要显式的归还内存,因此当一个函数需要将一块内存返回给调用者的时候,问题就比较复杂了,不如面向对象和具有内存回收功能的Java那么直观了。

    2)面向对象

    Java的面向对象的特点很明显,而C则是一个地道的结构化语言。 Java中有一个字符串类String, 通过调用 String.length()就可以知道字符串的长度,但是在C语言中,则需要调用函数strlen(str)来得到字符串(字符数组)的长度。由于C不是面向对象的语言,也就没有this的概念,因此当使用一个与某个“东西”相关的函数时,就需要不厌其烦的将代表这个“东西”的变量作为参数传递进去。

    3)Java里面没有指针,不支持全局变量和结构体

    6、简述C语言中指针及其作用

    一个变量的地址称为该变量的指针

    一个专门用来存放另一个变量的指针的变量称为指针变量

    指针直接指向目标的存储地址,实现直接访问对象存储空间的功能。

    7、什么是预处理

    程序设计中的预处理(Preprocess)是在程序源代码被编译之前,由预处理器(Preprocessor)对程序源代码进行的处理。这个过程并不对程序的源代码进行解析,但它把源代码分割或处理成为特定的符号用来支持宏调用。

    预处理器的主要作用就是把通过预处理的内建功能对一个资源进行等价替换,最常见的预处理有:文件包含,条件编译、布局控制和宏替换4种。

    8、堆和栈

    l  栈内存:存储的是定义在方法中的都是局部变量,要先加载函数才能进行局部变量的定义,所以函数先进栈,然后再定义变量,变量有自己的作用域,一旦离开作用域,变量就会被释放。栈内存的更新速度很快,因为局部变量的生命周期都很短。

    l  堆内存:存放的是实体(对象),如果一个数据消失,这个实体也没有消失,还可以用,所以堆是不会随时释放的。堆里的实体虽然不会被释放,但是会被当成垃圾,Java有垃圾回收机制不定时的收取。

    9、Java的特点

    1. 面向对象 
    2. 分布式:Java包括一个支持HTTP和FTP等基于TCP/IP协议的子库。因此,Java应用程序可凭借URL打开并访问网络上的对象
    3. 可移植的 最大的功臣就是JVM的技术。大多数编译器产生的目标代码只能运行在一种CPU上(如Intel的x86系列) 但JAVA编译器就不同了。JAVA编译器产生的目标代码(J-Code) 是针对一种并不存在的CPU--JAVA虚拟机(JAVA Virtual Machine),而不是某一实际的CPU。JAVA虚拟机能掩盖不同CPU之间的差别,同体系结构无关的特性使得Java应用程序可以在配备了Java解释器和运行环境的任何计算机系统上运行,
    4. 多线程 多线程功能使得在一个程序里可同时执行多个小任务。
    5. Java使用Unicode作为它的标准字符,这项特性使得Java的程序能在不同语言的平台上都能撰写和执行

     

    10、软件生命周期

    可行性研究->需求分析->软件设计(概要设计和详细设计)->编码->软件测试->软件维护

    11、软件过程模型

    1) 瀑布模型:瀑布模型把软件开发过程划分成若干阶段,每个阶段的任务相对独立,在软件生存期的每个阶段都采用科学的管理技术和良好的方法与技术,而且每个阶段结束之前,都从技术和管理两个角度进行严格的审查,经确认之后才开始下一阶段的工作。是一种线性开发模型,具有不可回溯性。适用于需求发送变化少,并且开发人员可以一次性获取全部需求的开发。

    优点:模型简单,执行容易

    缺点:无法适应变更

    2) 快速原型:快速建立一个能反映用户主要需求的原型系统,让用户在计算机上试用它,用户试用原型系统后提出修改意见,开发人员按照用户的意见快速修改原型系统。直到原型系统满足用户要求。适用于已有产品或产品原型(样品),只需客户化的工程项目。

    3) 增量模型:把待开发的软件系统模块化,将每个模块作为一个增量组件,从而分批次地分析、设计、编码和测试这些增量组件。开发人员不需要一次性地把整个软件产品提交给用户,而是可以分批次地进行提交,是一个递增式的过程。

    优点:降低了软件开发的风险,开发顺序灵活。

    4) 螺旋模型:兼顾了快速原型的迭代特征以及瀑布模型的系统化与严格监控,强调了其他模型所忽视的风险分析。螺旋模型采用一种周期性的方法来进行系统开发。在每个项目阶段使用瀑布模型法。这种模型的每一个周期都包括需求定义、风险分析、工程实现和评审4个阶段,由这4个阶段进行迭代。软件开发过程每迭代一次,软件开发又前进一个层次。适用于风险较大的大型软件项目开发                       

    12、黑盒测试

      黑盒测试是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用,在测试时,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数锯而产生正确的输出信息,

     

    13、白盒测试

      白盒测试是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作.

    在这个国度中,必须不停地奔跑,才能使你保持在原地。如果想要寻求突破,就要以两倍现在速度奔跑!
  • 相关阅读:
    用Eclipse+MyEclipse开发struts的一个经典的实例(转)
    TOMCAT配置虚拟目录
    翻动100万级的数据(自定义的MSSQL分页查询过程)
    MyEclipse Hibernate 快速入门中文版
    微软提供的数据访问组件SqlHelper
    Java内存管理(一、内存分配)
    使用commonlogging与log4j打印日志,发现版本冲突
    Java内存管理(二、Java垃圾回收)
    初探java内存机制_堆和栈
    关于单CPU,多CPU上的原子操作
  • 原文地址:https://www.cnblogs.com/yuxiaoba/p/8646208.html
Copyright © 2020-2023  润新知