㈠ 京東商城的筆試題:用java語言列印出a,b,c,d的所有可能組合……求指點……
abcd都要用上?長度為4?
如果是這樣,那代碼如下,其中心思想就是遞歸
import java.util.ArrayList;
import java.util.List;
public class Permutation {
private char initial;
private char last;
List<Character> chars=new ArrayList<Character>();
public static void main(String[] args) {
new Permutation('a','d').start();
}
public Permutation(char initial,char last) {
this.initial=initial;
this.last=last;
for (char c = this.initial; c <= this.last; c++) {
chars.add(c);
}
}
public void start(){
next(chars,new ArrayList<Character>());
}
private void next(List<Character> unused,List<Character> used){
if(unused.isEmpty()){
System.out.println(used);
}else{
for(int i=0;i<unused.size();i++){
List<Character> cur=new ArrayList<Character>(unused);
List<Character> curUsed=new ArrayList<Character>(used);
curUsed.add(cur.remove(i));
next(cur,curUsed);
}
}
}
}
如果你想長度不固定,就是會出現abc,dc,c這樣的
只需修改next函數
private void next(List<Character> unused,List<Character> used){
if(!unused.isEmpty()){
for(int i=0;i<unused.size();i++){
List<Character> cur=new ArrayList<Character>(unused);
List<Character> curUsed=new ArrayList<Character>(used);
curUsed.add(cur.remove(i));
System.out.println(curUsed);
next(cur,curUsed);
}
}
}
沒有仔細驗證,有什麼問題可以交流 ,格式我沒有改,你可以自己做個輸出函數去遍歷輸出List即可
㈡ 京東java一面和二面試一起的嗎
通常情況下,京東的Java面試不會安排在一次面試中完成。第一輪面試與第二輪面試之間會有一定的時間間隔。面試流程一般設計為多輪,以全面評估應聘者的專業技能和綜合素質。
第一輪面試主要是考察應聘者的基礎知識和基礎技能,通常由人事部門或HR負責。而第二輪面試則可能涉及技術問題、項目經驗等更深層次的內容,這輪面試一般由技術部門負責。不過,也有些公司會在一次面試中進行多輪面試,但這並非普遍現象。
有時候,應聘者在第一輪面試中表現不佳,可能會被要求參加第二輪面試,但這並不意味著一定會進行。在實際操作中,公司可能會根據第一輪面試的結果來決定是否安排第二輪面試。
面試的具體流程和安排會根據不同的崗位和公司政策有所不同。建議應聘者在面試前詳細了解公司提供的信息,並做好充分的准備。同時,保持良好的溝通和積極的態度,是獲得面試機會的關鍵。
㈢ 京東面試題 java 動態代理主要怎麼實現的
在目前的Java開發包中包含了對動態代理的支持,但是其實現只支持對介面的的實現。
其實現主要通過是java.lang.reflect.Proxy類和java.lang.reflect.InvocationHandler介面。
Proxy
類主要用來獲取動態代理對象,InvocationHandler介面用來約束調用者實現,如下,HelloWorld介面定義的業務方
法,HelloWorldImpl是HelloWorld介面的實現,HelloWorldHandler是InvocationHandler介面實
現。代碼如下:
業務介面:
public interface HelloWorld {
void sayHelloWorld() ;
}
業務介面實現:
public class HelloWorldImpl implements HelloWorld {
public void sayHelloWorld() {
System.out.println("Hello World!");
}
}
InvocationHandler實現,需要在介面方法調用前後加入一部份處理工作,這里僅僅在方法調用前後向後台輸出兩句字元串,其代碼如下:
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
public class HelloWorldHandler implements InvocationHandler {
//要代理的原始對象
private Object objOriginal;
/**
* 構造函數。
* @param obj 要代理的原始對象。
*/
public HelloWorldHandler(Object obj) {
this.objOriginal = obj ;
}
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
Object result ;
//方法調用之前
doBefore();
//調用原始對象的方法
result = method.invoke(this.objOriginal ,args);
//方法調用之後
doAfter();
return result ;
}
private void doBefore() {
System.out.println("before method invoke!");
}
private void doAfter() {
System.out.println("after method invoke!");
}
}
測試代碼:
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Proxy;
public class Test {
public static void main(String[] args) {
HelloWorld hw = new HelloWorldImpl();
InvocationHandler handler = new HelloWorldHandler(hw);
HelloWorld proxy = (HelloWorld) Proxy.newProxyInstance(
hw.getClass().getClassLoader(),
hw.getClass().getInterfaces(),
handler);
proxy.sayHelloWorld();
}
}
?? 首先獲取一個業務介面的實現對象;
?? 獲取一個InvocationHandler實現,此處是HelloWorldHandler對象;
?? 創建動態代理對象;
?? 通過動態代理對象調用sayHelloWorld()方法,此時會在原始對象HelloWorldImpl. sayHelloWorld()方法前後輸出兩句字元串。
運行測試類輸出如下:
before method invoke!
Hello World!
after method invoke!
此處Test類中的方法調用代碼比較多,在我們的實際應用中可以通過配置文件來來簡化客戶端的調用實現。另外也可以通過動態代理來實現簡單的AOP
㈣ java開發的網站有哪些
一、
Java開發的網站有很多,包括但不限於以下幾個知名網站:淘寶網、京東、微博、騰訊網、美團等。
二、
1. 淘寶網:淘寶網是中國最大的網路零售平台之一,其網站後端開發主要使用Java語言,用於處理大量的交易和復雜的業務流程。
2. 京東:京東是中國著名的綜合性電商平台,其網站架構中大量使用了Java技術,包括伺服器端開發以及部分前端技術。
3. 微博:微博是一個流行的社交媒體平台,其網站及App的後端服務大多採用Java開發,用於處理用戶的社交活動和數據存儲。
4. 騰訊網:騰訊是一家大型的互聯網公司,旗下的網站和應用程序也有很多是Java開發的,比如騰訊新聞、QQ郵箱等。
5. 美團:美團是一個在線訂餐和生活服務平台,其網站和App的後端服務同樣大量採用Java技術。
以上這些網站之所以選擇Java進行開發,是因為Java具有強大的跨平台能力、豐富的庫和框架支持以及穩定的性能,特別適合用於開發大型的商業網站和應用。此外,Java在Web開發領域有著廣泛的使用,特別是在處理高並發、大數據量的場景下表現優異。