『壹』 今天遇到一公司的超難的java面試題,面掛了,求幫忙!
交流一下,有些我也不會。^_^
1、數據沒有排序的嗎?排序了,可以用類似二分法搞。
3、只需用ThreadLocal包裝一下這個bean的日期屬性即可,簡單。
5、有介面直接用spring HttpInvoke遠程調用即可。
6、最簡單的辦法就是使用Terracotta伺服器集群tomcat,ecache、quartz、session一站式解決。不那樣的,緩存的話,可用memcached。tomcat中的session是復制式,直接在tomcat配置文件就可以吧。如果要實現自己手動更新感覺可以考慮用jms手動傳遞數據同步。
8、處理效率高了不少,並發效率好、數據更安全。
9、簽名的演算法是公開的,但是演算法相關的密鑰是私有的。
『貳』 java中sql問題
for(b=0;b<=a;b++){
while(rs.next()){
jTextArea2.setText("月份:"+rs.getInt(1)+"\n"+"總支出:"+rs.getString(2)+"\n"+"總利潤:"+rs.getString(3));
}
雙循環,悲劇...
rs.last();
是不是應該first下啊?
『叄』 java 。資料庫,面試題,如下圖,求SQL
select 姓名, sum(成績) as 總成績
from ...
group by 姓名
order by 總成績
『肆』 Java面試題,基本都是Java基礎題目,大家看看咋做
以Oracle為例吧
Statement為一條Sql語句生成執行計劃,
如果要執行兩條sql語句
select colume from table where colume=1;
select colume from table where colume=2;
會生成兩個執行計劃
一千個查詢就生成一千個執行計劃!
PreparedStatement用於使用綁定變數重用執行計劃
select colume from table where colume=:x;
通過set不同數據只需要生成一次執行計劃,可以重用
是否使用綁定變數對系統影響非常大,生成執行計劃極為消耗資源
兩種實現 速度差距可能成百上千倍
1.PreparedStatement是預編譯的,對於批量處理可以大大提高效率.也叫JDBC存儲過程
2.使用 Statement 對象。在對資料庫只執行一次性存取的時侯,用 Statement 對象進行處理。PreparedStatement對象的開銷比Statement大,對於一次性操作並不會帶來額外的好處。
3.statement每次執行sql語句,相關資料庫都要執行sql語句的編譯,preparedstatement是預編譯得,preparedstatement支持批處理
4.PreparedStatement對象不僅包含了SQL語句,而且大多數情況下這個語句已經被預編譯過,因而當其執行時,只需DBMS運行SQL語句,而不必先編譯。當你需要執行Statement對象多次的時候,PreparedStatement對象將會大大降低運行時間,當然也加快了訪問資料庫的速度。
5.執行許多SQL語句的JDBC程序產生大量的Statement和PreparedStatement對象。通常認為PreparedStatement對象比Statement對象更有效,特別是如果帶有不同參數的同一SQL語句被多次執行的時候。PreparedStatement對象允許資料庫預編譯SQL語句,這樣在隨後的運行中可以節省時間並增加代碼的可讀性。
第一:
prepareStatement會先初始化SQL,先把這個SQL提交到資料庫中進行預處理,多次使用可提高效率。
createStatement不會初始化,沒有預處理,沒次都是從0開始執行SQL
第二:
prepareStatement可以替換變數
在SQL語句中可以包含?,可以用ps=conn.prepareStatement("select* from Cust where ID=?");
int sid=1001;
ps.setInt(1, sid);
rs = ps.executeQuery();
可以把?替換成變數。
而Statement只能用
int sid=1001;
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select * from Cust where ID="+sid);
來實現。
第三:
prepareStatement會先初始化SQL,先把這個SQL提交到資料庫中進行預處理,多次使用可提高效率。
createStatement不會初始化,沒有預處理,沒次都是從0開始執行SQL
1. truncate和 delete只刪除數據不刪除表的結構(定義) drop語句將刪除表的結構被依賴的約束(constrain),觸發器(trigger),索引(index); 依賴於該表的 存儲過程/函數將保留,但是變為invalid狀態. 2.delete語句是dml,這個操作會放到rollback segement中,事務提交之後才生效;如果有相應的trigger, 執行的時候將被觸發. truncate,drop是ddl, 操作立即生效,原數據不放到rollback segment中,不能回滾. 操作不觸發 trigger. 3.delete語句不影響表所佔用的extent, 高水線(high watermark)保持原位置不動 顯然drop語句將表所佔用的空間全部釋放 truncate 語句預設情況下見空間釋放到 minextents個 extent,除非使用reuse storage; truncate 會將高水線復位(回到最開始). 4.速度,一般來說: drop> truncate > delete 5.安全性:小心使用drop 和truncate,尤其沒有備份的時候.否則哭都來不及. 使用上,想刪除部分數據行用delete,注意帶上where子句. 回滾段要足夠大. 想刪除表,當然用drop 想保留表而將所有數據刪除. 如果和事務無關,用truncate即可. 如果和事務有關,或者想觸發trigger,還 是用delete. 如果是整理表內部的碎片,可以用truncate跟上reuse stroage,再重新導入/插入數據/
『伍』 java面試SQL題,跪求大神解答
SELECTTOP10u.name,u.age,allin=isnull((SELECTsum(t.number*p.buyprice)FROMTEST_PRODECTp,TEST_TREEDt
WHEREp.type=t.ptypeANDt.uid=u.useridANDt.BUY_OR_SALE='BUY'),0),
allout=isnull((SELECTsum(t.number*p.saleprice)FROMTEST_PRODECTp,TEST_TREEDt
WHEREp.type=t.ptypeANDt.uid=u.useridANDt.BUY_OR_SALE='SALE'),0)
,
realin=(isnull((SELECTsum(t.number*p.buyprice)FROMTEST_PRODECTp,TEST_TREEDt
WHEREp.type=t.ptypeANDt.uid=u.useridANDt.BUY_OR_SALE='BUY'),0)-isnull((SELECTsum(t.number*p.saleprice)FROMTEST_PRODECTp,TEST_TREEDt
WHEREp.type=t.ptypeANDt.uid=u.useridANDt.BUY_OR_SALE='SALE'),0))
FROMTEST_USERu
ORDERBY(isnull((SELECTsum(t.number*p.buyprice)FROMTEST_PRODECTp,TEST_TREEDt
WHEREp.type=t.ptypeANDt.uid=u.useridANDt.BUY_OR_SALE='BUY'),0)-isnull((SELECTsum(t.number*p.saleprice)FROMTEST_PRODECTp,TEST_TREEDt
WHEREp.type=t.ptypeANDt.uid=u.useridANDt.BUY_OR_SALE='SALE'),0))DESC
第2題答案
經過測試無誤
『陸』 JAVA和SQL面試題
(2)查詢B列中長度大於2的記錄,結果為
A B
1 abc
可能么? 1對應a 而不是abc
--> 生成測試數據: @T
DECLARE @T TABLE (A INT,B VARCHAR(3))
INSERT INTO @T
SELECT 1,'a' UNION ALL
SELECT 2,'b' UNION ALL
SELECT 3,'abc' UNION ALL
SELECT 4,'c' UNION ALL
SELECT 5,'a' UNION ALL
SELECT 6,'b' UNION ALL
SELECT 7,'ba'
--SQL查詢如下:
select min(A) as A,B from @T group by B having count(*) > 1
select * from @T where len(B) > 2
select * from @T where B like '%A%' and B like '%B%'
/*
A B
----------- ----
1 a
2 b
(2 行受影響)
A B
----------- ----
3 abc
(1 行受影響)
A B
----------- ----
3 abc
7 ba
(2 行受影響)
*/
『柒』 java面試題的sql查詢題
這個根據不同企業,不同設計師的命名規范來的,通常設計師都希望看其名知其意
『捌』 sql題幫做做java
照的太模糊了,盡量幫你答一些看的見的題吧:
六:sql的編寫比如查詢應盡量避免大批量的查詢,盡量縮小查詢范圍以此提高sql效率。sql調優可以從sql本身以及索引方面入手,比如縮小查詢范圍,盡量走表的索引,如果沒有索引可以增加索引。
七:forward是轉發,內部資源的傳遞,效率高,地址欄的地址不會發生改變,但是無法轉發到外部資源。redirect是重定向,需要進行兩次請求,分別請求到不同的servlet,效率不及轉發,地址欄的地址會發生改變,如果是資源需要跳轉外部資源,那麼就只能重定向。
八:Cookie數據存儲在客戶瀏覽器上,Session數據放在伺服器上的。Sessio相對於Cookie更安全。若考慮減輕伺服器的負擔,盡量考慮使用Cookie。
九:單例模式:通常需要唯一對象,且對象不對外暴露的場景。
適配器模式:適配器模式就是把一個類的介面變換成客戶端所能接受的另一種介面,從而使兩個介面不匹配而無法在一起工作的兩個類能夠在一起工作。
裝飾者模式:裝飾器的作用是使得被裝飾者功能更強大,而且裝飾前後的使用方式不變。
代理模式:可以使被代理的類方法進行增強。
工廠模式:使對象的創建使用分離。
十:RPC Dubbo
分布式:spring cloud
『玖』 java sql語句問題
SQL預編譯.
比如
StringcusId="10101";
Stringsql2="select*fromv_userwhereuserid=?";//問號表示一個參數,
PreparedStatementpstmt2=conn.prepareStatement(sql2);
pstmt2.setInt(1,cusId);//把cusId的值替換到sql2的第一個問號
當調用資料庫 執行查詢的時候, 資料庫會先編譯SQL語句,然後執行. 預編譯的作用就是,當你第二次傳同一個SQL的時候資料庫就不需要編譯了,直接找出之前編譯過的結果,然後把參數動態放進去執行.
『拾』 java,oracle面試題,如下,sql怎麼寫
如題我先進行分析:
第一句話中按月找出平均 填寫時間大於3天的人員信息 :
那麼可用理解為 根據月份查找 員工平均延遲填寫日期大於3天的 人員信息。
第二句話一個人員的日誌填寫日期有多條則取最早的一條,如果有一天未填寫,則取系統當前時間,不含小時。
以上這句話需要注意兩點 第一點,取最早的一條此處需要用到ROW_NUMBER() OVER() 以及未填寫 則取系統當前時間 不含小時 那麼取值格式應為yyyy-mm-dd此處需要處理格式。
根據以上分析提供如下SQL: 註:(以下SQL已ORACLE為例)
--創建臨時表存儲數據
withemp_logas(
select1asempno,'張一'asempname,'工作內容1'asworkcontent,date'2017-03-20'asbegdate,date'2017-03-23'asentrydate,1asnumfromal
unionall
select1asempno,'張一'asempname,'工作內容2'asworkcontent,date'2017-03-20'asbegdate,date'2017-03-23'asentrydate,2asnumfromal
unionall
select1asempno,'張一'asempname,'工作內容3'asworkcontent,date'2017-03-20'asbegdate,date'2017-03-24'asentrydate,5asnumfromal
unionall
select1asempno,'張一'asempname,'工作內容1'asworkcontent,date'2017-03-24'asbegdate,date'2017-03-30'asentrydate,8asnumfromal
unionall
select2asempno,'張二'asempname,'工作內容21'asworkcontent,date'2017-03-20'asbegdate,date'2017-03-30'asentrydate,8asnumfromal
unionall
select2asempno,'張二'asempname,'工作內容22'asworkcontent,date'2017-03-25'asbegdate,date'2017-03-28'asentrydate,8asnumfromal
unionall
select3asempno,'張三'asempname,'工作內容31'asworkcontent,date'2017-03-20'asbegdate,nullasentrydate,nullasnumfromal
unionall
select3asempno,'張三'asempname,'工作內容32'asworkcontent,date'2017-03-20'asbegdate,nullasentrydate,nullasnumfromal
unionall
select4asempno,'張四'asempname,'工作內容42'asworkcontent,date'2017-03-25'asbegdate,date'2017-03-28'asentrydate,8asnumfromal
)
select*from(
selectempno,empname,sum(num)num,sum(yanci)/count(empno)pingjunyanci--獲取人員當月總延遲數除去當月人員每日的打開數計算出當月每天的平均延遲天數
from(selectROW_NUMBER()OVER(PARTITIONBYe.empno,e.begdateORDERBYe.empno,e.begdate)ASRN,--排序獲取當天有多條記錄並在後面條件中獲取第一條
e.empno,e.empname,
e.workcontent,e.begdate,
e.entrydate,
e.num,
(nvl(e.entrydate,to_date(to_char(sysdate,'yyyy-mm-dd'),'yyyy-mm-dd'))-begdate)asyanci--判斷如果沒有填寫結束日期那麼以系統當前日期進行運算延遲日期
fromemp_loge)e1
wheree1.rn=1--獲取第一條
andto_char(begdate,'yyyy-mm')='2017-03'--可用的月份條件
groupbyempno,empname,numorderbyempno--根據人員工號、人員姓名分組匯總
)e2wheree2.pingjunyanci>3;
--分析不易忘認真閱讀後採納,有其他問題請追問我。