尚学堂 老师好!

上海:15201841284

广州:020-2989 6995

深圳:0755-23061965

武汉:027-8798 9193

第一篇:面试题汇总

Java基础、语法
1.Java跨平台原理(字节码文件、虚拟机) 2.Java的安全性 3.Java三大版本 4.什么是JVM?什么是JDK? 什么是JRE? 5.Java三种注释类型 6.8种基本数据类型及其字节数 7.i++和++i的异同之处 8.&和&&的区别和联系,|和||的区别和联系 9.用最有效率的方法算出2乘以8等于多少 10.基本数据类型的类型转换规则 11.if多分支语句和switch多分支语句的异同之处 12.while和do-while循环的区别 13.break和continue的作用 14.请使用递归算法计算n! 15.递归的定义和优缺点 16.数组的特征 17.请写出冒泡排序代码 18.请写出选择排序的代码 19.请写出插入排序的代码 20.可变参数的作用和特点 21.类和对象的关系 22.面向过程和面向对象的区别 23.this和super关键字的作用 24.static关键字的作用 25.final和abstract关键字的作用 26.final、finally、finalize的区别 27.写出java.lang.Object类的六个常用方法 28.private/默认/protected/public权限修饰符的区别 29.继承条件下构造方法的执行过程 30.==和equals的区别和联系 31.谈谈Java的多态 32.简述Java的垃圾回收机制 33.基本数据类型和包装类 34.Integer与int的区别 35.java.sql.Date和java.util.Date的联系和区别 36.使用递归算法输出某个目录下所有文件和子目录列表 37.关于Java编译,下面哪一个正确()(选择一项) 38.下列说法正确的有()(选择一项) 39.Java中接口的修饰符可以为()(选择一项) 40.给定以下代码,程序将输出 ()(选择一项) 41.下列关于关键字的使用说法错误的是()(选择一项) 42.下列哪些语句关于内存回收的说法是正确的()(选择一项) 43.选出合理的标识符()(选择两项) 44.下列说法正确的是()(选择多项) 45.定义一个类名为”MyClass.java”的类,并且该类可被一个工程中的所有类访问,那么该类的正确声明为()(选择两项) 46.面向对象的特征有哪些方面?请用生活中的例子来描述。 47.说明内存泄漏和内存溢出的区别和联系,结合项目经验描述Java程序中如何检测?如何解决? 48.什么是Java的序列化,如何实现Java的序列化?列举在哪些程序中见过Java序列化? 49.不通过构造函数也能创建对象吗? 50.匿名内部类可不可以继承或实现接口。为什么? 在Java中,为什么基本类型不能做为HashMap的键值,而只能是引用类型,把引用类型做为HashMap的健值,需要注意哪些地方。 52.简述Java中如何实现多态 53.以下对继承的描述锚误的是 () 54.Java 中 Math.random()/Math.random()值为? 55.Java中,如果Manager是Employee的子类,那么Pair< Manager>是Pair< Employee>的子类吗? 56.接口和抽象类的区别 57.同步代码块和同步方法有什么区别 58.静态内部类和内部类有什么区别 59.反射的概念与作用 60.提供Java存取数据库能力的包是() 61.下列运算符合法的是()(多选) 62.执行如下程序代码,c的值打印出来是() 63.下列哪一种叙述是正确的() 64.下列语句正确的是() 65.下列哪种说法是正确的() 66.Java程序的种类有()(多选) 67.下列说法正确的有()(多选) 68.下列标识符不合法的有()(多选) 69.下列说法错误的有()(多选) 70.不能用来修饰interface的有()(多选) 71.下列正确的有()(多选) 72.下列说法错误的有()(多选) 73.下列说法错误的有()(多选) 74.下列说法错误的有()(多选) 75.请问0.3332的数据类型是() 76.Java接口的修饰符可以为() 77.不通过构造函数也能创建对象么() 78.存在使i+1< i的数么? 79.接口可否继承接口?抽象类是否可实现接口?抽象类是否可继承实体类? 80.int与Integer有什么区别? 81.可序列化对象为什么要定义serialversionUID值? 82.写一个Java正则,能过滤出html中的 < a href=”url” >title< /a>形式中的链接地址和标题. 83.十进制数72转换成八进制数是多少? 84.Java程序中创建新的类对象,使用关键字new,回收无用的类对象使用关键字free正确么? 85.Class类的getDeclaredFields()方法与getFields()的区别? 86.在switch和if-else语句之间进行选取,当控制选择的条件不仅仅依赖于一个x时,应该使用switch结构;正确么? 88.使用final关键字修饰符一个变量时,是引用不能变,还是引用的对象不能变? 88.使用final关键字修饰符一个变量时,是引用不能变,还是引用的对象不能变? 89.请解释以下常用正则含义:\d,\D,\s,.,*,?,|,[0-9]{6},\d+ 90.已知表达式int m[] = {0,1,2,3,4,5,6}; 下面那个表达式的值与数组的长度相等() 91.下面那些声明是合法的?() 92.以下选项中选择正确的java表达式() 93.下列代码的输出结果是 94.以下哪些运算符是含有短路运算机制的?请选择:() 95.下面哪个函数是public void example(){....}的重载函数?() 96.给定某java程序片段,该程序运行后,j的输出结果为() 97.在java中,无论测试条件是什么,下列()循环将至少执行一次。 98.打印结果: 99.指出下列程序的运行结果 100.解释继承、重载、覆盖。 101.什么是编译型语言,什么是解释型语言?java可以归类到那种? 102.简述操作符(&,|)与操作符(&&,||)的区别 &和&&的联系(共同点) 103.try{}里面有一个return语句,那么紧跟在这个try后的finally, 里面的语句在异常出现后,都会执行么?为什么? 104.有一段java应用程序,它的主类名是al,那么保存它的源文件可以是?() 105.Java类可以作为() 106.在调用方法时,若要使方法改变实参的值,可以?() 107.Java语言具有许多优点和特点,哪个反映了java程序并行机制的() 108.下关于构造函数的描述错误是() 109.若需要定义一个类域或类方法,应使用哪种修饰符?() 110.下面代码执行后的输出是什么() 111.给出如下代码,如何使成员变量m被函数fun()直接访问() 112.下面哪几个函数是public void example(){….}的重载函数() 113.请问以下代码执行会打印出什么? 114.如果有两个类A、B(注意不是接口),你想同时使用这两个类的功能,那么你会如何编写这个C类呢? 115.一个类的构造方法是否可以被重载(overloading),是否可以被子类重写(overrding)? 116.Java中byte表示的数值范围是什么? 117.如何将日期类型格式化为:2013-02-18 10:53:10? 118.不通过构造函数也能创建对象吗() 119.下面哪些是对称加密算法() 120.下面的代码段,当输入为2的时候返回值是() 121.以下Java代码段会产生几个对象 122.Math.round(-11.2)的运行结果是。 123.十进制数278的对应十六进制数 124.Java中int.long占用的字节数分别是 125.System.out.println(‘a’+1);的结果是 126.下列语句那一个正确() 127.下列说法正确的有() 128.执行如下程序代码() 129.下列哪一种叙述是正确的() 130.下列语句正确的是() 131.成员变量用static修饰和不用static修饰有什么区别? 132.如果变量用final修饰,则怎样?如果方法final修饰,则怎样? 133.在二进制数据中,小数点向右移一位,则数据() 134.面向对象的特征有哪些方面? 135.float f=3.4;是否正确? 136.short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗? 137.Java 有没有goto? 138.int 和Integer 有什么区别? 139.&和&&的区别? 140.Math.round(11.5) 等于多少? Math.round(-11.5)等于多少? 141.swtich 是否能作用在byte 上,是否能作用在long 上,是否能作用在String上? 142.用最有效率的方法计算2乘以8? 143.在Java 中,如何跳出当前的多重嵌套循环? 144.构造器(constructor)是否可被重写(override)? 145.两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对? 146.当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 147.重载(Overload)和重写(Override)的区别。重载的方法能否根据返回类型进行区分? 148.华为的面试题中曾经问过这样一个问题:为什么不能根据返回类型来区分重载,为什么? 149.静态嵌套类(Static Nested Class)和内部类(Inner Class)的不同? 150.抽象的(abstract)方法是否可同时是静态的(static),是否可同时是本地方法(native),是否可同时被synchronized修饰? 151.静态变量和实例变量的区别? 152.是否可以从一个静态(static)方法内部发出对非静态(non-static)方法的调用? 153.如何实现对象克隆? 154.接口是否可继承(extends)接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承具体类(concrete class)? 155.一个“.java”源文件中是否可以包含多个类(不是内部类)?有什么限制? 156.Anonymous Inner Class(匿名内部类)是否可以继承其它类?是否可以实现接口? 157.内部类可以引用它的包含类(外部类)的成员吗?有没有什么限制? 158.Java 中的final关键字有哪些用法? 159.指出下面程序的运行结果: 160.说说数据类型之间的转换: 161.如何实现字符串的反转及替换? 162.怎样将GB2312编码的字符串转换为ISO-8859-1编码的字符串? 163.Java中的日期和时间: 164.打印昨天的当前时刻。 165.Java反射技术主要实现类有哪些,作用分别是什么? 166.Class类的作用?生成Class对象的方法有哪些? 167.反射的使用场合和作用、及其优缺点 168.面向对象设计原则有哪些
集合
193.Java集合体系结构(List、Set、Collection、Map的区别和联系) 194.Vector和ArrayList的区别和联系 195.ArrayList和LinkedList的区别和联系 196.HashMap和Hashtable的区别和联系 197.HashSet的使用和原理(hashCode()和equals()) 198.TreeSet的原理和使用(Comparable和comparator) 199.集合和数组的比较(为什么引入集合) 200.Collection和Collections的区别 201.下列说法正确的有()(选择一项) 202.Java的HashMap和Hashtable有什么区别HashSet和HashMap有什么区别?使用这些结构保存的数需要重载的方法是哪些? 203.列出Java中的集合类层次结构? 204.List,Set,Map各有什么特点 205.ArrayList list=new ArrayList(20);中的list扩充几次() 206.List、Set、Map哪个继承自Collection接口,一下说法正确的是() 207.合并两个有序的链表 208.用递归方式实现链表的转置。 209.给定一个不包含相同元素的整数集合,nums,返回所有可能的子集集合。解答中集合不能包含重复的子集。 210.以下结构中,哪个具有同步功能() 211.以下结构中,插入性能最高的是() 212.以下结构中,哪个最适合当作stack使用() 213.Map的实现类中,哪些是有序的,哪些是无序的,有序的是如何保证其有序性,你觉得哪个有序性性能更高,你有没有更好或者更高效的实现方式? 214.下面的代码在绝大部分时间内都运行得很正常,请问什么情况下会出现问题?根源在哪里? 215.TreeMap和TreeSet在排序时如何比较元素?Collections工具类中的sort()方法如何比较元素? 216.List里面如何剔除相同的对象?请简单用代码实现一种方法 217.Java.util.Map的实现类有 218.下列叙述中正确的是() 219.List、Set、Map 是否继承自Collection 接口? 220.说出ArrayList、Vector、LinkedList 的存储性能和特性? 221.List、Map、Set 三个接口,存取元素时,各有什么特点? 222.TreeMap和TreeSet在排序时如何比较元素?Collections工具类中的sort()方法如何比较元素?
多线程
223.下面程序的运行结果()(选择一项) 224.下列哪个方法可用于创建一个可运行的类() 225.说明类java.lang.ThreadLocal的作用和原理。列举在哪些程序中见过ThreadLocal的使用? 226.说说乐观锁与悲观锁 227.在Java中怎么实现多线程?描述线程状态的变化过程。 228.请写出多线程代码使用Thread或者Runnable,并说出两种的区别。 229.在多线程编程里,wait方法的调用方式是怎样的? 230.Java线程的几种状态 231.在Java多线程中,请用下面哪种方式不会使线程进入阻塞状态() 232.volatile关键字是否能保证线程安全? 233.请写出常用的Java多线程启动方式,Executors线程池有几种常用类型? 234.关于sleep()和wait(),以下描述错误的一项是() 235.进程和线程的区别是什么? 236.以下锁机机制中,不能保证线程安全的是() 237.创建n多个线程,如何保证这些线程同时启动?看清,是“同时”。 238.同步和异步有何异同,在什么情况下分别使用它们? 239.Java线程中,sleep()和wait()区别 240.下面所述步骤中,是创建进程做必须的步骤是() 241.无锁化编程有哪些常见方法?() 242.sleep()和yield()有什么区别? 243.当一个线程进入一个对象的synchronized方法A之后,其它线程是否可进入此对象的synchronized方法? 244.请说出与线程同步相关的方法。 245.编写多线程程序有几种实现方式? 246.synchronized关键字的用法? 247.启动一个线程是用run()还是start()方法? 248.什么是线程池(thread pool)? 249.线程的基本状态以及状态之间的关系? 250.简述synchronized 和java.util.concurrent.locks.Lock的异同? 251.创建线程的两种方式分别是什么,优缺点是什么? 252.Java创建线程后,调用start()方法和run()的区别 253.线程的生命周期 254.如何实现线程同步? 255.说说关于同步锁的更多细节 256.Java中实现线程通信的三个方法的作用是什么?
Web方面相关
291.WEB应用中如果有.class和.jar类型的文件一般分别应该放在什么位置? 292.元素中有一个输入框(< input type=‘text’ name=’username‘id=’username”value=‘’"/>,请用JavaScript语言写一行代码,取得这个输入框中的值。 293.简单描述一下Servlet与JSP的的相同点和区别点。 294.请简单描述下几个您熟悉JavaScript库,它们有哪些作用和特点? 295.简单描述HTML,CSS,Javascript在Web开发中分别起什么作用? 296.当DOM加载完成后要执行的函数,下面哪个是正确的() 297.举例说明JAVA中如何解析xml,不同方式有和优缺点? 298.char型变量中能不能存储一个中文汉字? 299.一个类可以实现多个接口,但只能继承一个抽象类。 300.比较一下Java 和JavaSciprt 301.什么时候用assert? 302.UML是什么?UML中有哪些图? 303.XML 文档定义有几种形式?它们之间有何本质区别?解析XML 文档有哪几种方式? 304.你在项目中哪些地方用到了XML? 305.用JavaScript实现用正则表达式验证,某个字符串是合法的6位数字的邮编的函数 306.请使用JQuery将页面上的所有元素边框设置为2pix宽的虚线? 307.如何设定JQuery异步调用还是同步调用? 308.说出3条以上firefox和IE的浏览器兼容问题? 309.请用Jquery语言写出ajax请求或者post请求代码 310.body中的onload ()函数和jQuery中document.ready()有什么区别? 311.jQuery中有哪几种类型的选择器? 312.EasyUI中datagrid刷新当前数据的方法? 313.分别写出一个div居中和其中的内容居中的css属性设置 314.概述一下session与cookie的区别 315.JavaScript 中 null和 undefined 是否有区别?有哪些区别? 316.Servlet中的doPost和doGet方法有什么区别?它们在传递和获取参数上有什么区别? 317.请写出一段jQuery代码,实现把当前页面中所有的a元索中class 属性为“view-link”的链接都改为在新窗口中打开 318.如下JavaScript代码的输出为: 319.Jquery中’.get()’与’.eq()’的区别 320.如何给weblogic定内存的大小? 321.TCP为何采用三次握手来建立连接,若釆用二次握手可以吗,请说明理由? 322.以下HTTP相应状态码的含义描述正确的是() 323.JSP页面包括哪些元素?() 324.Ajax有四种技术组成:DOM,CSS,JavaScript,XmlHttpRequest,其中控制文档结构的是() 325.下面关于session的用法哪些是错误的?() 326.Jsp九大内置对象 327.如何配置一个servlet? 328.JavaScript,如何定义含有数值1至8的数组? 329.以下JavaScipt语句会产生运行错误的是_() 330.在JSP中,下面__()__块中可以定义一个新类: 331.HTML含义和版本变化 332.什么是锚链接 333.HTML字符实体的作用及其常用字符实体 334.HTML表单的作用和常用表单项类型 335.表格、框架、div三种HTML布局方式的特点 336.form中input设置为readonly和disabled的区别 337.CSS的定义和作用 338.CSS2常用选择器类型及其含义 339.引入样式的三种方式及其优先级别 340.盒子模型 341.JavaScript语言及其特点 342.JavaScript常用数据类型有哪些 343.html语法中哪条命令用于使一行文本折行,而不是插入一个新的段落? (B) 344.Ajax的优点和缺点 345.怎样防止表单刷新重复提交问题?(说出思路即可) 346.JQuery.get()和JQuery.ajax()方法之间的区别是什么? 347.Jquery里的缓存问题如何解决?例如($.ajax()以及$.get()) 348.Javascript是面向对象的,怎么体现Javascript的继承关系? 349.Javascript的有几种种变量。变量范围有什么不同? 350.Js如何获取页面的dom对象 351.Servlet API中forward() 与redirect()的区别? 352.Session域和request域什么区别? 353.页面中有一个命名为bankNo的下拉列表,写js脚本获取当前选项的索引值,如果用jquery如何获取 354.写出要求11位数字的正则表达式 355.分别获取指定name、Id的javascript对象,如果用jquey如何获取 356.一个页面有两个form,如何获取第一个form 357.如何设置一个层的可见/隐藏 358.描述JSP中动态INCLUDE与静态INCLUDE的区别? 359.列举JSP的内置对象及方法 360.列举jsp的四大作用域 361.html和xhtml的区别是什么? 362.你做的页面用哪些浏览器测试过?这些测试的内核分别是什么? 363.你遇到了哪些浏览器的兼容性问题?怎么解决的? 364.你知道的常用的js库有哪些? 365.Js中的三种弹出式消息提醒(警告窗口、确认窗口、信息输入窗口)的命令是什么? 366.谈谈js的闭包 367.写一段js,遍历所有的li,将每个li的内容逐个alert出来 368.页面上如何用JavaScript对多个checkbox全选 369.写一个简单的JQuery的ajax 370.Js截取字符串abcdefg的efg 371.http的请求头信息包含了什么? 372.http的响应码200,404,302,500表示的含义分别是? 373.Servlet中request对象的方法有? 374.Javascript的常用对象有哪些 375.DOM和BOM及其关系 376.JavaScript中获取某个元素的三种方式JavaScript中的三种弹出式消息提醒命令是什么? 377.JavaScript操作CSS的两种方式 378.静态网页和动态网页的联系和区别 379.JSP/ASP/PHP的比较 380.CGI/Servlet/JSP的比较 381.HTTP协议工作原理及其特点 382.get和post的区别 383.如何解决表单提交的中文乱码问题 384.绝对路径、根路径、相对路径的含义及其区别 385.如实现servlet的单线程模式 386.Servlet的生命周期 387.转发和重定向的区别 388.JSP的执行过程 389.JSP动作有哪些,简述作用? 390.page/request/session/application作用域区别 391.JSP和Servlet的区别和联系 392.谈谈过滤器原理及其作用? 393.jQuery相比JavaScript的优势在哪里 394.DOM对象和jQuery对象的区别及其转换 395.jQuery中$的作用主要有哪些 396.Ajax含义及其主要技术 397.Ajax的工作原理 398.JSON及其作用 399.文件上传组件Common-fileUpload的常用类及其作用? 400.说出Servlet的生命周期,并说出Servlet和CGI的区别? 401.JSP 和Servlet 有有什么关系? 402.JSP中的四种作用域? 403.如何实现JSP或Servlet的单线程模式? 404.实现会话跟踪的技术有哪些? 405.过滤器有哪些作用和用法? 406.监听器有哪些作用和用法? 407.你的项目中使用过哪些JSTL标签? 408.使用标签库有什么好处?如何自定义JSP标签? 409.表达式语言(EL)的隐式对象及其作用? 410.表达式语言(EL)支持哪些运算符? 411.Servlet 3中的异步处理指的是什么? 412.如何在基于Java的Web项目中实现文件上传和下载? 413.简述值栈(Value-Stack)的原理和生命周期 414.阐述Session加载实体对象的过程。 415.怎么防止重复提交 416.$(document).ready(function(){}) jQuery(document).ready(function(){}); 有什么区别? 417.写出输出结果 418.web项目从浏览器发起交易响应缓慢,请简述从哪些方面如数分析
高级框架
431.什么是Maven? 432.Maven和ANT的区别 433.Maven仓库是什么 434.Maven的工程类型有哪些? 435.Maven常用命令有哪些? 436.ZooKeeper的作用是什么? 437.什么是Znode? 438.Znode节点类型有哪些? 439.什么是Dubbo? 440.什么是RPC远程过程调用? 441.Dubbo中有哪些角色? 442.Dubbo执行流程什么是? 443.说说Dubbo支持的协议有哪些? 444.Dubbo支持的注册中心有哪些? 445.SessionFactory是线程安全的吗?Session是线程安全的吗,两个线程能够共享同一个Session吗? 446.Session的load和get方法的区别是什么? 447.Session的save()、update()、merge()、lock()、saveOrUpdate()和persist()方法有什么区别? 448.什么是VSFTPD? 449.什么是Nginx? 450.Nginx有哪些作用? 451.什么是正向代理? 452.什么是反向代理? 453.什么是Redis? 454.Redis的特点什么是? 455.Redis数据类型有哪些? 456.Redis中的常用命令哪些? 457.Redis的配置以及持久化方案有几种? 458.什么是RDB方式? 459.什么是AOF方式? 460.什么是全文检索? 461.什么是Lucene? 462.什么是Solr? 463.Solr是由哪两个部分构成? 464.什么是正排索引? 465.什么是倒排索引? 466.什么是ActiveMQ? 467.消息服务的应用场景有哪些? 468.什么是JMS? 469.JMS有哪些模型? 470.什么是JsonP? 471.什么是跨域? 472.什么是同源策略? 473.什么是MyCat? 474.什么是纵向切分/垂直切分? 475.简述Tomcat,Apache,JBoss和WebLogic的区别和联系 476.以下可以实现负载均衡的是() 477.Tomcat/ WebSphere/WebLogic的作用和特点 478.B/S和C/S的含义及其区别 479.说说你对容器的理解 480.为什么要使用连接池? 481.数据库连接池的原理 482.MVC模式及其优缺点 483.MVC模式完成分页功能的基本思路是什么? 484.常用的Web容器 485.Java Web开发的Model 1和Model 2分别指的是什么? 486.说说什么是框架: 487.简单说一下MVC框架? 488.简单讲一下struts2的执行流程 489.Struts2中的拦截器,你都用它干什么? 490.简单讲一下SpringMVC的执行流程? 491.简单说一下struts2和springMVC有什么不同 492.说一下Spring中的两大核心 493.讲一下Spring的事务的传播特性 494.什么是ORM 495.Hibernate对象的状态 496.介绍一下Hibernate的缓存 497.简单讲一下webservice使用的场景 498.简单介绍一下activity? 499.什么是MyBatis? 500.Mybatis是如何进行分页的?分页插件的原理是什么? 501.MyBatis与Hibernate有哪些不同? 502.简述Mybatis的Xml映射文件和Mybatis内部数据结构之间的映射关系? 503.什么是MyBatis的接口绑定,有什么好处? 504.Mybatis能执行一对一、一对多的关联查询吗?都有哪些实现方式,以及它们之间的区别? 505.MyBatis里面的动态Sql是怎么设定的?用什么语法? 506.使用MyBatis的mapper接口调用时有哪些要求? 507.Mybatis是如何将sql执行结果封装为目标对象并返回的?都有哪些映射形式? 508.MyBatis接口绑定有几种实现方式,分别是怎么实现的? 509.MyBatis实现一对一有几种方式?具体怎么操作的? 510.什么情况下用注解绑定,什么情况下用xml绑定? 511.MyBatis的好处是什么?
数据库
538.下列属于关系型数据库的是()(选择两项) 539.请列出Java常见的开源数据连接池,并对参数做出简单的说明 540.储蓄所有多个储户,储户在多个储户所存取款,储蓄所与储户之间是() 541.视图是一个“虚表”,视图的构造基于() 542.设有关系R(A,B,C,D)及其上的函数相关性集合F={B→A,BC→D},那么关系R最高是() 543.什么是DAO模式? 544.数据库MySQL,Oracle,SqlServer分页时用的语句 545.Oracle完成分页功能的三层子查询语句及其含义? 546.问SQL怎么优化执行效率更高 547.谈谈数据库去空格的情况 548.根据你以往的经验简单叙述一下MYSQL的优化 549.以Oracle11R为例简述数据库集群部署 550.说一下数据库的存储过程? 551.数据库创建索引的缺点? 552.有两张表;请用SQL查询,所有的客户订单日期最新的前五条订单记录。(分别注明MySQL. Oracle写法) 553.关于HQL与SQL,以下哪些说法正确?() 554.下面是学生表(student)的结构说明 555.为管理岗位业务培训信息,有如下3个表: 556.用Java怎么实现有每天有1亿条记录的DB储存?MySQL上亿记录数据量的数据库如何设计? 557.Mysql的引擎有哪些?支持事物么?DB储存引擎有哪些? 558.以下是学生考试结果表 559.库中已经存在雇用表表名: 560.如下表1中的数据,表名为:t_test,记录某场比赛的结果。 561.请将如下数据库语句进行优化,使其执行效率更高(提示:…不需要更改) 562.请简述如何将Oracle中的数据库转至DB2中,需要保证表结构和数据不变 563.学生成绩表 564.Oracl数据库中有两张表Stu(学生表)和Grade(分数表),如下图所示: 565.下面是学生表(Student)的结构说明: 566.取出sql表中低31到40的记录(以自动增长ID为主键) 567.下列两个表,需要用一条sql语句把b表中的ID和NAME 字段的数值复制到A表中 568.什么是基本表,什么是视图,两者的区别和联系是什么? 569.什么是事务?什么是锁? 570.Student学生表(学号,姓名、性别、年龄、组织部门),Course 课程表(编号,课程名称),Sc选课表(学号,课程编号,成绩) 571.sql查询
Linux操作
580.请写出常用的linux指令不低于10个,请写出linux tomcat启动。 581.当使用RMI技术实现远程方法调用时,能为远程对象生成Sub和Skeleton命令的是() 582.以下哪个是服务() 583.下面的网络协议中,面向连接的的协议是: () 584.在/etc/fstab 文件中指定的文件系统加载参数中, () 参数一般用于CD-ROM 等移动设备。 585.Linux 文件权限一共10 位长度,分成四段,第三段表示的内容是 () 586.终止一个前台进程可能用到的命令和操作 () 587.在使用mkdir 命令创建新的目录时,在其父目录不存在时先创建父目录的选项是 () 588.下面关于i 节点描述错误的是 () 589.一个文件名字为rr.Z,可以用来解压缩的命令是: () 590.具有很多C 语言的功能,又称过滤器的是 () 591.一台主机要实现通过局域网与另一个局域网通信,需要做的工作是 () 592.建立动态路由需要用到的文件有 () 593.局域网的网络地址192.168.1.0/24,局域网络连接其它网络的网关地址是192.168.1.1。主机192.168.1.20 访问172.16.1.0/24 网络时,其路由设置正确的是 () 594.下列提法中,不属于ifconfig 命令作用范围的是 () 595.下列关于链接描述,错误的是() 596.在局域网络内的某台主机用ping 命令测试网络连接时发现网络内部的主机都可以连同,而不能与公网连通,问题可能是() 597.下列文件中,包含了主机名到IP 地址的映射关系的文件是: 598.不需要编译内核的情况是() 599.在shell 中变量的赋值有四种方法,其中,采用name=12 的方法称 () 600.()命令可以从文本文件的每一行中截取指定内容的数据。 601.下列不是Linux 系统进程类型的是() 602.在日常管理中,通常CPU 会影响系统性能的情况是: () 603.若一台计算机的内存为128MB,则交换分区的大小通常是 604.在安装Linux 的过程中的第五步是让用户选择安装方式,如果用户希望安装部分组件(软件程序),并在选择好后让系统自动安装,应该选择的选项是() 605.Linux 有三个查看文件的命令,若希望在查看文件内容过程中可以用光标上下移动来查看文件内容,应使用()命令 606.下列信息是某系统用ps –ef 命令列出的正在运行的进程 ()进程是运行Internet 超级服务器,它负责监听Internet sockets 上的连接,并调用合适的服务器来处理接收的信息。 607.在TCP/IP 模型中,应用层包含了所有的高层协议,在下列的一些应用协议中, ()是能够实现本地与远程主机之间的文件传输工作 608.当我们与某远程网络连接不上时,就需要跟踪路由查看,以便了解在网络的什么位置出现了问题,满足该目的的命令是() 609.对名为fido 的文件用chmod 551 fido 进行了修改,则它的许可权是() 610.用ls –al 命令列出下面的文件列表,()文件是符号连接文件 611.DNS 域名系统主要负责主机名和()之间的解析。 612.WWW 服务器是在Internet 上使用最为广泛,它采用的是()结构 613.Linux 系统通过()命令给其他用户发消息。 614.NFS 是()系统。 615.()命令可以在Linux 的安全系统中完成文件向磁带备份的工作 616.Linux 文件系统的文件都按其作用分门别类地放在相关的目录中,对于外部设备文件,一般应将其放在()目录中 617.在重新启动Linux 系统的同时把内存中的信息写入硬盘,应使用()命令实现 618.网络管理具备以下几大功能:配置管理、()、性能管理、安全管理和计费管理等 619.关闭linux 系统(不重新启动)可使用命令() 620.实现从IP 地址到以太网MAC 地址转换的命令为: () 621.在vi 编辑器中的命令模式下,键入()可在光标当前所在行下添加一新行 622.在vi 编辑器中的命令模式下,删除当前光标处的字符使用()命令 623.在vi 编辑器中的命令模式下,重复上一次对编辑的文本进行的操作,可使用()命令 624.删除文件命令为: () 625.退出交互模式的shell,应键入()
算法分析及手写代码
626.判断身份证:要么是15位,要么是18位,最后一位可以为字母,并写出程序提出其中年月日。要求: 627.对于一个字符串,请设计一个高效算法,找到第一次重复出现的字符保证字符串中有重复的字符,字符串的长度小于等于500. 628.写一个完整函数,实现拷贝数组 629.写一排序算法,输入10个数字,以逗号分开,可根据参数选择升序或者降序排序,须注明是何种排序算法。 630.判断字符串是否是这样的组成的,第一个字母,后面可以是字母、数字、下划线、总长度为5-20。 631.已排好序的数组A,一般来说可用二分查找可以很快找到,现有一特殊数组A,它是循环递增的,如a[]={17, 19 ,20, 25, 1, 4, 7, 9},在这样的数组中找一元素,看看是否存在。请写出你的算法,必要时可写伪代码,并分析其空间,时间复杂度。 632.请编写一个完整的程序,实现如下功能:从键盘输入数字n,程序自动计算n!并输出。(注1:n!=1*2*3...*n, 注2:请使用递归实现) 633.请用递归的方法计算斐波那契数列的同项F(n),已知F0=0,F1=1,F(n)=F(n-1)+F(n-2)(n>=2,n∈N*). 634.现在有整数数组{11,66,22,0,55,32},请任意选择一种排序算法,用Java程序实现 635.请根据注释,编码实现下面类的方法 636.二分法查询(递归实现) 637.编写一段Java程序,把一句英语中的每个单词中的字母次序倒转,单词次序保持不变,例入输入为“There is a dog.”,输出结果应该是“erehT si a god.”要求不使用Java的库函数,例如String类的split,reverse方法。 638.手写9x9乘法表,冒泡排序 639.题目: 给定一个整数数组,找到是否该数组包含任何重复数字。你的函数应该返回true只要有任何数字 在该数组中重复出现,否则返回false。 640.给定一个数组nums, 写一个函数来移动所有0元素到数组末尾,同时维持数组中非0元素的相对顺序不变。要求不能申请额外的内存空间,并且最小化操作次数。 641.给定一颗二叉树,返回节点值得先序遍历,请使用迭代(非递归)方式实现。 642.验证一棵树是否为有效的二叉搜索树BST 643.从一个链表中删除节点 644.二叉搜索树BST中第Kth小的元素 题目:给定?个BST,写一个函数kthSmallest来找到第kth小的元素 645.题目:给定含有n个整数的数组S,S中是否存在三个元素a,b,c使得a + b + c = 0? 找到所有这样的三元 组,并且结果集中不包含重复的三元组。 646.子集问题 647.迭代方法实现二叉树的先序遍历:题目: 给定一颗?叉树,返回节点值得先序遍历,请使用迭代(非递归)方式实现。 648.验证二叉搜索树BST:题目: 验证一棵树是否为有效的二叉搜索树BST比如,二叉树[2, 1, 3],返回true二叉树[1, 2, 3], 返回false 649.编辑距离题目: 给定两个单词word1和word2,找到最小的操作步骤使得word1转换成word2,每次操作算作一 步。你可以对单词进行以下三种操作:1)插入一个字符2)删除一个字符3)替换一个字符 650.买卖股票问题:题目: 你有一个数组,第i个元素表示第i天某个股票的价格,设计一个算法找到最大的利润,并且你只能最多完成两次交易。 651.[编程]任给n个整数和一个整数x。请计算n个整数中有多少对整数之和等于x。 652.[编程]请说明快速排序算法的设计思想和时间复杂度,并用高级语言写出对整数数组进行一趟快排的函数实现。 653.对于一段形如:1,-1~3,1~15×3的输入 654.有两个字符串:目标串S=“s1s2.......sn”,模式串T="t1t2.......tm"。若存在T的每个字符一次和S中的一个连续字符序列相等,则匹配成功,返回T中第一个字符在S中的位置。否则匹配不成功,返回0。写出你的算法,要求线性时间复杂度 655.如何生成一个0-100的随机整数? 656.请编写一段Java程序将两个有序数组合并成一个有序数组 657.在最佳情况下,以下哪个时间复杂度最高(D) 658.一个数组,元素为从0到m的整数,判断其中是否有重复元素,使用java语言编写一个方法 659.某二叉树的先序遍历是12453,中序遍历是42513,那么其后序遍历是(A) 660.设一颗二叉树中有3个叶子节点,有八个度为1的节点,则该二叉树中总的节点数为() 661.给出下面的二叉树先序、中序、后序遍历的序列? 662.你知道的排序算法都哪些?用Java写一个排序系统 663.写一个二分查找(折半搜索)的算法。 664.统计一篇英文文章单词个数。 665.输入年月日,计算该日期是这一年的第几天。 666.回文素数:所谓回文数就是顺着读和倒着读一样的数(例如:11,121,1991…),回文素数就是既是回文数又是素数(只能被1和自身整除的数)的数。编程找出11~9999之间的回文素数。 667.全排列:给出五个数字12345的所有排列。 668.对于一个有N个整数元素的一维数组,找出它的子数组(数组中下标连续的元素组成的数组)之和的最大值。 669.用递归实现字符串倒转 670.输入一个正整数,将其分解为素数的乘积。 671.一个有n级的台阶,一次可以走1级、2级或3级,问走完n级台阶有多少种走法。 672.写一个算法判断一个英文单词的所有字母是否全都不同(不区分大小写) 673.有一个已经排好序的整数数组,其中存在重复元素,请将重复元素删除掉,例如,A= [1, 1, 2, 2, 3],处理之后的数组应当为A= [1, 2, 3]。 674.给一个数组,其中有一个重复元素占半数以上,找出这个元素。 675.编写一个方法求一个字符串的字节长度?
第三篇:热门专业学习之路
前言

