面试题整理(答案从网上找到后整理的)

1、 java中如何把String型转化成double型的

String s = "123.345";
double num = Double.parseDouble(s);

当string里的数字比较大时:

例如:
字符串“1467000000”通过Double.parseDouble以后转化为double类型,然后我用它除以100000000。结果得到的值变成14.669999999999998。再转化成字符串与“14.67”比较,结果是不相等。

精 度的问题!用基本类型的double类型进行运算可能会丢失精度。而且特别大的数又没法处理。所以如果用BigDecimal这个类问题就解决了。这个类 在java.Math包下。它可以处理任意精度的数据。对于楼主出现的问题,我从新写了段代码,供楼主参考。但是主要是还得查看API!代码如下:

import java.math.*;

public class oopp

{

 public static void main(String[] args)

 {

  String a="1467000000";

  double aa=Double.parseDouble(a);

  BigDecimal beichushu=new BigDecimal(aa);

  BigDecimal chushu=new BigDecimal(100000000);

  BigDecimal result=beichushu.divide(chushu,new MathContext(4));//MathConText(4)表示结果精确4位!

  boolean isTrue=String.valueOf(result).equals("14.67");

  System.out.println("1467000000除以100000000="+result);

  System.out.println(result+"与14.67比较的结果是"+isTrue);

 }

}

2、 Java double转String  

把 一个double类型的值转成string,网上有很多的方法,包括用String.valueOf(Double d),或者 String str = "" + d, 或者用DecimalFormat df = new DecimalFormat("#.00"), 以及用NumberFormat类等。但是,当double的值特别大的时候,这些方法都是没有用的,因为double类型被转化成科学计数法了,对于小 数点后面的值就没有保存。后来发现用BigDecimal bd = new BigDecimal(d),然后调用bd.setScale(arg0, arg1)这个方法特别有效。

3、 JNDI是java访问名字和目录服务的接口 

4、 写出sql查询数据库中的第5-10条记录

sql server 方案1:

select top 6 * 
from Table 
where table_Id not in (select top 4 tableId from Table)

===============================

通用公式:查询sql server数据库中的第m到n条记录

select top (n-m+1) *  from t where id in (select top (m-1) id from t order by id) order

by id desc

================================

查询Sql Server数据库中后10条记录

SELECT TOP 10 FROM 表名 ORDER BY 排序列 DESC

 

mysql 方案:

select * from t order by id limit 5,6

==============================

select * from t order by id limit m,(n-m+1)

mysql 中limit的用法:

select * from table limit m,n
其中m是指记录开始的index,从0开始,表示第一条记录
n是指从第m+1条开始,取n条。

===============================

查询Mysql数据库中后10条记录

select * from t order by id  desc limit 10

 

oracle 方案:

select * from (select  rownum r,* where r<=10) where r > 4

===========================================

select * from (select rownum r,* from t where r<=n)  where r>m-1

===========================================

查询Oracle数据库中后10条记录

select * from t where rownum <=10 order by id desc

其中rownum为oracle的关键字

5、 写出学生信息的xml文件

写一个XML文件,文件里的内容有姓名,年龄,注册时间(要Date格式的),大概写三四个成员就可以了

<?xml version="1.0" encoding="utf-8" ?>
<root>
  <studetns>
    <student>
      <name>saa</name>
      <age>14</age>
      <CreateDate>2010-11-11</CreateDate>
    </student>
    <student>
      <name>sa</name>
      <age>14</age>
      <CreateDate>2010-11-11</CreateDate>
    </student>
    <student>
      <name>saaa</name>
      <age>14</age>
      <CreateDate>2010-11-11</CreateDate>
    </student>
  </studetns>
</root>

6、 查询班级中的男生人数,女生人数

学生表(所在班级,性别)
现要得出一张表,(班级,男数,女数)

select 所在班级,男生人数=sum(case when 性别=

'男' then 1 else 0 end),
    女生人数=sum(case when 性别='女' then 1 else 0 end) 
from 学生表
group by 所在班级

7、 tcp和udp的区别

TCP(Transmission Control Protocol,传输控制协议)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“对话”才能建立起来。

UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去!
  UDP适用于一次只传送少量数据、对可靠性要求不高的应用环境。

tcp协议和udp协议的差别
TCP UDP
是否连接 面向连接 面向非连接
传输可靠性 可靠 不可靠
应用场合 传输大量数据 少量数据
速度 慢 快

TCP---传输控制协议,提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。
UDP---用户数据报协议,是一个简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它 们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。

