一道螞蟻金服簡單的上機筆試題

2021-08-28 21:20:03 字數 1764 閱讀 2208

說明:

構建乙個本地快取,快取的物件是使用者id以及部分使用者的資訊。

當從快取中獲取某個使用者資料時,如果發現該使用者資料上次更新時間超過30分鐘,則需要更新一次該快取。

1.需考慮多執行緒訪問的情況。

2.請不要使用第三方類庫實現。

3.可以新增適當日誌。

4.可以有適當的偽**。

補充:userinfo結構

public class userinfo

完成下面的**

//: todo 可自行定義需要的變數

/*** 初始化使用者資訊快取

*/public void inituserinfocache()

/*** 根據id從快取中獲取使用者資訊

*/ public userinfo getuserinfofromcachebyid(string id)

/*** 根據id更新快取使用者資訊

*/ public void updateuserinfocache(string id)

//使用者資訊快取

private static mapusercachemap;

//更新時間快取

private static maplastupdatetimemap;

//過期時間30分鐘

private static final long cache_time= 30*60*1000l;

/*** 初始化使用者資訊快取

*/public void inituserinfocache()

//add log

system.out.println("inituserinfocache start");

mapusercachemaptemp = new concurrenthashmap<>();

maplastupdatetimemaptemp= new concurrenthashmap<>();

while(true)

//add log

system.out.println("batch query userinfolist to cache,size is :"+userinfolist.size());

for(userinfo userinfo : userinfolist )

}//add log

system.out.println("inituserinfocache end");

usercachemap = usercachemaptemp;

lastupdatetimemap = lastupdatetimemaptemp;

}     }}

/*** 根據id從快取中獲取使用者資訊

*/ public userinfo getuserinfofromcachebyid(string id)

//初始化快取

inituserinfocache();

long lastupdatetime = lastupdatetimemap.get(id);

userinfo userinfo = usercachemap.get(id);

if((system.currenttimemillis-lastupdatetime)>cache_time)

}userinfo = usercachemap.get(id);

}returun userinfo;

}/**

* 根據id更新快取使用者資訊

*/ public void updateuserinfocache(string id)

一道筆試題

看到一道筆試題,跟自己想的有點出入,就跑了下,看了看原因。我稍微改了下 include int main int argc,char argv 輸出結果 c 5 d 245 press any key to continue vc6.0 debug下的彙編 5 unsigned char a 0xa...

一道筆試題

上次去筆試的時候,有一道題,怎麼也沒做出來,當時也是很緊張,有些思路,但卻沒有做出來。有四個人要過乙個獨木橋,因為天比較黑,而且橋只能允許兩個人同時通過,並且他們只有乙個手電筒。四個人單獨同時橋的時間是1,2,5,8分鐘。問最短的時間是多少?當時我的答案 1和8,1回來,1 5,1回來,1 2 8 ...

一道筆試題

題目是這樣的 判斷乙個小於1000的正整數是否為素數。素數的定義就不說了,以下直接分析解法,畢竟是在寫與專業相關的東西,是給本專業的人看得,所以看的人應該有點基礎吧?求素數的問題是乙個數學上的難題,這是常識,但是本題目限制了最大範圍是在1000以內,所以就可以嘗試找出乙個足夠好的解了。首先給出乙個最...