本题集由尚学堂学员整理,列举了众多IT公司面试真题,对应聘Java程序员职位的常见考点和知识体系都进行的分类和归纳整理。

本题集适合应聘Java和JavaEE职位的程序员作为面试复习、学习和强化的资料,也适合其他程序员作为拓展读物进行阅读。

本题集包含了常见的算法、面试题,也包含了新的高级技术,比如:微服务架构等技术的面试题目。本题集非常全面,对于工作1-5年左右的java程序员面试有非常好的指导作用。

大家也可以访问(直接在线观看最新版的面试题):www.cclx03.com/javamianshiti.html

1.大学生高端复合人才成长
1.JAVA专业,1000课 3.大数据专业,500课
2.Python专业,500课    4.人工智能专业,500课

四个专业都要学,从零开始2000小时,成为高端人才,打下一生技术基础,不再是低端码农。

2.扫一扫,咨询详情:

访问官网 www.itbaizhan.cn

Java基础、语法:

1.Java跨平台原理(字节码文件、虚拟机)

C/C++语言都直接编译成针对特定平台机器码。如果要跨平台,需要使用相应的编译器重新编译。

Java源程序(.java)要先编译成与平台无关的字节码文件(.class),然后字节码文件再解释成机器码运行。解释是通过Java虚拟机来执行的。