8、 linux下进程间通信(IPC)的几种主要手段简介:

  1. 管道(Pipe)及有名管道(named pipe):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信;
  2. 信 号(Signal):信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程间通信外,进程还可以发送信号给进程本身;linux除了 支持Unix早期信号语义函数sigal外,还支持语义符合Posix.1标准的信号函数sigaction(实际上,该函数是基于BSD的,BSD为了 实现可靠信号机制,又能够统一对外接口,用sigaction函数重新实现了signal函数);
  3. 报文(Message)队列(消息队 列):消息队列是消息的链接表,包括Posix消息队列system V消息队列。有足够权限的进程可以向队列中添加消息,被赋予读权限的进程则可以读走队列中的消息。消息队列克服了信号承载信息量少,管道只能承载无格式字 节流以及缓冲区大小受限等缺点。
  4. 共享内存:使得多个进程可以访问同一块内存空间,是最快的可用IPC形式。是针对其他通信机制运行效率较低而设计的。往往与其它通信机制,如信号量结合使用,来达到进程间的同步及互斥。
  5. 信号量(semaphore):主要作为进程间以及同一进程不同线程之间的同步手段。
  6. 套接口(Socket):更为一般的进程间通信机制,可用于不同机器之间的进程间通信。起初是由Unix系统的BSD分支开发出来的,但现在一般可以移植到其它类Unix系统上:Linux和System V的变种都支持套接字。

9、 程序 进程 线程的区别

进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性。进程和线程的区别在于: 

简而言之,一个程序至少有一个进程,一个进程至少有一个线程. 

线程的划分尺度小于进程,使得多线程程序的并发性高。 

另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。 

线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。 

从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。 

