❶ 想面试java开发岗位,请问过来人要准备的专业面试题都有哪些
每个公司的面试题都是不一样的,但是技术类的都差不多,我给你简单说几个技术类的,具体的Java免回题你可以去扣丁 学堂看一下,有不少关于Java面试题及Java面试须知的文章。
1.Java是从( )语言改进重新设计。
A.Ada B.C++ C.Pasacal D.BASIC 答案:B
2.下列语句哪一个正确( )
A. Java程序经编译后会产生machine code
B. Java程序经编译后会产生byte code
C. Java程序经编译后会产生DLL
D. 以上都不正确答案:B
3.下列说法正确的有( )
A. class中的constructor不可省略
B. constructor必须与class同名,但方法不能与class同名
C. constructor在一个对象被new时执行
D. 一个class只能定义一个constructor 答案:C
4.提供Java存取数据库能力的包是( )
A.java.sql B.java.awt C.java.lang D.java.swing 答案:A
5.下列运算符合法的是( )
A.&& B.<> C.if D.:= 答案:A
6.执行如下程序代码
a=0;c=0;
do{
--c;
a=a-1;
}while(a>0);
后,C的值是( )
A.0 B.1 C.-1 D.死循环答案:C
7.下列哪一种叙述是正确的( )
A. abstract修饰符可修饰字段、方法和类
B. 抽象方法的body部分必须用一对大括号{ }包住
C. 声明抽象方法,大括号可有可无
D. 声明抽象方法不可写出大括号答案:D
8.下列语句正确的是( )
A. 形式参数可被视为local variable
B. 形式参数可被字段修饰符修饰
C. 形式参数为方法被调用时,真正被传递的参数
D. 形式参数不可以是对象答案:A
9.下列哪种说法是正确的( )
A. 实例方法可直接调用超类的实例方法
B. 实例方法可直接调用超类的类方法
C. 实例方法可直接调用其他类的实例方法
D. 实例方法可直接调用本类的类方法答案:D
❷ java基础面试题有哪些
下面是10道java基础面试题,后附答案
1.什么是 Java 虚拟机?为什么 Java 被称作是“平台无关的编程语言”?
Java 虚拟机是一个可以执行 Java 字节码的虚拟机进程。Java 源文件被编译成能被 Java 虚拟机执行的字节码文件。
Java 被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译。Java 虚拟机让这个变为可能,因为它知道底层硬件平台的指令长度和其他特性。
2.“static”关键字是什么意思?Java 中是否可以覆盖(override)一个 private 或者是static 的方法?
“static”关键字表明一个成员变量或者是成员方法可以在没有所属的类的实例变量的情况下被访问。
Java 中 static 方法不能被覆盖,因为方法覆盖是基于运行时动态绑定的,而 static 方法是编译时静态绑定的。static 方法跟类的任何实例都不相关,所以概念上不适用。
3.JDK 和 JRE 的区别是什么?
Java 运行时环境(JRE)是将要执行 Java 程序的 Java 虚拟机。它同时也包含了执行 applet 需要的浏览器插件。Java 开发工具包 (JDK)是完整的 Java 软件开发包,包含了 JRE,编译器和其他的工具(比如:JavaDoc,Java 调试器),可以让开发者开发、编译、执行 Java 应用程序。
4.是否可以在 static 环境中访问非 static 变量?
static 变量在 Java 中是属于类的,它在所有的实例中的值是一样的。当类被 Java 虚拟机载入的时候,会对 static 变量进行初始化。如果你的代码尝试不用实例来访问非 static 的变量,编译器会报错,因为这些变量还没有被创建出来,还没有跟任何实例关联上。
5.Java 支持的数据类型有哪些?什么是自动拆装箱?
Java 语言支持的 8 中基本数据类型是:
byte
short
int
long
float
double
boolean
char
自动装箱是 Java 编译器在基本数据类型和对应的对象包装类型之间做的一个转化。比如:把 int 转化成 Integer,double 转化成 double,等等。反之就是自动拆箱。
6.Java 支持多继承么?
不支持,Java 不支持多继承。每个类都只能继承一个类,但是可以实现多个接口。
7.Java 中,什么是构造函数?什么是构造函数重载?什么是复制构造函数?
当新对象被创建的时候,构造函数会被调用。每一个类都有构造函数。在程序员没有给类提供构造函数的情况下,Java 编译器会为这个类创建一个默认的构造函数。
Java 中构造函数重载和方法重载很相似。可以为一个类创建多个构造函数。每一个构造函数必须有它自己唯一的参数列表。
Java 不支持像 C++中那样的复制构造函数,这个不同点是因为如果你不自己写构造函数的情况下,Java 不会创建默认的复制构造函数。
8.Java 中的方法覆盖(Overriding)和方法重载(Overloading)是什么意思?
Java 中的方法重载发生在同一个类里面两个或者是多个方法的方法名相同但是参数不同的情况。与此相对,方法覆盖是说子类重新定义了父类的方法。方法覆盖必须有相同的方法名,参数列表和返回类型。覆盖者可能不会限制它所覆盖的方法的访问。
9.接口和抽象类的区别是什么?
Java 提供和支持创建抽象类和接口。它们的实现有共同点,不同点在于:
接口中所有的方法隐含的都是抽象的。而抽象类则可以同时包含抽象和非抽象的方法。
类可以实现很多个接口,但是只能继承一个抽象类
类如果要实现一个接口,它必须要实现接口声明的所有方法。但是,类可以不实现抽象类声明的所有方法,当然,在这种情况下,类也必须得声明成是抽象的。
抽象类可以在不提供接口方法实现的情况下实现接口。
Java 接口中声明的变量默认都是 final 的。抽象类可以包含非 final 的变量。
Java 接口中的成员函数默认是 public 的。抽象类的成员函数可以是 private, protected 或者是 public。
接口是绝对抽象的,不可以被实例化。抽象类也不可以被实例化,但是,如果它包含 main 方法的话是可以被调用的。
10.什么是值传递和引用传递?
对象被值传递,意味着传递了对象的一个副本。因此,就算是改变了对象副本,也不会影响源对象的值。
对象被引用传递,意味着传递的并不是实际的对象,而是对象的引用。因此,外部对引用对象所做的改变会反映到所有的对象上。
最后祝你面试顺利!
❸ Java基础面试题都有哪些
一般面试官都会让面试者回答哪些Java基础面试题啊?难不难啊? 针对这一系列的疑问,广州增城Java培训学校收集了部分Java基础面试题与大家分享,希望对各位参加了广州专业Java培训的学生,有一定的帮助! 一、Java基础知识 1.Java有那些基本数据类型,String是不是基本数据类型,他们有何区别。 2.字符串的操作: 写一个方法,实现字符串的反转,如:输入abc,输出cba 写一个方法,实现字符串的替换,如:输入bbbwlirbbb,输出bbbhhtccc。 3.数据类型之间的转换 如何将数值型字符转换为数字(Integer,Double) 如何将数字转换为字符 如何取小数点前两位,并四舍五入。 4.日期和时间 如何取得年月日,小时分秒 如何取得从1970年到现在的毫秒数 如何获取某个日期是当月的最后一天 如何格式化日期 5.数组和集合 6.文件和目录(I/O)操作 如何列出某个目录下的所有文件 如何列出某个目录下的所有子目录 判断一个文件或目录是否存在 如何读写文件 7.Java多态的实现(继承、重载、覆盖) 8.编码转换,怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串。 9.Java中访问数据库的步骤,Statement和PreparedStatement之间的区别。 10.找出下列代码可能存在的错误,并说明原因: 二、JSP&Servlet技术 1.描述JSP和Servlet的区别、共同点、各自应用的范围 2.在Web开发中需要处理HTML标记时,应做什么样的处理,要筛选那些字符(< > & “”) 3.在JSP中如何读取客户端的请求,如何访问CGI变量,如何确定某个Jsp文件的真实路径。 4.描述Cookie和Session的作用,区别和各自的应用范围,Session工作原理。 5.列出Jsp中包含外部文件的方式,两者有何区别。 6.说明Jsp中errorPage的作用,应用范围。 7.介绍在Jsp中如何使用JavaBeans。 8.简单介绍JSP的标记库 9.Jsp和Servlet中的请求转发分别如何实现。 三、J2EE相关知识 1.介绍J2EE、J2SE、J2SE的区别。 2.J2EE是一种技术还是一种平台,他提供了那些技术。 3.什么是Application Server,它有什么功能和优点。 4.简单介绍连接池的优点和原理。 5.Web.xml的作用 四、其他 1.Web安全性的考虑(表单验证、浏览器Basic方式的验证,应用程序的安全性,SSL,代码考虑) 2.简单介绍您所了解的MVC。 3.简单介绍所了解的XML。 4.文档和编码规范 5.Java中的分页、效率考虑。 6.简单介绍您所了解的structs。 Java面试题收藏: 1.xml在项目中的作用 2.s-EJB 与 e-EJB的区别 3.会话面的作用 4.cmp与bmp的优缺点 5.j2me程序的必需的几个部分 6.c/s与b/s的区别 7.构建一个connect pool然后再调用它, 8.j2ee平台与dotnet平台的区别 9.ejb的life cycle 10.session bean 和 entity bean的区别 11.ejb中的transaction机制 12.synchronized (生产者和消费) 13.String 和 StringBuffer 14.Serializable 15.MVC (Struts的工作流程) 16.什么是MDA 17.tcp与udp的区别 18.链表与散列表和数组的区别 19.堆和栈的区别 20.ejb的分类及区别 21.你对现在软件业以及国内软件业的看法 22.谈谈java多线程 23.谈谈文件加密技术 24.软件开发生命周期 25.路由协议种类及特点 26.java的awt和swing组件的GUI设计的关键 27.对于java流的认识 28.简单描述一下awt与swing区别。 29.简述java编程中事件处理模式。 30.你编写过applet吗?applet的安全权限如何?试列举java application或者applet中与servlet/jsp通信可以采用的方式。 31.简述逻辑操作(如&|)与条件操作(如&&||)的区别。
❹ java 面试题,如下,选择什么为什么
1、显然是第一种写法效率高。在日期格式比较时,内部都是转化为Long来比的,特殊情况下也有转化为int的,而第二种写法显然是字符串的比较,比int要慢几个级别。
2、在搜索引擎或数据库的比较中,能用布尔运算的不用数值运算,能用数值的不用字符串。
能用精确匹配的就不要用模糊匹配。
再想想吧。
❺ java常见的面试题和面试技巧 谁能告诉我 谢谢
如果说是一个企业急需招人,我想那就得多准备一些框架方面的知识,毕竟做项目是用的框架!下面进入主题:大概的流程是这样吧 框架——》Java基础——》数据库相关点——》页面注意技巧
一:框架——》
1,)Struts2是如何实现MVC的?M(模型):这个一般不由Struts来做V (视图):视图也不算struts的强项,但是struts提供优秀的标签来支持视图的展示,利用标签,可以将数据合理的展示给用户控制器:struts的重要功能,提供struts的过滤器,拦截用户的请求,查找struts配置文件,为其匹配一个对应的Action,这个Action负责调用模型,获得数据,然后对数据做部分处理,接着Action再将处理后的数据,为其选择一个视图进行输出。
2) Struts工作机制?为什么要使用Struts? 工作机制: Struts的工作流程: 在web应用启动时就会加载初始化ActionServlet,ActionServlet从struts-config.xml文件中读取配置信息,把它们存放到各种配置对象当ActionServlet接收到一个客户请求时,将执行如下流程. (1)检索和用户请求匹配的ActionMapping实例,如果不存在,就返回请求路径无效信息; (2)如果ActionForm实例不存在,就创建一个ActionForm对象,把客户提交的表单数据保存到ActionForm对象中; (3)根据配置信息决定是否需要表单验证.如果需要验证,就调用ActionForm的validate()方法; (4)如果ActionForm的validate()方法返回null或返回一个不包含ActionMessage的ActuibErrors对象, 就表示表单验证成功; (5)ActionServlet根据ActionMapping所包含的映射信息决定将请求转发给哪个Action,如果相应的Action实例不存在,就先创建这个实例,然后调用Action的execute()方法; (6)Action的execute()方法返回一个ActionForward对象,ActionServlet在把客户请求转发给ActionForward对象指向的JSP组件; (7)ActionForward对象指向JSP组件生成动态网页,返回给客户;为什么要用: JSP、Servlet、JavaBean技术的出现给我们构建强大的企业应用系统提供了可能。但用这些技术构建的系统非常的繁乱,所以在此之上,我们需要一个规则、一个把这些技术组织起来的规则,这就是框架,Struts便应运而生。基于Struts开发的应用由3类组件构成:控制器组件、模型组件、视图组件 Struts的validate框架是如何验证的? 在struts配置文件中配置具体的错误提示,再在FormBean中的validate()方法具体调用。
3)spring工作机制及为什么要用? 1.spring mvc请所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责负责对请求进行真正的处理工作。 2.DispatcherServlet查询一个或多个HandlerMapping,找到处理请求的Controller. 3.DispatcherServlet请请求提交到目标Controller 4.Controller进行业务逻辑处理后,会返回一个ModelAndView 5.Dispathcher查询一个或多个ViewResolver视图解析器,找到ModelAndView对象指定的视图对象 6.视图对象负责渲染返回给客户端。为什么用: AOP 让开发人员可以创建非行为性的关注点,称为横切关注点,并将它们插入到应用程序代码中。使用 AOP 后,公共服务 (比 如日志、持久性、事务等)就可以分解成方面并应用到域对象上,同时不会增加域对象的对象模型的复杂性。
IOC 允许创建一个可以构造对象的应用环境,然后向这些对象传递它们的协作对象。正如单词 倒置 所表明的,IOC 就像反 过来的 JNDI。没有使用一堆抽象工厂、服务定位器、单元素(singleton)和直接构造(straight construction),每一个对象都是用 其协作对象构造的。因此是由容器管理协作对象(collaborator)。
4)Hibernate工作原理及为什么要用? 原理: 1.读取并解析配置文件 2.读取并解析映射信息,创建SessionFactory 3.打开Sesssion 4.创建事务Transation 5.持久化操作 6.提交事务 7.关闭Session 8.关闭SesstionFactory为什么要用: 1. 对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。2. Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。他很大程度的简化DAO层的编码工作3. hibernate使用Java反射机制,而不是字节码增强程序来实现透明性。4. hibernate的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。它支持各种关系数据库,从一对一到多对多的各种复杂关系。2. Hibernate是如何延迟加载? 1. Hibernate2延迟加载实现:a)实体对象 b)集合(Collection)2. Hibernate3 提供了属性的延迟加载功能当Hibernate在查询数据的时候,数据并没有存在与内存中,当程序真正对数据的操作时,对象才存在与内存中,就实现了延迟加载,他节省了服务器的内存开销,从而提高了服务器的性能。3.Hibernate中怎样实现类之间的关系?(如:一对多、多对多的关系)类与类之间的关系主要体现在表与表之间的关系进行操作,它们都市对对象进行操作,我们程序中把所有的表与类都映射在一起,它们通过配置文件中的many-to-one、one-to-many、many-to-many。
5)Hibernate的一级缓存与二级缓存的区别?
一级缓存就是Session级别的缓存,一个Session做了一个查询操作,它会把这个操作的结果放在一级缓存中,如果短时间内这个session(一定要同一个session)又做了同一个操作,那么hibernate直接从一级缓存中拿,而不会再去连数据库,取数据。二级缓存就是SessionFactory级别的缓存,顾名思义,就是查询的时候会把查询结果缓存到二级缓存中,如果同一个sessionFactory创建的某个session执行了相同的操作,hibernate就会从二级缓存中拿结果,而不会再去连接数据库。(这个题想简答就可以了,但是如果想深入去多问几个问什么这里提供一个连接,写得较为详细:1)
另外一个关键点是:你要知道什么信息和什么操作,该调用什么级别的缓存!
6)如何优化Hibernate?(这个问题有些触及到这个框架的弱点了,那就得想办法应付)
1.使用双向一对多关联,不使用单向一对多 2.灵活使用单向一对多关联 3.不用一对一,用多对一取代 4.配置对象缓存,不使用集合缓存 5.一对多集合使用Bag,多对多集合使用Set 6. 继承类使用显式多态 7. 表字段要少,表关联不要怕多,自己再补充一点,上面说到的都是关于数据库设计 带来的优势,从而起到优化框架的效果,但是真正在实际操作中,我们只有尽量控制不使用懒加载“lazy
=true”,如果在涉及的尽量使用Hql语句
7)struts的核心是什么?(参考了这个回答:2)
FilterDispatcher也是Struts2的核心技术。FilterDispatcher核心控制器执行以下操作:(1)读取静态数据信息(2)决定需要转发或者导航的Action配置(3)创建Action的Context(4)创建Action代理(5)内存清理和性能优化拦截器:Interceptor 拦截器本身是一个普通的Java对象,它能动态拦截Action调用,在Action执行前后执行拦截器本身提供的各种个样的Web项目需求。 也可以阻止Action的执行,同时也可以提取Action中可以复用的部分。(1)在Action调用之前提供系统处理流程逻辑控制(2)和Action交互时,提供Ation执行时的一些初始信息(3)在Action结束后,一些事后的处理流程逻辑(4)修改Action中返回的Result信息(5)捕获异常栈是用ognl表达式存值的最初地方,即一个存值的栈 自己再补充一点:struts的标签库也算一个。
8)ssh 的工作流程(这个问题留作作业,它们之间的相互实现,相互调用从原理上理解就行了)
❻ JAVA常见面试题有什么
根据千锋JAVA面试宝典上说,JAVA程序员的面试问题大多是考框架,软件开发流流程等问题。
❼ 求:JAVA程序员面试题
Java
1. 关于Java的描述哪一个是错误的()
A. Java是一种解释性语言
B. B.Java是想对象的语言
C .Java通过不同硬件平台安装同一个JVM实现来实现的可移植性
D.Java可以通过API通用编译语言(如C或C++)编写的函数。
2.哪个不是Java关键字()
A.sizeof B.void C.const D. super
3. 哪个不是Java基本数据类型()
A.short B.Boolean C int D long
4.哪个方法名称满足JavaBean命名规范()
A. addData B deleItems C.getName D hasSetTitle
5.关于JVM,错误的是()
A.运行时要装载PC寄存器,堆,栈,方法区,运行时常量池等数据区。
B.类的装载有ClassLoader和它的子类来实现的。
C.Java启动,会生成JVM的一个实例。程序运行结束后该实例消失。
D.通过JDK提供的java指令可以让JVM直接执行.java文件。
6.下列哪些生命非法()
A.short x[] B. int[] a[][] C. long[] z D int y[]
7.执行Example.java正确的结果是()
public class Example{
public static void main(String number[]){
for(int i=1;i<number.length;i++)
{
System.out.printLn(number[i]+””);
}
}
}
Java Example 1 2 34 5<CR>
A. 1 2 3 B. 2 34 5 C. 2 34 D. 1 2 34 5 E.都不是
8.说出下列编译结果( )
Example .java
public class Example{
static int intArray[]=new int[15];
public ststaic void main(String args[]){
System.out.println(intArray[5]);
}
}
A.编译错误 B。运行时错误 C. 成功编译,输出为null D.成功编译,输出为0
9.说出下列编译结果( )
Example .java
public class Example{
public ststaic void main(String args[])
{
String s=new String[6];
printString(s[0]);
}
public void printString (String str)
{
System.out.println(str);
}
}
A.编译错误 B。运行时错误 C. 成功编译,输出为null D.成功编译,输出为0
10.说出下列编译结果( )
public class Example{
public ststaic void main(String args[])
{ string $=””;
for(int x=0;++x<args.length;){$+=args[x];}
System.out.println($);
}
}
输入java Example -A B<CR>
A. AB B.-AB C. B D.编译错误
11.下列关于垃圾回收正确的是()
A.开发者必须创建一个线程进行释放
B.垃圾收集将检查并释放不再使用的内存
C.垃圾收集允许程序开发者明确制定并立即释放该内存
D.垃圾回收能在期望时间释放被Java对象使用的内存
12.说出下列结果( )
public class NumberOperation{
public ststaic void main(String args[])
{
int var1=10;
int var2=20;
System.out.println(var1++ + var2++ +””+ ++var2);
}
}
A.10 20 B. 54 C. 30 22 D 11 21 22 E.编译错误
13.说出下列结果( )
public class DivisionTest{
public ststaic void main(String args[])
{
byte varA=-64;
byte varB=-4;
System.out.println(varA/varB+””+varA%varB);
}
}
A. 10 -4 B. 10 4 C 16 4 D 16 -4 E.编译错误
14. 说出下列运行结果( )
public class LogicOperation{
public ststaic void main(String args[])
{
boolean b1=true;
boolean b2=false;
boolean b3=true;
if((b1&b2)|(b2&b3)&b3)
{
System.out.println(“alpha”);
}
if((b1=false)|(b1&b3)|(b1|b2))
{
System.out.println(“beta”);
}
}
}
A.beta B. alpha C. alpha beta D 没有任何输出 E.编译错误
15.经过下面位移运算后,y值()
Int x=-32;
Int y>>>2;
A -4 B -8 C -16 D 以上都不是
16.哪些关键字用来对对象的枷锁,该标记使得对对象的访问是排他的()
A.transient B. serialize C synchronized D static
17.哪个修饰符不能添加在构造函数前面()
A.final B. protected C public D.private
18.数据类型转换下列是错误的是()
A.布尔类型和其他基本类型不能相互转换
B.字符型(char)可转换双精度(double)
C.从取值范围宽的类型向取值范围窄的类型转换时不会发生编译错误 ,但运行时数据会溢出。
D.基本类型的转换在赋值,方法调用或算术运算时都会发生且由系统自动完成。
19.经过强转换向,a,b为()
Short a=128;
byte b=(byte)a;
A.128 127 B. 128 -128 C -128 128 D 编译错误
20.说出下列运行结果( )
public class Example{
public ststaic void main(String args[])
{ int i=1;
int j=2;
if(j=i++)
{
System.out.println(i+”,”+j);
}else{
System.out.println(j+”,”+i);
}
}
}
A. 1,2 B.2,1 C. 2,3 D.2,2
21.关于继承哪个正确( )
A.再java中只允许单一继承
B.在java中以各类只能实现一个接口。
C.在java中不能同时继承一个类和一个接口
D.Java种类都可以继承并进行扩展。
简答题:
1. MVC中的M,V,C 分别指的是什么?
2. 常用的5个java设计模式
3. final,finally,fianalize有什么区别?
❽ java经典面试题
(4)以下代码中的两个sizeof用法有问题吗?
[C易] void UpperCase( char str[] ) // 将 str 中的小写字母转换成大写字母 { for( size_t i=0; i <sizeof(str)/sizeof(str[0]); ++i ) if( 'a' <=str[i] && str[i] <='z' ) str[i] -= ('a'-'A' ); } char str[] = "aBcDe"; cout < < "str字符长度为: " < < sizeof(str)/sizeof(str[0]) < < endl; UpperCase( str ); cout < < str < < endl; 答案:函数内的sizeof有问题。根据语法,sizeof如用于数组,只能测出静态数组的大小,无法检测动态分配的或外部数组大小。函数外的str是一个静态定义的数组,因此其大小为6,因为还有'\0',函数内的str实际只是一个指向字符串的指针,没有任何额外的与数组相关的信息,因此sizeof作用于上只将其当指针看,一个指针为4个字节,因此返回4。
(5)一个32位的机器,该机器的指针是多少位答案:
指针是多少位只要看地址总线的位数就行了。80386以后的机子都是32的数据总线。所以指针的位数就是4个字节了。
6。main() { int a[5]={1,2,3,4,5}; int *ptr=(int *)(&a+1); printf("%d,%d",*(a+1),*(ptr-1)); } 答案:2。5 *(a+1)就是a[1],*(ptr-1)就是a[4],执行结果是2,5 &a+1不是首地址+1,系统会认为加一个a数组的偏移,是偏移了一个数组的大小(本例是5个int) int *ptr=(int *)(&a+1); 则ptr实际是&(a[5]),也就是a+5 原因如下: &a是数组指针,其类型为 int (*)[5]; 而指针加1要根据指针类型加上一定的值,不同类型的指针+1之后增加的大小不同 a是长度为5的int数组指针,所以要加 5*sizeof(int) 所以ptr实际是a[5] 但是prt与(&a+1)类型是不一样的(这点很重要) 所以prt-1只会减去sizeof(int*) a,&a的地址是一样的,但意思不一样,a是数组首地址,也就是a[0]的地址,&a是对象(数组)首地址,a+1是数组下一元素的地址,即a[1],&a+1是下一个对象的地址,即a[5].
7。请问以下代码有什么问题: int main() { char a; char *str=&a; strcpy(str,"hello"); printf(str); return 0; } 答案:没有为str分配内存空间,将会发生异常问题出在将一个字符串复制进一个字符变量指针所指地址。虽然可以正确输出结果,但因为越界进行内在读写而导致程序崩溃。
8。char* s="AAA"; printf("%s",s); s[0]='B'; printf("%s",s); 有什么错?答案:"AAA"是字符串常量。s是指针,指向这个字符串常量,所以声明s的时候就有问题。 cosnt char* s="AAA"; 然后又因为是常量,所以对是s[0]的赋值操作是不合法的。
9。写一个“标准”宏,这个宏输入两个参数并返回较小的一个。答案:.#define Min(X, Y) ((X)>(Y)?(Y):(X)) //结尾没有‘;’
10。嵌入式系统中经常要用到无限循环,你怎么用C编写死循环。答案:while(1){}或者for(;;)
11。关键字static的作用是什么?答案:定义静态变量
12。关键字const有什么含意?答案:表示常量不可以修改的变量。
13。关键字volatile有什么含意?并举出三个不同的例子?答案:提示编译器对象的值可能在编译器未监测到的情况下改变。
14。int (*s[10])(int) 表示的是什么啊?答案:int (*s[10])(int) 函数指针数组,每个指针指向一个int func(int param)的函数。
15。有以下表达式: int a=248; b=4;int const c=21;const int *d=&a; int *const e=&b;int const *f const =&a; 请问下列表达式哪些会被编译器禁止?为什么?答案:*c=32;d=&b;*d=43;e=34;e=&a;f=0x321f; *c 这是个什么东东,禁止 *d 说了是const,禁止 e = &a 说了是const 禁止 const *f const =&a; 禁止
16交换两个变量的值,不使用第三个变量。即a=3,b=5,交换之后a=5,b=3; 答案:有两种解法, 一种用算术算法, 一种用^(异或) a = a + b; b = a - b; a = a - b; or a = a^b;// 只能对int,char.. b = a^b; a = a^b; or a ^= b ^= a;
17.c和c++中的struct有什么不同?答案:c和c++中struct的主要区别是c中的struct不可以含有成员函数,而c++中的struct可以。c++中struct和class的主要区别在于默认的存取权限不同,struct默认为public,而class默认为private
18.#include <stdio.h> #include <stdlib.h> void getmemory(char *p) { p=(char *) malloc(100); strcpy(p,"hello world"); } int main( ) { char *str=NULL; getmemory(str); printf("%s/n",str); free(str); return 0; } 答案:程序崩溃,getmemory中的malloc 不能返回动态内存, free()对str操作很危险
19.char szstr[10]; strcpy(szstr,"0123456789"); 产生什么结果?为什么?答案: 长度不一样,会造成非法的OS
20.列举几种进程的同步机制,并比较其优缺点。答案: 原子操作信号量机制 自旋锁 管程,会合,分布式系统
21.进程之间通信的途径答案:共享存储系统消息传递系统管道:以文件系统为基础
22.进程死锁的原因答案:资源竞争及进程推进顺序非法
23.死锁的4个必要条件答案:互斥、请求保持、不可剥夺、环路
24.死锁的处理答案:鸵鸟策略、预防策略、避免策略、检测与解除死锁
25. 操作系统中进程调度策略有哪几种?答案:FCFS(先来先服务),优先级,时间片轮转,多级反馈
26.类的静态成员和非静态成员有何区别?答案:类的静态成员每个类只有一个,非静态成员每个对象一个
27.纯虚函数如何定义?使用时应注意什么?答案:virtual void f()=0; 是接口,子类必须要实现
28.数组和链表的区别答案:数组:数据顺序存储,固定大小连表:数据可以随机存储,大小可动态改变
29.ISO的七层模型是什么?tcp/udp是属于哪一层?tcp/udp有何优缺点?答案:应用层表示层会话层运输层网络层物理链路层物理层 tcp /udp属于运输层 TCP 服务提供了数据流传输、可靠性、有效流控制、全双工操作和多路复用技术等。与 TCP 不同, UDP 并不提供对 IP 协议的可靠机制、流控制以及错误恢复功能等。由于 UDP 比较简单, UDP 头包含很少的字节,比 TCP 负载消耗少。 tcp: 提供稳定的传输服务,有流量控制,缺点是包头大,冗余性不好 udp: 不提供稳定的服务,包头小,开销小
30:(void *)ptr 和 (*(void**))ptr的结果是否相同?其中ptr为同一个指针答案:.(void *)ptr 和 (*(void**))ptr值是相同的
31:int main() { int x=3; printf("%d",x); return 1; } 问函数既然不会被其它函数调用,为什么要返回1?答案:mian中,c标准认为0表示成功,非0表示错误。具体的值是某中具体出错信息
32,要对绝对地址0x100000赋值,我们可以用 (unsigned int*)0x100000 = 1234; 那么要是想让程序跳转到绝对地址是0x100000去执行,应该怎么做?答案:*((void (*)( ))0x100000 ) ( ); 首先要将0x100000强制转换成函数指针,即: (void (*)())0x100000 然后再调用它: *((void (*)())0x100000)(); 用typedef可以看得更直观些: typedef void(*)() voidFuncPtr; *((voidFuncPtr)0x100000)();
33,已知一个数组table,用一个宏定义,求出数据的元素个数答案:#define NTBL #define NTBL (sizeof(table)/sizeof(table[0]))
34。线程与进程的区别和联系? 线程是否具有相同的堆栈? dll是否有独立的堆栈? 答案:进程是死的,只是一些资源的集合,真正的程序执行都是线程来完成的,程序启动的时候操作系统就帮你创建了一个主线程。每个线程有自己的堆栈。 DLL中有没有独立的堆栈,这个问题不好回答,或者说这个问题本身是否有问题。因为DLL中的代码是被某些线程所执行,只有线程拥有堆栈,如果DLL中的代码是EXE中的线程所调用,那么这个时候是不是说这个DLL没有自己独立的堆栈?如果DLL中的代码是由DLL自己创建的线程所执行,那么是不是说DLL有独立的堆栈?以上讲的是堆栈,如果对于堆来说,每个DLL有自己的堆,所以如果是从DLL中动态分配的内存,最好是从DLL中删除,如果你从DLL中分配内存,然后在EXE中,或者另外一个DLL中删除,很有可能导致程序崩溃
35。unsigned short A = 10; printf("~A = %u\n", ~A); char c=128; printf("c=%d\n",c); 输出多少?并分析过程答案:第一题,~A =0xfffffff5,int值为-11,但输出的是uint。所以输出4294967285 第二题,c=0x10,输出的是int,最高位为1,是负数,所以它的值就是0x00的补码就是128,所以输出-128。这两道题都是在考察二进制向int或uint转换时的最高位处理。
(二)
1. -1,2,7,28,,126请问28和126中间那个数是什么?为什么?答案:第一题的答案应该是4^3-1=63 规律是n^3-1(当n为偶数0,2,4) n^3+1(当n为奇数1,3,5)
2.用两个栈实现一个队列的功能?要求给出算法和思路!答案:设2个栈为A,B, 一开始均为空. 入队: 将新元素push入栈A; 出队: (1)判断栈B是否为空; (2)如果不为空,则将栈A中所有元素依次pop出并push到栈B; (3)将栈B的栈顶元素pop出;这样实现的队列入队和出队的平摊复杂度都还是O(1), 比上面的几种方法要好。
3.在c语言库函数中将一个字符转换成整型的函数是atol()吗,这个函数的原型是什么?答案:函数名: atol 功能: 把字符串转换成长整型数用法: long atol(const char *nptr); 程序例: #include <stdlib.h> #include <stdio.h> int main(void) { long l; char *str = "98765432"; l = atol(lstr); printf("string = %s integer = %ld\n", str, l); return(0); }
4。对于一个频繁使用的短小函数,在C语言中应用什么实现,在C++中应用什么实现? 答案:c用宏定义,c++用inline
5。直接链接两个信令点的一组链路称作什么? 答案:PPP点到点连接
7。软件测试都有那些种类? 答案:黑盒:针对系统功能的测试 白合:测试函数功能,各函数接口
8。确定模块的功能和模块的接口是在软件设计的那个队段完成的? 答案:概要设计阶段
9。enum string { x1, x2, x3=10, x4, x5, }x; 问x;答案:取值在0。1。10。11。12中的一个
10。unsigned char *p1; unsigned long *p2; p1=(unsigned char *)0x801000; p2=(unsigned long *)0x810000; 请问p1+5= ; p2+5= ; 答案:801005; 810014。不要忘记了这个是16进制的数字,p2要加20变为16进制就是14 选择题: 1.Ethternet链接到Internet用到以下那个协议? A.HDLC;B.ARP;C.UDP;D.TCP;E.ID 2.属于网络层协议的是: A.TCP;B.IP;C.ICMP;D.X.25 3.Windows消息调度机制是: A.指令队列;B.指令堆栈;C.消息队列;D.消息堆栈; 答案:b,a,c
四.找错题:
1.请问下面程序有什么错误? int a[60][250][1000],i,j,k; for(k=0;k <=1000;k++) for(j=0;j <250;j++) for(i=0;i <60;i++) a[i][j][k]=0; 答案:把循环语句内外换一下
2。以下是求一个数的平方的程序,请找出错误: #define SQUARE(a) ((a)*(a)) int a=5; int b; b=SQUARE(a++); 答案:这个没有问题,s(a++),就是((a++)×(a++))唯一要注意的就是计算后a=7了 3。typedef unsigned char BYTE int examply_fun(BYTE gt_len; BYTE *gt_code) { BYTE *gt_buf; gt_buf=(BYTE *)MALLOC(Max_GT_Length); ...... if(gt_len>Max_GT_Length) { return GT_Length_ERROR; } ....... } 答案:要释放内存问答题: 1.IP Phone的原理是什么? 答案:IPV6 2.TCP/IP通信建立的过程怎样,端口有什么作用?答案:三次握手,确定是哪个应用程序使用该协议(三)
1、局部变量能否和全局变量重名?答案:能,局部会屏蔽全局。要用全局变量,需要使用"::" 局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内
2、如何引用一个已经定义过的全局变量?答案:extern 可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变理,假定你将那个变写错了,那么在编译期间会报错,如果你用extern方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错
3、全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么?答案:可以,在不同的C文件中以static形式来声明同名全局变量。可以在不同的C文件中声明同名的全局变量,前提是其中只能有一个C文件中对此变量赋初值,此时连接不会出错
4、语句for( ;1 ;)有什么问题?它是什么意思?答案:和while(1)相同。
5、do……while和while……do有什么区别?答案:前一个循环一遍再判断,后一个判断以后再循环。
6、请写出下列代码的输出内容#include <stdio.h> main() { int a,b,c,d; a=10; b=a++; c=++a; d=10*a++; printf("b,c,d:%d,%d,%d",b,c,d); return 0; } 答案:10,12,120 a=10; b=a++;//a=11 b=10 c=++a;//a=12 c=12 d=10*a++;//a=13 d=120
高级题
1、static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?
答案:全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。而静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。从以上分析可以看出,把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围。 static函数与普通函数作用域不同。仅在本文件。只在当前源文件中使用的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定义。对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件 static全局变量与普通的全局变量有什么区别:static全局变量只初使化一次,防止在其他文件单元中被引用; static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一次依据上一次结果值; static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝
2、程序的局部变量存在于()中,全局变量存在于()中,动态申请数据存在于()中。
答案:栈;静态区;堆 3、设有以下说明和定义: typedef union {long i; int k[5]; char c;} DATE; struct data { int cat; DATE cow; double dog;} too; DATE max; 则语句 printf("%d",sizeof(too)+sizeof(max));的执行结果是:______ 答案:DATE是一个union, 变量公用空间. 里面最大的变量类型是int[5], 占用20个字节. 所以它的大小是20 data是一个struct, 每个变量分开占用空间. 依次为int4 + DATE20 + double8 = 32. 所以结果是 20 + 32 = 52. 当然...在某些16位编辑器下, int可能是2字节,那么结果是 int2 + DATE10 + double8 = 20
4、队列和栈有什么区别?
答案:队列先进先出,栈后进先出÷
5、这道题目出错了,这里就不写上了。
6、已知一个单向链表的头,请写出删除其某一个结点的算法,要求,先找到此结点,然后删除。答案:slnodetype *Delete(slnodetype *Head,int key){}中if(Head->number==key) { Head=Pointer->next; free(Pointer); break; } Back = Pointer; Pointer=Pointer->next; if(Pointer->number==key) { Back->next=Pointer->next; free(Pointer); break; } void delete(Node* p) { if(Head = Node) while(p) }
7、请找出下面代码中的所以错误说明:以下代码是把一个字符串倒序,如“abcd”倒序后变为“dcba”
1、#include"string.h" 2、main() 3、{ 4、 char*src="hello,world"; 5、 char* dest=NULL; 6、 int len=strlen(src); 7、 dest=(char*)malloc(len); 8、 char* d=dest; 9、 char* s=src[len]; 10、 while(len--!=0) 11、 d++=s--; 12、 printf("%s",dest); 13、 return 0; 14、} 答案:还要加上#include <stdio.h> int main(){ char* src = "hello,world"; int len = strlen(src); char* dest = (char*)malloc((len+1)*sizeof(char)); //要为\0分配一个空间 char* d = dest; char* s = &src[len-1]; //指向最后一个字符 while( len-- != 0 ) *d++=*s--; *d = 0; //尾部要加\0 printf("%s\n",dest); free(dest);// 使用完,应当释放空间,以免造成内存汇泄露 return 0; } 华为笔试题(3) 2006-09-29 19:41
一、判断题(对的写T,错的写F并说明原因,每小题4分,共20分)
1、有数组定义int a[2][2]={{1},{2,3}};则a[0][1]的值为0。( 正确)
2、int (*ptr) (),则ptr是一维数组的名字。(错误 int (*ptr) ();定义一个指向函数的指针变量 )
3、指针在任何情况下都可进行>, <,>=, <=,==运算。( 错误 )
4、switch(c) 语句中c可以是int ,long,char ,float ,unsigned int 类型。( 错,不能用实形)
二、填空题(共30分)
1、在windows下,写出运行结果,每空2分,共10分。 char str[ ]= "Hello"; char *p=str; int n=10; sizeof(str)=( ) sizeof(p)=( ) sizeof(n)=( ) void func(char str[100]){ } sizeof(str)=( ) 答案:6,4,4,4, 具体解释请参看我的空间里的“C/C++程序员应聘试题剖析”
2、void getmemory(char **p, int num) { *p=(char *) malloc(num);} void test(void) { char *str=NULL; getmemory(&str,100); strcpy(str,"hello"); printf(str); } 运行test函数有什么结果?( )10分 答案:输出hello,但是发生内存泄漏。
3、设int arr[]={6,7,8,9,10}; int *ptr=arr; *(ptr++)+=123; printf("%d,%d",*ptr,*(++ptr)); ( ) 10分答案:8,
8。这道题目的意义不大,因为在不同的编译器里printf的参数的方向是不一样的,在vc6.0下是从有到左,这里先*(++ptr) 后*pt,于是结果为8,8
三、编程题(第一小题20,第二小题30分)
1、 不使用库函数,编写函数int strcmp(char *source, char *dest) 相等返回0,不等返回-1;
答案:一、 int strcmp(char *source, char *dest) { assert((source!=NULL)&&(dest!=NULL)); int i,j; for(i=0; source[i]==dest[i]; i++) { if(source[i]=='\0' && dest[i]=='\0') return 0; else return -1; } } 答案:二、 int strcmp(char *source, char *dest) { while ( (*source != '\0') && (*source == *dest)) { source++; dest++; } return ( (*source) - (*dest) ) ? -1 : 0; }
2、 写一函数int fun(char *p)判断一字符串是否为回文,是返回1,不是返回0,出错返回-1 答案:一、 int fun(char *p) { if(p==NULL) return -1; else { int length = 0; int i = 0; int judge = 1; length = strlen(p); for(i=0; i <length/2; i++) { if(p[i]!=p[length-1-i]) judge = 0; break; } if(judge == 0) return 0; else return 1; } } 答案:二、 int fun(char *p){ int len = strlen(p) - 1; char *q = p + len; if (!p) return -1; while (p < q) { if ((*p++) != (*q--)) return 0; } return 1;}
1.在OSI 7 层模型中,网络层的功能有( ) A.确保数据的传送正确无误 B.确定数据包如何转发与路由 C.在信道上传送比特流 D.纠错与流控
2.FDDI 使用的是___局域网技术。( ) A.以太网; B.快速以太网; C.令牌环; D.令牌总线。
3.下面那种LAN 是应用CSMA/CD协议的() A.令牌环 B.FDDI C.ETHERNET D.NOVELL
4.TCP 和UDP 协议的相似之处是 ( ) A.面向连接的协议 B.面向非连接的协议 C.传输层协议 D.以上均不对 5.应用程序PING 发出的是___报文.( ) A.TCP 请求报文。 B.TCP 应答报文。 C.ICMP 请求报文。 D.ICMP 应答报文。
6.以下说法错误的是(多) ( ) A.中继器是工作在物理层的设备 B.集线器和以太网交换机工作在数据连路层 C.路由器是工作在网络层的设备 D.桥能隔离网络层广播
7.当桥接收的分组的目的MAC地址在桥的映射表中没有对应的表项时,采取的策略是( ) A.丢掉该分组 B.将该分组分片 C.向其他端口广播该分组 D.以上答案均不对
8.LAN Switch 在网络层次模型中的地位( ) A.物理层 B.链路层 C.网络层 D.以上都不是
9.小于___的TCP/UDP端口号已保留与现有服务一一对应,此数字以上的端口号可自由分配。( ) A.199 B.100 C.1024 D.2048
10.当一台主机从一个网络移到另一个网络时,以下说法正确的是 ( ) A.必须改变它的IP 地址和MAC 地址 B.必须改变它的IP 地址,但不需改动MAC 地址 C.必须改变它的MAC 地址,但不需改动IP 地址 D.MAC 地址.IP 地址都不需改动答案:1.B; 2.C; 3.C; 4.C; 5.C; 6.BD; 7.C; 8.B; 9.C; 10.B.
华为笔试题(4) 2006-09-30 13:00
1. 找错 void test1() { char string[10]; char* str1="0123456789"; strcpy(string, str1); } 答:表面上并且编译都不会错误。但如果string数组原意表示的是字符串的话,那这个赋值就没有达到意图。最好定义为char string[11],这样最后一个元素可以存储字符串结尾符'\0'; void test2() { char string[10], str1[10]; for(int I=0; I <10;I++) { str1[I] ='a'; } strcpy(string, str1); } 答:strcpy使用错误,strcpy只有遇到字符串末尾的'\0'才会结束,而str1并没有结尾标志,导致strcpy函数越界访问,不妨让str1[9]='\0',这样就正常了。 void test3(char* str1) { char string[10]; if(strlen(str1) <=10) { strcpy(string, str1); } } 答:这又会出现第一道改错题的错误了。strlen(str1)算出来的值是不包含结尾符'\0'的,如果str1刚好为10个字符+1结尾符,string就得不到结尾符了。可将strlen(str1) <=10改为strlen(str1) <10。
2. 找错 #define MAX_SRM 256 DSN get_SRM_no() { static int SRM_no; int I; for(I=0;I <MAX_SRM;I++,SRM_no++) { SRM_no %= MAX_SRM; if(MY_SRM.state==IDLE) { break; } } if(I>=MAX_SRM) return (NULL_SRM); else return SRM_no; } 答:我不知道这段代码的具体功能,但明显有两个错误 1,SRM_no没有赋初值 2,由于static的声明,使该函数成为不可重入(即不可预测结果)函数,因为SRM_no变量放在程序的全局存储区中,每次调用的时候还可以保持原来的赋值。这里应该去掉static声明。
❾ Java开发面试题
1、面向对象的特征有哪些方面?
答:面向对象的特征主要有以下几个方面:
- 抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。
- 继承:继承是从已有类得到继承信息创建新类的过程。提供继承信息的类被称为父类(超类、基类);得到继承信息的类被称为子类(派生类)。继承让变化中的软件系统有了一定的延续性,同时继承也是封装程序中可变因素的重要手段(如果不能理解请阅读阎宏博士的《Java与模式》或《设计模式精解》中关于桥梁模式的部分)。
- 封装:通常认为封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的接口。面向对象的本质就是将现实世界描绘成一系列完全自治、封闭的对象。我们在类中编写的方法就是对实现细节的一种封装;我们编写一个类就是对数据和数据操作的封装。可以说,封装就是隐藏一切可隐藏的东西,只向外界提供最简单的编程接口(可以想想普通洗衣机和全自动洗衣机的差别,明显全自动洗衣机封装更好因此操作起来更简单;我们现在使用的智能手机也是封装得足够好的,因为几个按键就搞定了所有的事情)。
- 多态性:多态性是指允许不同子类型的对象对同一消息作出不同的响应。简单的说就是用同样的对象引用调用同样的方法但是做了不同的事情。多态性分为编译时的多态性和运行时的多态性。如果将对象的方法视为对象向外界提供的服务,那么运行时的多态性可以解释为:当A系统访问B系统提供的服务时,B系统有多种提供服务的方式,但一切对A系统来说都是透明的(就像电动剃须刀是A系统,它的供电系统是B系统,B系统可以使用电池供电或者用交流电,甚至还有可能是太阳能,A系统只会通过B类对象调用供电的方法,但并不知道供电系统的底层实现是什么,究竟通过何种方式获得了动力)。方法重载(overload)实现的是编译时的多态性(也称为前绑定),而方法重写(override)实现的是运行时的多态性(也称为后绑定)。运行时的多态是面向对象最精髓的东西,要实现多态需要做两件事:1). 方法重写(子类继承父类并重写父类中已有的或抽象的方法);2). 对象造型(用父类型引用引用子类型对象,这样同样的引用调用同样的方法就会根据子类对象的不同而表现出不同的行为)。
2、访问修饰符public,private,protected,以及不写(默认)时的区别?
答:
修饰符
当前类
同 包
子 类
其他包
public √ √ √ √
protected √ √ √ ×
default √ √ × ×
private √ × × ×
类的成员不写访问修饰时默认为default。默认对于同一个包中的其他类相当于公开(public),对于不是同一个包中的其他类相当于私有(private)。受保护(protected)对子类相当于公开,对不是同一包中的没有父子关系的类相当于私有。Java中,外部类的修饰符只能是public或默认,类的成员(包括内部类)的修饰符可以是以上四种。
3、String 是最基本的数据类型吗?
答:不是。Java中的基本数据类型只有8个:byte、short、int、long、float、double、char、boolean;除了基本类型(primitive type)和枚举类型(enumeration type),剩下的都是引用类型(reference type)。
4、float f=3.4;是否正确?
答:不正确。3.4是双精度数,将双精度型(double)赋值给浮点型(float)属于下转型(down-casting,也称为窄化)会造成精度损失,因此需要强制类型转换float f =(float)3.4; 或者写成float f =3.4F;。
5、short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗?
答:对于short s1 = 1; s1 = s1 + 1;由于1是int类型,因此s1+1运算结果也是int 型,需要强制转换类型才能赋值给short型。而short s1 = 1; s1 += 1;可以正确编译,因为s1+= 1;相当于s1 = (short)(s1 + 1);其中有隐含的强制类型转换。
6、Java有没有goto?
答:goto 是Java中的保留字,在目前版本的Java中没有使用。(根据James Gosling(Java之父)编写的《The Java Programming Language》一书的附录中给出了一个Java关键字列表,其中有goto和const,但是这两个是目前无法使用的关键字,因此有些地方将其称之为保留字,其实保留字这个词应该有更广泛的意义,因为熟悉C语言的程序员都知道,在系统类库中使用过的有特殊意义的单词或单词的组合都被视为保留字)
7、int和Integer有什么区别?
答:Java是一个近乎纯洁的面向对象编程语言,但是为了编程的方便还是引入了基本数据类型,但是为了能够将这些基本数据类型当成对象操作,Java为每一个基本数据类型都引入了对应的包装类型(wrapper class),int的包装类就是Integer,从Java 5开始引入了自动装箱/拆箱机制,使得二者可以相互转换。
❿ java的面试题有哪些
正如圈内的大佬所说的那样,基础很重要。浙江优就业的老师帮你总结一下。
常见的面试题有:
安卓图片加载后一直在手机如何优化?
解释一下安卓中SharedPreferences类?
客户端和服务端如何收发信息?
activity里如何发起http请求?
安卓UI线程调用sleep?
static类如何回收?
接口和抽象类
JVM垃圾回收算法
如何区分哪些是老年代对象?
线程池
线程终止
设计模式
单例
JDBC
Runnable
run()
start()
区别?
Socket
静态代码块和构造器的执行顺序
final的map能否修改?
String
StringBuffer
StringBuild区别?
内存泄露?
ArraryList
LinkedList
HashMap原理
linux常用命令
查看进程PS
redis相关?
运行时异常
一个对象为空,怎么进行处理?
泛型
哪里用到?什么好处
?
对数据库进行一些操作,mybatis要进行哪些操作?
为什么Java是跨平台?
匿名内部类能不能有外部内的接口?(反正跟匿名内部类有关)?
@Test
测试用例
干嘛
如何获取http的参数?
Controller的参数设置,为什么是单例的?
@autowired装载一个类,构造器里能不能直接调用这个类
?
spring和springmvc区别?
springmvc跨域?
锁的种类等
望采纳!