字节码文件不面向任何具体平台,只面向虚拟机。

Java虚拟机是可运行Java字节码文件的虚拟计算机。不同平台的虚拟机是不同的,但它们都提供了相同的接口。

Java语言具有一次编译,到处运行的特点。就是说编译后的.class可以跨平台运行,前提是该平台具有相应的Java虚拟机。但是性能比C/C++要低。

Java的跨平台原理决定了其性能没有C/C++高

2.Java的安全性

语言层次的安全性主要体现在:

Java取消了强大但又危险的指针,而代之以引用。由于指针可进行移动运算,指针可随便指向一个内存区域,而不管这个区域是否可用,这样做是危险的,因为原来这个内存地址可能存储着重要数据或者是其他程序运行所占用的,并且使用指针也容易数组越界。

垃圾回收机制:不需要程序员直接控制内存回收,由垃圾回收器在后台自动回收不再使用的内存。避免程序忘记及时回收,导致内存泄露。避免程序错误回收程序核心类库的内存,导致系统崩溃。

异常处理机制:Java异常机制主要依赖于try、catch、finally、throw、throws五个关键字。

强制类型转换:只有在满足强制转换规则的情况下才能强转成功。

底层的安全性可以从以下方面来说明

Java在字节码的传输过程中使用了公开密钥加密机制(PKC)。