10、    JDBC 连接Mysql

 Class.forName(“com.mysql.jdbc.Driver”)

 Connection connectMySQL  =  DriverManager.geiConnection(“jdbc:mysql://localhost:3306/myuser","root" ,"root" );

Statement statamentMySQL =connectMySQL.createStatement();

 statement.excuteUpdate( "INSERT INTO staff(name, age, sex,address, depart, worklen,wage)" + " VALUES ('Tom1', 321, 'M', 'china','Personnel','3','3000' ) ") ; 

ResultSet resultSel = statement.executeQuery( "select * from staff" );

11、    数据库三范式是什么

第一范式(1NF):字段具有原子性,不可再分。

第二范式就是非主属性非部分依赖于主关键字

第三范式(3NF)要求一个

数据库表中不包含已在其它表中已包含的非主关键字信息。

所以第三范式具有如下特征:

1,每一列只有一个值

2,每一行都能区分。

3,每一个表都不包含其他表已经包含的非主关键字信息。

12、      SAX与DOM解析XML的区别

解析xml有四种方法:DOM,SAX,DOM4j,JDOM.
   我们主要学了两种:DOM和SAX.
     DOM适于解析比较简单的XML而SAX则适于解析较复杂的XML文件。各有各的好。

SAX是基于事件流的解析,DOM是基于XML文档树结构的解析
     DOM和SAX的不同:
     1. DOM是基于内存的,不管文件有多大,都会将所有的内容预先装载到内存中。从而消耗很大的内存空间。而SAX是基于事件的。当某个事件被触发时,才获取相应的XML的部分数据,从而不管XML文件有多大,都只占用了少量的内存空间。
     2. DOM可以读取XML也可以向XML文件中插入数据,而SAX却只能对XML进行读取,而不能在文件中插入数据。这也是SAX的一个缺点。
     3.SAX的另一个缺点:DOM我们可以指定要访问的元素进行随机访问,而SAX则不行。SAX是从文档开始执行遍历的。并且只能遍历一次。也就是说我们不能随机的访问XML文件,只能从头到尾的将XML文件遍历一次(当然也可以中间截断遍历)。

Serialization(序列化)是一种将对象以一连串的字节描述的过程;反序列化deserialization是一种将这些字节重建成一个对象的过程。Java序列化API提供一种处理对象序列化的标准机制。

13、    多线程

 Java线程的创建和启动:
可以有两种方式创建新的线程:
第一种:
1.定义线程类实现Runnable接口
2.Thread myThread = new Thread(target);   //target为Runnable接口类型
3.Runnable中只有一个方法:public void run();用以定义线程运行体
4.使用Runnable接口可以为多个线程提供共享的数据
5.在实现Runnable接口的类的run()方法定义中可以使用Thread的静态方法public static Thread currentThread();获取当前线程的引用

第二种:
1.可以定义一个Thread的子类并重写其run方法如:
class MyThread extends Thread {   
public void run() {...}
}   
2.然后生成该类的对象:
MyThread myThread = new MyThread();

 

14、    Java是Unicode编码,unicode码是2个字节

15、    非常有用的Java程序片段

http://developer.51cto.com/art/201306/398347_1.htm

16、    在Hashtable上下文中同步是什么意思?

同步意味着在一个时间点只能有一个线程可以修改哈希表,任何线程在执行hashtable的更新操作前需要获取对象锁,其他线程等待锁的释放。

17、    HashMap不是同步的,而Hashtable是同步的。

18、    Hibernate中load()和get()的区别:

load加载方法:

Java代码

Users user = (Users)session.load(Users.class, userId);    

Users user = (Users)session.load(Users.class, userId);

这句代码不会去执行数据库查询,只有用到user时才会去执行数据库查询。

get加载方法:

Java代码

Users user = (Users)session.get(Users.class, userId);  

Users user = (Users)session.get(Users.class, userId);

则立即去执行数据库查询。 所以Users user = (Users)session.load(Users.class, userId);不会执行任何sql。

两加载方法区别:

区别1:如果数据库中,没有userId的对象。如果通过get方法加载,则返回的是一个null;如果通过load加载,则返回一个代理对象,如 果后面代码如果调用user对象的某个属性(比如user.getPassword())会抛出异 常:org.hibernate.ObjectNotFoundException;

区别2:load支持延迟加载,get不支持延迟加载。

19、    Struts 2框架组成

本身大致可以分为3个部分:核心控制器FilterDispatcher、业务控制器Action和用户实现的企业业务逻辑组件。

核心控制器 FilterDispatcher是Struts 2框架的基础,包含了框架内部的控制流程和处理机制。

业务控制器Action和业务逻辑组件是需要用户来自己实现的。

用户在开发Action和业务逻辑组 件的同时,还需要编写相关的配置文件,供核心控制器FilterDispatcher来使用。

 Struts 2的工作流程相对于Struts 1要简单,与WebWork框架基本相同,所以说Struts 2是WebWork的升级版本。

20、    Struts2基本简要流程如下:

1、  客户端浏览器发出HTTP请求。

2、根据web.xml配置,该请求被 FilterDispatcher接收。

3、根据struts.xml配置,找到需要调用的Action类和方法, 并通过IoC方式,将值注入给Aciton。

4、Action调用业务逻辑组件处理业务逻辑,这一步包含表单验证。

5、Action执行完毕,根据 struts.xml中的配置找到对应的返回结果result,并跳转到相应页面。6、返回HTTP响应到客户端浏览器。

21、Ajax的优点 
    Ajax的给我们带来的好处大家基本上都深有体会,在这里我只简单的讲几点: 
1、最大的一点是页面无刷新,在页面内与服务器通信,给用户的体验非常好。 
2、使用异步方式与服务器通信,不需要打断用户的操作,具有更加迅速的响应能力。 
3、可以把以前一些服务器负担的工作转嫁到客户端,利用客户端闲置的能力来处理,减轻服务器和带宽的负担,节约空间和宽带租用成本。并且减轻服务器的负担,ajax的原则是“按需取数据”,可以最大程度的减少冗余请求,和响应对服务器造成的负担。
4、基于标准化的并被广泛支持的技术,不需要下载插件或者小程序。

 

 

 

转载于:https://www.cnblogs.com/sophine/archive/2013/05/17/3083921.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/408843.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux gst-launch 播放视频旋转,【视频开发】Gstreamer中一些gst-launch常用命令

GStreamer是著名的开源多媒体框架&#xff0c;功能强大&#xff0c;其命令行程序 gst-launch 可以实现很多常规测试、播放等&#xff0c;作为系统调试等是非常方便的。1、摄像头测试gst-launch v4l2src ! xvimagesinkgst-launch v4l2src ! video/x-raw-yuv,width320,height240,…

[资源分享] TensorFlow 官方中文版教程来了

最近&#xff0c;TensorFlow 提供了中文版的教程&#xff08;Tutorials&#xff09;和指南&#xff08;Guide&#xff09;。其中&#xff0c;教程是介绍了一些基本的机器学习模型&#xff0c;包括分类、回归等&#xff0c;也包括一些深度学习方面的模型&#xff0c;包括常用的卷…

深度学习4线性回归,逻辑回归

y是连续的则是一个回归问题&#xff0c;y是离散的则是一个分类问题&#xff0c;这边就开始考虑y是离散的情况。 对于这样的问题很多&#xff0c;比如判断一个人是否生病&#xff0c;或者判断一个邮件是否是垃圾邮件。 回归时连续型的&#xff0c;一般不用在上述的分类问题中&am…

linux系统shell知识点,Linux 系统中shell知识点说明和常用的帮助命令简单介绍 | IT工程师的生活足迹...

linux 系统内核和各种驱动程序覆盖在下层的硬件系统之上&#xff1b;对上提供各种系统调用接口API&#xff0c;供shell和各种程序应用程序调用。总体结构图如下&#xff1a;操作系统的层次架构一般我们理解shell指的是BASH,即linux系统默认的字符界面使用的shell版本。另外还有…

必读的AI和深度学习博客

技术的提高是需要日积月累的努力&#xff0c;除了看书看视频外&#xff0c;一个很有效的提高方法当然就是阅读大牛的博客文章了&#xff0c;所谓听君一席话&#xff0c;胜读十年书&#xff0c;虽然读大牛的文章没有这么夸张&#xff0c;但也可以让你解决技术上的一些难题&#…

[教程]一份简单易懂的 TensorFlow 教程

上周分享了一份 TensorFlow 官方的中文版教程&#xff0c;这次分享的是在 Github 上的一份简单易懂的教程&#xff0c;项目地址是&#xff1a; https://github.com/open-source-for-science/TensorFlow-Course#why-use-tensorflow 如下图所示&#xff0c;已经有超过7000的 St…

NSMutableArray 如果只进行了声明,而没有进行初始化,那么程序不会报错,但是,声明的那个变量不起任何作用...

在.h文件中声明了NSMutableArray变量&#xff0c;一定要记得在.m文件中写上 [NSMutableArray alloc]init]; 对变量进行初始化。 其它数组型变量亦同理。 删除数组元素 /* //删除数组元素 NSMutableArray *tempArray[[NSMutableArray alloc]initWithObjects:"one",…

linux 2.6 hash表作用,高性能分布式哈希表FastDHT介绍及安装配置

FastDHT介绍FastDHT 是一个高性能的分布式哈希系统 (DHT) &#xff0c;使用 Berkeley DB 做数据存储&#xff0c;使用 libevent 做网络IO处理&#xff0c;提供 Java 版的客户端接口包。适合用来存储用户在线、会话等小数据量信息。FastDHT存储Key Value Pair支持两种存储方式:缓…

[GAN学习系列3]采用深度学习和 TensorFlow 实现图片修复(上)

在之前的两篇 GAN 系列文章–[GAN学习系列1]初识GAN以及[GAN学习系列2] GAN的起源中简单介绍了 GAN 的基本思想和原理&#xff0c;这次就介绍利用 GAN 来做一个图片修复的应用&#xff0c;主要采用的也是 GAN 在网络结构上的升级版–DCGAN&#xff0c;最初始的 GAN 采用的还是神…

用虚拟机把ubuntu安装到TF卡上

最近在学习Linux&#xff0c;考虑到将来可能不会带着自己的笔记本到处跑&#xff0c;而我又希望能随身带着个Ubuntu系统 &#xff0c;总不能在别人的电脑上装个Linux系统吧。刚好最近入手了一张 Sandisk 16G class 10 的TF卡&#xff0c;加上一个PNY的手机宝贝读卡器&#xff0…

C 语言调用CPU指令,CPU 1214C中 TSEND_C指令 最多可以使用几次-工业支持中心-西门子中国...

8次硬件版本 V3.0 支持的协议和最大的连接资源&#xff1a;3个连接用于操作面板1个连接用于编程设备(PG)与 CPU 的通信8个连接用于Open IE ( TCP, ISO on TCP, UDP) 的编程通信&#xff0c;使用T-block 指令来实现3个连接用于S7 通信的服务器端连接&#xff0c;可以实现与S7-20…

[GAN学习系列3]采用深度学习和 TensorFlow 实现图片修复(中)

上一篇文章–[GAN学习系列3]采用深度学习和 TensorFlow 实现图片修复(上&#xff09;中&#xff0c;我们先介绍了对于图像修复的背景&#xff0c;需要利用什么信息来对缺失的区域进行修复&#xff0c;以及将图像当做概率分布采样的样本来看待&#xff0c;通过这个思路来开始进行…

类String的构造函数、析构函数和赋值函数

一、类String的原型为&#xff1a; 1 class String2 {3 public:4 String(const char *str NULL); //普通构造函数5 6 ~String(void); //析构函数7 8 String(const String &other); //拷贝构造函数9 …

A的大小是多少c语言中,C/C+中字符(A)的大小

C/C中字符(A)的大小C和C中字符的大小是多少&#xff1f;据我所知&#xff0c;C和C中字符的大小都是1字节。#include int main(){printf("Size of char : %d\n",sizeof(char));return 0;}#include int main(){std::cout<return 0;}没有任何意外&#xff0c;它们都给…

[资源分享] 推荐两本电子书

又到了一周一次的资源和教程推荐。这周会推荐两本电子书&#xff0c;希望大家不只是收藏不阅读系列哦&#xff01;1. 《模式识别与机器学习》&#xff08;PRML&#xff09;免费开放下载第一本推荐的书籍就是 AI 领域里面一直都非常有名的书籍--《模式识别与机器学习》&#xff…

程序员需要知道的8个Linux命令

每个程序员&#xff0c;在职业生涯的某个时刻&#xff0c;总会发现自己需要知道一些Linux方面的知识。我并不是说你应该成为一个Linux专家&#xff0c;我的意思是&#xff0c;当面对linux命令行任务时&#xff0c;你应该能很熟练的完成。事实上&#xff0c;学会了下面8个命令&a…