日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2023/12/9 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 面试题整理(答案从网上找到后整理的) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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)的幾種主要手段簡介:

  • 管道(Pipe)及有名管道(named pipe):管道可用于具有親緣關系進程間的通信,有名管道克服了管道沒有名字的限制,因此,除具有管道所具有的功能外,它還允許無親緣關系進程間的通信;
  • 信 號(Signal):信號是比較復雜的通信方式,用于通知接受進程有某種事件發生,除了用于進程間通信外,進程還可以發送信號給進程本身;linux除了 支持Unix早期信號語義函數sigal外,還支持語義符合Posix.1標準的信號函數sigaction(實際上,該函數是基于BSD的,BSD為了 實現可靠信號機制,又能夠統一對外接口,用sigaction函數重新實現了signal函數);
  • 報文(Message)隊列(消息隊 列):消息隊列是消息的鏈接表,包括Posix消息隊列system V消息隊列。有足夠權限的進程可以向隊列中添加消息,被賦予讀權限的進程則可以讀走隊列中的消息。消息隊列克服了信號承載信息量少,管道只能承載無格式字 節流以及緩沖區大小受限等缺點。
  • 共享內存:使得多個進程可以訪問同一塊內存空間,是最快的可用IPC形式。是針對其他通信機制運行效率較低而設計的。往往與其它通信機制,如信號量結合使用,來達到進程間的同步及互斥。
  • 信號量(semaphore):主要作為進程間以及同一進程不同線程之間的同步手段。
  • 套接口(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

    總結

    以上是生活随笔為你收集整理的面试题整理(答案从网上找到后整理的)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。