在运行环境提供了四级安全性保障机制:

字节码校验器 -类装载器 -运行时内存布局 -文件访问限制

3.Java三大版本

Java2平台包括标准版(J2SE)、企业版(J2EE)和微缩版(J2ME)三个版本:

Standard Edition(标准版) J2SE 包含那些构成Java语言核心的类。

比如:数据库连接、接口定义、输入/输出、网络编程

Enterprise Edition(企业版) J2EE 包含J2SE 中的类,并且还包含用于开发企业级应用的类。

比如servlet、JSP、XML、事务控制

Micro Edition(微缩版) J2ME 包含J2SE中一部分类,用于消费类电子产品的软件开发。

比如:呼机、智能卡、手机、PDA、机顶盒

他们的范围是:J2SE包含于J2EE中,J2ME包含了J2SE的核心类,但新添加了一些专有类

应用场合,API的覆盖范围各不相同。

4.什么是JVM?什么是JDK? 什么是JRE?

JVM :JVM是Java Virtual Machine(Java虚拟机)的缩写,它是整个java实现跨平台的最核心的部分,所有的java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行,也就是说class并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释给本地系统执行。JVM是Java平台的基础,和实际的机器一样,它也有自己的指令集,并且在运行时操作不同的内存区域。?JVM通过抽象操作系统和CPU结构,提供了一种与平台无关的代码执行方法,即与特殊的实现方法、主机硬件、主机操作系统无关。JVM的主要工作是解释自己的指令集(即字节码)到CPU的指令集或对应的系统调用,保护用户免被恶意程序骚扰。?JVM对上层的Java源文件是不关心的,它关注的只是由源文件生成的类文件(.class文件)。

