面试经验---广州品高软件(java软件开发)

来源:互联网 发布:windows 2012 mmc 编辑:程序博客网 时间:2024/04/29 20:33

–由于本人不在广州当地上学,所以采取的是电话面试,说好的下午4点,结果由于面试官们(两个)面试上一个同学面的比较久,就一直等到4点45,然后5点开始正式面试,由于自己学的很菜,材料工程,面Java软件开发,刚开始说的是面试1小时,结果最终半小时不到,有些受打击!现把相关面试知识点梳理一遍:

  1. Google和Oracle(sun)公司的最近java之争了解吗?对java的未来发展趋势有什么看法?
    说实话,我还真不怎么了解这个新闻,只听说过有android之争,怎么说是java,并且还是最近的?就说不怎么了解,回来一查还是2010年的新闻,好吧…java的未来发展趋势:http://www.jianshu.com/p/0b86a5d24d4a
    模块化、物联网的支持、大数据、框架
  2. 北上广深的工作压力你怎么看?自行发挥
  3. Java和C++的区别和联系?
    指针、垃圾回收、头文件、结构、联合、操作符重载、虚基类等

    Java与C++的主要不同点在于多继承,在java中,取而代之的是简单的接口概念,以及java的元类(metaClass)模型。—Java Core

  4. 为什么最终选择Java开发而不是C++开发?
    我答的是C++偏向于底层开发,自己对底层不太熟悉,Java比较容易上手!或许应该从Java的特性答:
      (1)简单性(语法、支持开发在小型机器上独立运行的软件)。
      (2)面向对象
      (3)网络技能:Java有一个扩展的例程库,用于处理像HTTP和FTP子类的TCP/IP协议。java应用城西能够通过URL打开和访问网路搜啊和那个的对象,其便捷程度就好像访问本地文件一样。
      (4) 健壮性:Java编译能能够检测许多在其他语言中仅在运行时刻才能够检测出来的问题。不会存在内存分配的错误,也不必防范内存泄漏。
      (5)安全性:
      从一开始,Java就设计成能够防范各种攻击:
      1>运行时堆栈溢出
      2>在自己的处理空间之外破坏内存
      3>未经授权读写文件
      (6)体系结构中立:Java编译器通过生成与特性的计算机体系结构无关的字节码指令来实现这一特性。—-导致速度慢
      【虚拟机有一个选项,可以将使用最频繁的字节码序列翻译成机器码,这一过程被称为即时编译】—即时编译器
      (7) 可移植性:没有依赖具体实现的地方,不像C语言,不同位数的系统的数据类型的长度还不一样。
      (8) 解释型:Java解释器可以在任何移植了解释器的机器上执行java字节码
      (9) 高性能:字节码可以(在运行时刻)快速地翻译成运行这个应用程序特定CPU的机器码。
      (10)多线程: 多线程可以带来更好的交互响应和实时行为
      (11)动态性:库中可以自由地添加新方法和实例变量。

  5. C++编译后可以生成.exe文件,然后在哪里(指的是安装了Windows系统的计算机上)都可以运行,而Java还要搭建开发环境(JDK,JRE,JVM),你不觉得麻烦么?
    这个我还真不知道怎么回答…..貌似C++开发的应用软件也需要相应的环境搭建吧?

  6. Jdk和虚拟机JVM的关系?
    http://playkid.blog.163.com/blog/static/56287260201372113842153/
      (1)JDK(Java Development Kit)是针对Java开发员的产品,是整个Java的核心,包括了Java运行环境JRE、Java工具和Java基础类库。
      (2)Java Runtime Environment(JRE)是运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。
      (3)JVM是Java Virtual Machine(Java虚拟机)的缩写
    就是我们常说的java虚拟机,它是整个java实现跨平台的最核心的部分,所有的java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行。
      也就是说class并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释给本地系统执行。
      只有JVM还不能成class的执行,因为在解释class的时候JVM需要调用解释所需要的类库lib,而jre包含lib类库。
      JVM屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。
      

  7. Servlet和JSP的区别和联系
      (1)Servlet是一个特殊的java程序,它运行于服务器的JVM中,能够依靠服务器的支持向浏览器提供显示信息。
      (2)JSP本质上是servlet的一种简易形式,JSP会被服务器处理成一个类似于Servlet的Java程序,可以简化页面的生成。
      (3)Servlet和JSP的最主要的不同在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML分离开来。而JSP的情况是Java和HTML能够组合成一个扩展名为.JSP的文件
      (4)JSP侧重于视图,Servlet侧重于逻辑控制。
      这里写图片描述
  8. 你的项目用HTML可以实现了哇,为何还要使用Servlet,JSP,JS,Oracle?
       HTML只适合做静态网页,而我的项目还涉及到与用户交互(动态)

  9. 如何理解HTML,和JavaScript的区别
      HTML是用来描述网页的一种标记语言。
      (1)网页文件本身是一种文本文件,通过在文本文件中添加标记,可以告诉浏览器如何显示其中的内容(如:文字如何处理,画面如何安排,图片如何显示等)。
      (2)HTML之所以称为超文本标记语言,是因为文本中包含了所谓“超链接”点。超文本(Hypertext)是用超链接的方法,将各种不同空间的文字信息组织在一起的网状文本。
      Javascript是一种基于对象(Object)和事件驱动(Event Driven)并具有安全性能的脚本语言。
      (1)使用它的目的是与HTML超文本标记语言、Java脚本语言(Java小程序)一起实现在一个Web页面中链接多个对象,与Web客户交互作用。例如可以设置鼠标悬停效果,在客户端验证表单,创建定制的HTML页面,显示警告框,设置cookie等等。
      (2)网页中所有的对数据进行判断、操作以及向浏览者反馈信息的本地代码实现部分均是Javascript(当然也有其他的),这样既可以使网页更具交互性,给用户提供更令人兴奋的体验,同时减轻了服务器负担。

  10. AJAX了解吗(我还真不了解)

    AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。传统的网页(不使用 AJAX)如果需要更新内容,必须重载整个网页页面。—百度百科

  11. 为什么要用Spring MVC,直接用Servlet来实现不就可以了么?
    Spring MVC基于模型-视图-控制器模式实现,它能够帮助你构建像Spring框架那样灵活和松耦合的Web应用程序。
    Servlet尽管也能够实现,但是感觉写出来的程序的层次不够清晰,而且代码显示出高耦合,代码冗余度高。(自己的一点感想)

  12. 你常用的Linux命令
    (1)查看进程的命令—ps
    ps -le or -aux :查看所有用户执行的进程的详细信息
    (2)软件的安装
    1>rpm
    rpm -ivh sudo-1.7.2p1-5.el5.i386.rpm 安装
    rpm -e sudo 卸载
    rpm -q sudo 查询软件包的安装
    2>yum:自动解决软件包的依赖关系,方便的软件包升级
    yum install 安装
    yum remove 卸载
    yum list 软件包查询
    yum check-update 升级

  13. Linux和Windows的区别
    http://www.2cto.com/os/201109/104835.html
    Linux系统在短短的几年之内就得到了非常迅猛的发展,这与Linux系统的良好特性是分不开的。Linux系统包含了UNIX系统的全部功能和特性,简单地说,Linux系统具有以下主要特性。
    (1)开放性
    是指系统遵循世界标准规范,特别是遵循开放系统互连(OSI)国际标准。凡遵循国际标准所开发的硬件和软件,都能彼此兼容,可方便地实现互连。

    (2)多用户
    是指系统资源可以被不同用户使用,每个用户对自己的资源(例如:文件、设备)有特定的权限,互不影响。Linux和Unix都具有多用户的特性。

    (3)多任务
    是现代计算机的最主要的一个特点。它是指计算机同时执行多个程序,而且各个程序的运行互相独立。Linux系统调度每一个进程平等地访问微处理器。由于CPU的处理速度非常快,其结果是,启动的应用程序看起来好像在并行运行。事实上,从处理器执行一个应用程序中的一组指令到Linux调度微处理器再次运行这个程序之间只有很短的时间延迟,用户是感觉不出来的。

    (4)良好的用户界面
    Linux向用户提供了两种界面:用户界面和系统调用。Linux的传统用户界面是基于文本的命令行界面,即shell,它既可以联机使用,又可存在文件上脱机使用。shell有很强的程序设计能力,用户可方便地用它编制程序,从而为用户扩充系统功能提供了更高级的手段。可编程Shell是指将多条命令组合在一起,形成一个Shell程序,这个程序可以单独运行,也可以与其他程序同时运行。
    系统调用给用户提供编程时使用的界面。用户可以在编程时直接使用系统提供的系统调用命令。系统通过这个界面为用户程序提供低级、高效率的服务。
    Linux还为用户提供了图形用户界面。它利用鼠标、菜单、窗口、滚动条等设施,给用户呈现一个直观、易操作、交互性强的友好的图形化界面。

    (5)设备独立性
    设备独立性是指操作系统把所有外部设备统一当作成文件来看待,只要安装它们的驱动程序,任何用户都可以象使用文件一样,操纵、使用这些设备,而不必知道它们的具体存在形式。
    具有设备独立性的操作系统,通过把每一个外围设备看作一个独立文件来简化增加新设备的工作。当需要增加新设备时、系统管理员就在内核中增加必要的连接。这种连接(也称作设备驱动程序)保证每次调用设备提供服务时,内核以相同的方式来处理它们。当新的及更好的外设被开发并交付给用户时,操作允许在这些设备连接到内核后,就能不受限制地立即访问它们。设备独立性的关键在于内核的适应能力。其他操作系统只允许一定数量或一定种类的外部设备连接。而设备独立性的操作系统能够容纳任意种类及任意数量的设备,因为每一个设备都是通过其与内核的专用连接独立进行访问。
    Linux是具有设备独立性的操作系统,它的内核具有高度适应能力,随着更多的程序员加入Linux编程,会有更多硬件设备加入到各种Linux内核和发行版本中。另外,由于用户可以免费得到Linux的内核源代码,因此,用户可以修改内核源代码,以便适应新增加的外部设备。

    (6)丰富的网络功能
    完善的内置网络是Linux一大特点。 Linux在通信和网络功能方面优于其他操作系统。其他操作系统没有如此紧密地和内核结合在一起的连接网络的能力,也没有内置这些联网特性的灵活性。而Linux为用户提供了完善的、强大的网络功能。
    1.支持Internet是其网络功能之一。Linux免费提供了大量支持Internet的软件,Internet是在Unix领域中建立并繁荣起来的,在这方面使用Linux是相当方便的,用户能用Linux与世界上的其他人通过Internet网络进行通信。
    2.文件传输是其网络功能之二。用户能通过一些Linux命令完成内部信息或文件的传输。
    3.Linux不仅允许进行文件和程序的传输,它还为系统管理员和技术人员提供了访问其他系统的窗口。通过这种远程访问的功能,一位技术人员能够有效地为多个系统服务,即使那些系统位于相距很远的地方。

    (7)可靠的系统安全
    Linux采取了许多安全技术措施,包括对读、写控制、带保护的子系统、审计跟踪、核心授权等,这为网络多用户环境中的用户提供了必要的安全保障。

    (8)良好的可移植性
    Linux可移植性是指将操作系统从一个平台转移到另一个平台使它仍然能按其自身的方式运行的能力。Linux是一种可移植的操作系统,能够在从微型计算机到大型计算机的任何环境中和任何平台上运行。可移植性为运行Linux的不同计算机平台与其他任何机器进行准确而有效的通信提供了手段,不需要另外增加特殊的和昂贵的通信接口。

  14. TCP/IP和HTTP协议的联系

    HTTP是TCP/IP的一层协议。如果你对这些网络协议还不熟悉,下面就提供一个非常简单的解释;TCP负责确保从一个网络节点向另一个网络节点发送的文件能作为一个完整的文件到达目的地。尽管在具体传送过程中这个文件可能会分解成小块传输。IP是一个底层协议,负责把数据块(数据包)沿路移动/路由到目的地。HTTP则是另一个网络协议(感觉应该是应用协议),有一些Web特定的特性,不过它要依赖于TCP/IP从一处向另一处完整地传送请求和响应。HTTP会话的结构是一个简单的请求/响应序列:浏览器发出请求,服务器做出响应。——-《Head First Servlet and JSP》

15.项目中数据库为什么要用Oracle而不是MySql,况且MySql还是开源免费?

0 0
原创粉丝点击