JRE:JRE是java runtime environment(java运行环境)的缩写。光有JVM还不能让class文件执行,因为在解释class的时候JVM需要调用解释所需要的类库lib。在JDK的安装目录里你可以找到jre目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和lib和起来就称为jre。所以,在你写完java程序编译成.class之后,你可以把这个.class文件和jre一起打包发给朋友,这样你的朋友就可以运行你写程序了(jre里有运行.class的java.exe)。JRE是Sun公司发布的一个更大的系统,它里面就有一个JVM。JRE就与具体的CPU结构和操作系统有关,是运行Java程序必不可少的(除非用其他一些编译环境编译成.exe可执行文件……),JRE的地位就象一台PC机一样,我们写好的Win32应用程序需要操作系统帮我们运行,同样的,我们编写的Java程序也必须要JRE才能运行。?

JDK:JDK是java development kit(java开发工具包)的缩写。每个学java的人都会先在机器上装一个JDK,那 让我们看一下JDK的安装目录。在目录下面有六个文件夹、一个src类库源码压缩包、和其他几个声明文件。其中,真正在运行java时起作用的是以下四个文件夹:bin、include、lib、jre。现在我们可以看出这样一个关系,JDK包含JRE,而JRE包含JVM。

bin:最主要的是编译器(javac.exe)

include:java和JVM交互用的头文件

lib:类库??????

jre:java运行环境?

(注意:这里的bin、lib文件夹和jre里的bin、lib是不同的)总的来说JDK是用于java程序的开发,而jre则是只能运行class而没有编译的功能。eclipse、idea等其他IDE有自己的编译器而不是用JDK?bin目录中自带的,所以在安装时你会发现他们只要求你选jre路径就ok了。

JDK,JRE,JVM三者关系概括如下:

jdk是JAVA程序开发时用的开发工具包,其内部也有JRE运行环境JRE。JRE是JAVA程序运行时需要的运行环境,就是说如果你光是运行JAVA程序而不是去搞开发的话,只安装JRE就能运行已经存在的JAVA程序了。JDk、JRE内部都包含JAVA虚拟机JVM,JAVA虚拟机内部包含许多应用程序的类的解释器和类加载器等等。

5.Java三种注释类型

共有单行注释、多行注释、文档注释3种注释类型。使用如下:

单行注释,采用“//”方式.只能注释一行代码。如://类成员变量

多行注释,采用“/*...*/”方式,可注释多行代码,其中不允许出现嵌套。如:

/*System.out.println("a");

System.out.println("b");

System.out.println("c");*/

文档注释,采用“/**...*/”方式。如:

/**

* 子类 Dog

* @author Administrator

**/

public class Dog extends Animal{}

6.8种基本数据类型及其字节数
数据类型 关键字 字节数
数值型 整数型 byte 1
short 2
int 4
long 8
浮点型 float 4
double 8
布尔型 boolean 1(位)
字符型 char 2
7.i++和++i的异同之处

共同点:

1、i++和++i都是变量自增1,都等价于i=i+1

2、如果i++,++i是一条单独的语句,两者没有任何区别

3、i++和++i的使用仅仅针对变量。 5++和++5会报错,因为5不是变量。

不同点:

如果i++,++i不是一条单独的语句,他们就有区别i++ :先运算后增1。如:

int x=5;
int y=x++;
System.out.println("x="+x+", y="+y);
    //以上代码运行后输出结果为:x=6, y=5

++i : 先增1后运算。如:

int x=5;
int y=++x;
System.out.println("x="+x+", y="+y);
    //以上代码运行后输出结果为:x=6, y=6
8.&和&&的区别和联系,|和||的区别和联系

&和&&的联系(共同点):

&和&&都可以用作逻辑与运算符,但是要看使用时的具体条件来决定。

操作数1&操作数2,操作数1&&操作数2,

表达式1&表达式2,表达式1&&表达式2,

情况1:当上述的操作数是boolean类型变量时,&和&&都可以用作逻辑与运算符。

情况2:当上述的表达式结果是boolean类型变量时,&和&&都可以用作逻辑与运算符。

表示逻辑与(and),当运算符两边的表达式的结果或操作数都为true时,整个运算结果才为true,否则,只要有一方为false,结果都为false。

&和&&的区别(不同点):

(1)、&逻辑运算符称为逻辑与运算符,&&逻辑运算符称为短路与运算符,也可叫逻辑与运算符。

对于&:无论任何情况,&两边的操作数或表达式都会参与计算。

对于&&:当&&左边的操作数为false或左边表达式结果为false时,&&右边的操作数或表达式将不参与计算,此时最终结果都为false。

综上所述,如果逻辑与运算的第一个操作数是false或第一个表达式的结果为false时,对于第二个操作数或表达式是否进行运算,对最终的结果没有影响,结果肯定是false。推介平时多使用&&,因为它效率更高些。

、&还可以用作位运算符。当&两边操作数或两边表达式的结果不是boolean类型时,&用于按位与运算符的操作。

|和||的区别和联系与&和&&的区别和联系类似

9.用最有效率的方法算出2乘以8等于多少

使用位运算来实现效率最高。位运算符是对操作数以二进制比特位为单位进行操作和运算,操作数和结果都是整型数。对于位运算符“<<”, 是将一个数左移n位,就相当于乘以了2的n次方,那么,一个数乘以8只要将其左移3位即可,位运算cpu直接支持的,效率最高。所以,2乘以8等于几的最效率的方法是2 << 3

10.基本数据类型的类型转换规则

基本类型转换分为自动转换和强制转换。

自动转换规则:容量小的数据类型可以自动转换成容量大的数据类型,也可

以说低级自动向高级转换。这儿的容量指的不是字节数,而是指类型表述的范围。

强制转换规则:高级变为低级需要强制转换。

如何转换:

(1)赋值运算符“=”右边的转换,先自动转换成表达式中级别最高的数据类型,再进行运算。

(2)赋值运算符“=”两侧的转换,若左边级别>右边级别,会自动转换;若左边级别 == 右边级别,不用转换;若左边级别 < 右边级别,需强制转换。

(3)可以将整型常量直接赋值给byte, short, char等类型变量,而不需要进行强制类型转换,前提是不超出其表述范围,否则必须进行强制转换。

11.if多分支语句和switch多分支语句的异同之处

相同之处:都是分支语句,多超过一种的情况进行判断处理。

不同之处:

switch更适合用于多分支情况,就是有很多种情况需要判断处理,判断条件类型单一,只有一个入口,在分支执行完后(如果没有break跳出),不加判断地执行下去;而if—elseif---else多分枝主要适用于分支较少的分支结构,判断类型不是单一,只要一个分支被执行后,后边的分支不再执行。switch为等值判断(不允许比如>= <=),而if为等值和区间都可以,if的使用范围大。

12.while和do-while循环的区别

while先判断后执行,第一次判断为false,循环体一次都不执行

do while先执行 后判断,最少执行1次。

如果while循环第一次判断为true, 则两种循环没有区别。

13.break和continue的作用

break: 结束当前循环并退出当前循环体。

break还可以退出switch语句

continue: 循环体中后续的语句不执行,但是循环没有结束,继续进行循环条件的判断(for循环还会i++)。continue只是结束本次循环。

14.请使用递归算法计算n!
package com.bjsxt;
import java.io.File;
public class $ {
public static void main(String[] args) {
        String path = "D:/301SXT";
        test(path);
    }
    private static void test(String path) {
        File f = new File(path);
        File[] fs = f.listFiles();
        if (fs == null) {
            return;
        }
        for (File file : fs) {
            if (file.isFile()) {
                System.out.println(file.getPath());
            } else {
                test(file.getPath());
            }
        }
    }
15.递归的定义和优缺点

递归算法是一种直接或者间接地调用自身算法的过程。在计算机编写程序中,递归算法对解决一大类问题是十分有效的,它往往使算法的描述简洁而且易于理解。

递归算法解决问题的特点:

(1) 递归就是在过程或函数里调用自身。

(2) 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。

(3) 递归算法解题通常显得很简洁,但运行效率较低。所以一般不提倡用递归算法设计程序。

(4) 在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等。所以一般不提倡用递归算法设计程序。

16.数组的特征

数组是(相同类型数据)的(有序)(集合)

数组会在内存中开辟一块连续的空间,每个空间相当于之前的一个变量,称为数组的元素element

元素的表示 数组名[下标或者索引] scores[7] scores[0] scores[9]

索引从0开始

每个数组元素有默认值 double 0.0 boolean false int 0

数组元素有序的,不是大小顺序,是索引 的顺序

数组中可以存储基本数据类型,可以存储引用数据类型;但是对于一个数组而言,数组的类型是固定的,只能是一个

length:数组的长度

数组的长度是固定的,一经定义,不能再发生变化(数组的扩容)

17.请写出冒泡排序代码
package com.bjsxt;

public class TestBubbleSort {
public static void sort(int[] a) {
int temp = 0;
// 外层循环,它决定一共走几趟
for (int i = 0; i <a.length-1; ++i) {
//内层循环,它决定每趟走一次
for (int j = 0; j <a.length-i-1 ; ++j) {
//如果后一个大于前一个
if (a[j + 1] < a[j]) {
//换位
temp = a[j];a[j] = a[j + 1];a[j + 1] = temp;
}
}
}

public static void sort2(int[] a) {
int temp = 0;
for (int i = 0; i <a.length-1; ++i) {
//通过符号位可以减少无谓的比较,如果已经有序了,就退出循环
int flag = 0;
for (int j = 0; j <a.length-1-i ; ++j) {
if (a[j + 1] < a[j]) {
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
flag = 1;
}
}
if(flag == 0){
break;
}
}
}
}
18.请写出选择排序的代码
package com.bjsxt;

public class TestSelectSort {
public static void sort(int arr[]) {
int temp = 0;
for (int i = 0; i < arr.length - 1; i++) {
// 认为目前的数就是最小的, 记录最小数的下标
int minIndex = i;
for (int j = i + 1; j < arr.length; j++) {
if (arr[minIndex] > arr[j]) {
// 修改最小值的下标
minIndex = j;
}
}
// 当退出for就找到这次的最小值
if (i != minIndex) {
temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
}
}
}
19.请写出插入排序的代码
package com.bjsxt;

public class TestInsertSort {
public static void sort(int arr[]) {
int i, j;
for (i = 1; i < arr.length; i++) {
int temp = arr[i];
for (j = i; j > 0 && temp < arr[j - 1]; j--) {
arr[j] = arr[j - 1];
}
arr[j] = temp;
}
}
}
20.可变参数的作用和特点

总结1:可变参数

1.可变参数的形式 ...

2.可变参数只能是方法的形参

3.可变参数对应的实参可以0,1,2.....个,也可以是一个数组

4.在可变参数的方法中,将可变参数当做数组来处理

5.可变参数最多有一个,只能是最后一个

6.可变参数好处:方便 简单 减少重载方法的数量

7.如果定义了可变参数的方法,不允许同时定义相同类型数组参数的方法

总结2:数组做形参和可变参数做形参联系和区别

联系:

1.实参都可以是数组;2.方法体中,可变参数当做数组来处理

区别:

1.个数不同 可变参数只能有一个数组参数可以多个

2.位置不同 可变参数只能是最后一个 数组参数位置任意

3.实参不同 可变参数实参可以0,1,2.....个,也可以是一个数组,数组的实参只能是数组

21.类和对象的关系

类是对象的抽象,而对象是类的具体实例。类是抽象的,不占用内存,而对象是具体的,占用存储空间。类是用于创建对象的蓝图,它是一个定义包括在特定类型的对象中的方法和变量的软件模板。

类和对象好比图纸和实物的关系,模具和铸件的关系。

比如人类就是一个概念,人类具有身高,体重等属性。人类可以做吃饭、说话等方法。

小明就是一个具体的人,也就是实例,他的属性是具体的身高200cm,体重180kg,他做的方法是具体的吃了一碗白米饭,说了“12345”这样一句话。

22.面向过程和面向对象的区别

两者都是软件开发思想,先有面向过程,后有面向对象。在大型项目中,针对面向过程的不足推出了面向对象开发思想。

比喻

蒋介石和毛泽东分别是面向过程和面向对象的杰出代表,这样充分说明,在解决复制问题时,面向对象有更大的优越性。

面向过程是蛋炒饭,面向对象是盖浇饭。盖浇饭的好处就是“菜”“饭”分离,从而提高了制作盖浇饭的灵活性。饭不满意就换饭,菜不满意换菜。用软件工程的专业术语就是“可维护性”比较好,“饭” 和“菜”的耦合度比较低。

区别

编程思路不同: 面向过程以实现功能的函数开发为主,而面向对象要首先抽象出类、属性及其方法,然后通过实例化类、执行方法来完成功能。

封装性:都具有封装性,但是面向过程是封装的是功能,而面向对象封装的是数据和功能。

面向对象具有继承性和多态性,而面向过程没有继承性和多态性,所以面向对象优势是明显。

方法重载和方法重写(覆盖)的区别

英文 位置不同 作用不同
重载 overload 同一个类中 在一个类里面为一种行为提供多种实现方式并提高可读性
重写 override 子类和父类间 父类方法无法满足子类的要求,子类通过方法重写满足要求
修饰符 返回值 方法名 参数 抛出异常
重载 无关 无关 相同 不同 无关
重写 大于等于 小于等于 相同 相同 小于等于
23.this和super关键字的作用

this是对象内部指代自身的引用,同时也是解决成员变量和局部变量同名问题;this可以调用成员变量,不能调用局部变量;this也可以调用成员方法,但是在普通方法中可以省略this,在构造方法中不允许省略,必须是构造方法的第一条语句。,而且在静态方法当中不允许出现this关键字。

super代表对当前对象的直接父类对象的引用,super可以调用直接父类的成员变量(注意权限修饰符的影响,比如不能访问private成员)

super可以调用直接父类的成员方法(注意权限修饰符的影响,比如不能访问private成员);super可以调用直接父类的构造方法,只限构造方法中使用,且必须是第一条语句。

24.static关键字的作用

static可以修饰变量、方法、代码块和内部类

static属性属于这个类所有,即由该类创建的所有对象共享同一个static属性。可以对象创建后通过对象名.属性名和类名.属性名两种方式来访问。也可以在没有创建任何对象之前通过类名.属性名的方式来访问。

static变量和非static变量的区别(都是成员变量,不是局部变量)

1.在内存中份数不同

不管有多少个对象,static变量只有1份。对于每个对象,实例变量都会有单独的一份

static变量是属于整个类的,也称为类变量。而非静态变量是属于对象的,也称为实例变量

2.在内存中存放的位置不同

2.在内存中存放的位置不同

3.访问的方式不同

实例变量: 对象名.变量名 stu1.name="小明明";

静态变量:对象名.变量名 stu1.schoolName="西二旗小学"; 不推荐如此使用

类名.变量名 Student.schoolName="东三旗小学"; 推荐使用

4.在内存中分配空间的时间不同

Student.schoolName="东三旗小学";或者Student stu1 = new Student("小明","男",20,98);

static方法也可以通过对象名.方法名和类名.方法名两种方式来访问

static代码块。当类被第一次使用时(可能是调用static属性和方法,或者创建其对象)执行静态代码块,且只被执行一次,主要作用是实现static属性的初始化。

static内部类:属于整个外部类,而不是属于外部类的每个对象。不能访问外部类的非静态成员(变量或者方法),.可以访问外部类的静态成员

25.final和abstract关键字的作用

final和abstract是功能相反的两个关键字,可以对比记忆

abstract可以用来修饰类和方法,不能用来修饰属性和构造方法;使用abstract修饰的类是抽象类,需要被继承,使用abstract修饰的方法是抽象方法,需要子类被重写。

final可以用来修饰类、方法和属性,不能修饰构造方法。使用final修饰的类不能被继承,使用final修饰的方法不能被重写,使用final修饰的变量的值不能被修改,所以就成了常量。

特别注意:final修饰基本类型变量,其值不能改变,由原来的变量变为常量;但是final修饰引用类型变量,栈内存中的引用不能改变,但是所指向的堆内存中的对象的属性值仍旧可以改变。例如

package com.bjsxt;

class Test {
    public static void main(String[] args) {
        final Dog dog = new Dog("欧欧");
        dog.name = "美美";//正确
        dog = new Dog("亚亚");//错误
    }
}
26.final、finally、finalize的区别

final修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承例如:String类、Math类等。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重写,但是能够重载。 使用final修饰的对象,对象的引用地址不能变,但是对象的值可以变!

finally在异常处理时提供 finally 块来执行任何清除操作。如果有finally的话,则不管是否发生异常,finally语句都会被执行。一般情况下,都把关闭物理连接(IO流、数据库连接、Socket连接)等相关操作,放入到此代码块中。

finalize方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要清理工作。finalize() 方法是在垃圾收集器删除对象之前被调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。 一般情况下,此方法由JVM调用,程序员不要去调用!

27.写出java.lang.Object类的六个常用方法

(1)public boolean equals(java.lang.Object)

比较对象的地址值是否相等,如果子类重写,则比较对象的内容是否相等;

(2)public native int hashCode() 获取哈希码

(3)public java.lang.String toString() 把数据转变成字符串

(4)public final native java.lang.Class getClass() 获取类结构信息

(5)protected void finalize() throws java.lang.Throwable

垃圾回收前执行的方法

(6)protected native Object clone() throws

java.lang.CloneNotSupportedException 克隆

(7)public final void wait() throws java.lang.InterruptedException

多线程中等待功能

(8)public final native void notify() 多线程中唤醒功能

(9)public final native void notifyAll() 多线程中唤醒所有等待线程的功能

28.private/默认/protected/public权限修饰符的区别
同一个类 同一个包 子类 所有类
private *
defailt * *
protected * * *
public * * * *

类的访问权限只有两种

public公共的 可被同一项目中所有的类访问。 (必须与文件名同名)

default默认的 可被同一个包中的类访问。

成员(成员变量或成员方法)访问权限共有四种:

public 公共的 可以被项目中所有的类访问。(项目可见性)

protected 受保护的 可以被这个类本身访问;同一个包中的所有其他的类访问;被它的子类(同一个包以及不同包中的子类)访问。(子类可见性)

default 默认的被这个类本身访问;被同一个包中的类访问。(包可见性)

private 私有的 只能被这个类本身访问。(类可见性)

29.继承条件下构造方法的执行过程

继承条件下构造方法的调用规则如下:

情况1:如果子类的构造方法中没有通过super显式调用父类的有参构造方法,也没有通过this显式调用自身的其他构造方法,则系统会默认先调用父类的无参构造方法。在这种情况下,写不写“super();”语句,效果是一样的。

情况2:如果子类的构造方法中通过super显式调用父类的有参构造方法,那将执行父类相应构造方法,而不执行父类无参构造方法。

情况3:如果子类的构造方法中通过this显式调用自身的其他构造方法,在相应构造方法中应用以上两条规则。

特别注意的是,如果存在多级继承关系,在创建一个子类对象时,以上规则会多次向更高一级父类应用,一直到执行顶级父类Object类的无参构造方法为止。

30.==和equals的区别和联系

“==”是关系运算符,equals()是方法,同时他们的结果都返回布尔值;

“==”使用情况如下:

a) 基本类型,比较的是值

b) 引用类型,比较的是地址

c) 不能比较没有父子关系的两个对象

equals()方法使用如下:

a) 系统类一般已经覆盖了equals(),比较的是内容。

b) 用户自定义类如果没有覆盖equals(),将调用父类的equals (比如是Object),而Object的equals的比较是地址(return (this == obj);)

c) 用户自定义类需要覆盖父类的equals()

注意:Object的==和equals比较的都是地址,作用相同

31.谈谈Java的多态

实现多态的三个条件(前提条件,向上转型、向下转型)

1、继承的存在;(继承是多态的基础,没有继承就没有多态)

2、子类重写父类的方法。(多态下会调用子类重写后的方法)

3、父类引用变量指向子类对象。(涉及子类到父类的类型转换)

向上转型 Student person = new Student()

将一个父类的引用指向一个子类对象,成为向上转型,自动进行类型转换。此时通过父类引用变量调用的方法是子类覆盖或继承父类的方法,而不是父类的方法此时通过父类引用变量无法调用子类特有的方法。

向下转型 Student stu = (Student)person;

将一个指向子类对象的引用赋给一个子类的引用,成为向下转型,此时必须进行强制类型转换。向下转型必须转换为父类引用指向的真实子类类型,,否则将出现ClassCastException,不是任意的强制转换

向下转型时可以结合使用instanceof运算符进行强制类型转换,比如出现转换异常---ClassCastException

32.简述Java的垃圾回收机制

传统的C/C++语言,需要程序员负责回收已经分配内存。

显式回收垃圾回收的缺点:

1)程序忘记及时回收,从而导致内存泄露,降低系统性能。

2)程序错误回收程序核心类库的内存,导致系统崩溃。

Java语言不需要程序员直接控制内存回收,是由JRE在后台自动回收不再使用的内存,称为垃圾回收机制,简称GC;

1)可以提高编程效率。

2)保护程序的完整性。

3)其开销影响性能。Java虚拟机必须跟踪程序中有用的对象,确定哪些是无用的。

垃圾回收机制的 特点

1)垃圾回收机制回收JVM堆内存里的对象空间,不负责回收栈内存数据。

2)对其他物理连接,比如数据库连接、输入流输出流、Socket连接无能为力。

3)垃圾回收发生具有不可预知性,程序无法精确控制垃圾回收机制执行。

4)可以将对象的引用变量设置为null,暗示垃圾回收机制可以回收该对象。

现在的JVM有多种垃圾回收 实现算法,表现各异。

垃圾回收机制回收任何对象之前,总会先调用它的finalize方法(如果覆盖该方法,让一个新的引用变量重新引用该对象,则会重新激活对象)。

程序员可以通过System.gc()或者Runtime.getRuntime().gc()来通知系统进行垃圾回收,会有一些效果,但是系统是否进行垃圾回收依然不确定。

永远不要主动调用某个对象的finalize方法,应该交给垃圾回收机制调用。

33.基本数据类型和包装类

1) 八个基本数据类型的包装类

基本数据类型 包装类
byte Byte
boolean Boolean
short Short
char Character
int Integer
long Long
float Float
double Double

2)为什么为基本类型引入包装类

2.1基本数据类型有方便之处,简单、高效。

2.2但是Java中的基本数据类型却是不面向对象的(没有属性、方法),这在实际使用时存在很多的不便(比如集合的元素只能是Object)。

为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行包装,这样八个和基本数据类型对应的类统称为包装类(Wrapper Class)。

3) 包装类和基本数据类型之间的转换

3.1包装类------ wrapperInstance.xxxValue() ------>基本数据类型

3.2包装类-------new WrapperClass(primitive)

3.2包装类-------new WrapperClass(primitive)

4) 自动装箱和自动拆箱

JDK1.5提供了自动装箱(autoboxing)和自动拆箱(autounboxing)功能, 从而实现了包装类和基本数据类型之间的自动转换

5) 包装类还可以实现基本类型变量和字符串之间的转换

基本类型变量--->String.valueof()--->字符串 基本类型变量<---WrapperClass.parseXxx(string)---字符串

34.Integer与int的区别

int是java提供的8种原始数据类型之一,Java为每个原始类型提供了封装类,Integer是java为int提供的封装类。

int是java提供的8种原始数据类型之一,Java为每个原始类型提供了封装类,Integer是java为int提供的封装类。

在Hibernate中,如果将OID定义为Integer类型,那么Hibernate就可以根据其值是否为null而判断一个对象是否是临时的,如果将OID定义为了int类型,还需要在hbm映射文件中设置其unsaved-value属性为0。

另外,Integer提供了多个与整数相关的操作方法,例如,将一个字符串转换成整数,Integer中还定义了表示整数的最大值和最小值的常量。

35.java.sql.Date和java.util.Date的联系和区别

1) java.sql.Date是java.util.Date的子类,是一个包装了毫秒值的瘦包装器,允许 JDBC 将毫秒值标识为 SQL DATE 值。毫秒值表示自 1970 年 1 月 1 日 00:00:00 GMT 以来经过的毫秒数。 为了与 SQL DATE 的