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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

阿里云挑战赛

發(fā)布時(shí)間:2023/12/4 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 阿里云挑战赛 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 第一題
    • 題目:
    • 題解:
  • 第二題
    • 題目
    • 題解
  • 第三題
    • 題目
    • 題解
  • 第四題
    • 題目:
    • 題解
  • 第五題
    • 題目
    • 題解
  • 第六題
    • 題目
    • 題解
  • 第七題
    • 題目:
    • 題解
  • 第八題
    • 題目:
    • 題解;
  • 題解賽后出

第一題

題目:

【單選】filter 方法意圖過(guò)濾傳入的訂單列表中不屬于當(dāng)前系統(tǒng)時(shí)間所在日期的訂單,以下哪一行代碼存在錯(cuò)誤?

A.第 7 行
B.第 8 行
C.第 10 行
D.第 13 行

1. public static void filter(ArrayList<Order> orders) { 2. 3. if (orders == null) { 4. return; 5. } 6. 7. SimpleDateFormat formatter = new SimpleDateFormat("YYYY-MM-dd") 8. String currentDay = formatter.format(new Date()); 10. Iterator<Order> iterator = orders.iterator(); 11. while (iterator.hasNext()) { 12. Order order = iterator.next(); 13. if (!currentDay.equals(order.getTransactionDay())) { 14. iterator.remove(); 15. } 16. } 17.}

題解:

答案:A
獲取當(dāng)前時(shí)間

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//設(shè)置日期格式 String date = formatter.format(new Date());// new Date()為獲取當(dāng)前系統(tǒng)時(shí)間,也可使用當(dāng)前時(shí)間戳

【強(qiáng)制】日期格式化時(shí),傳入pattern中年份統(tǒng)一使用小寫(xiě)的y。
日期格式化時(shí),yyyy表示當(dāng)天所在的年,而大寫(xiě)的YYYY代表的是week in which year(JDK7之后引入的概念),意思是當(dāng)天所在的周屬于的年份,一周從周日開(kāi)始,周六結(jié)束,只要本周跨年,返回的YYYY就是下一年。

第二題

題目

【單選】以下哪種字符串拼接方式,是效率最高、并符合阿里巴巴Java開(kāi)發(fā)手冊(cè)(Alibaba Java Coding Guidelines)規(guī)范的?

A.

public static String concat(List<String> strings) {if (strings == null || strings.isEmpty()) {return "";}StringBuilder builder = new StringBuilder();for (String string : strings) {builder.append(string);}return builder.toString(); }

B.

public static String concat(List<String> strings) {if (strings == null || strings.isEmpty()) {return "";}StringBuffer buffer = new StringBuffer();for (String string : strings) {buffer.append(string);}return buffer.toString(); }

C.

public static String concat(List<String> strings) {if (strings == null || strings.isEmpty()) {return "";}String result = strings.get(0);for (int i = 1; i < strings.length(); i++) {result = result + strings.get(i);}return result; }

D.

public static String concat(List<String> strings) {if (strings == null || strings.isEmpty()) {return "";}return strings.stream().reduce((x, y) -> x + y).get(); }

題解

選C
【強(qiáng)制】在日志輸出時(shí),字符串變量之間的拼接使用占位符的方式。 說(shuō)明:因?yàn)镾tring字符串的拼接會(huì)使用StringBuilder的append()方式,有一定的性能損耗。使用占位符僅是替換動(dòng)作,可以有效提升性能。 正例:logger.debug(“Processing trade with id: {} and symbol: {}”, id, symbol);

第三題

題目

【單選】以下哪段代碼,調(diào)用 getHelper 的過(guò)程,不是線程安全的

A.

public class LazyInitDemo {private static Helper HELPER = null;public static synchronized Helper getHelper() {if (HELPER == null) {HELPER = new Helper();}return HELPER;} }

B.

public class LazyInitDemo {private Helper helper = null;public Helper getHelper() {if (helper == null) {synchronized (this) {if (helper == null) {helper = new Helper();}}}return helper;} }

C.

public class LazyInitDemo { private static class HelperHolder { private static final Helper HELPER = new Helper(); } public static final Helper getHelper() { return HelperHolder.HELPER; } }

D.

public class PreInitDemo{private static final Helper HELPER = new Helper();public static Helper getHelper(){return HELPER;} }

題解

選B
【推薦】通過(guò)雙重檢查鎖(double-checked locking)(在并發(fā)場(chǎng)景下)實(shí)現(xiàn)延遲初始化的優(yōu)化問(wèn)題隱患(可參考 The “Double-Checked Locking is Broken” Declaration),推薦解決方案中較為簡(jiǎn)單一種(適用于JDK5及以上版本),將目標(biāo)屬性聲明為 volatile型(比如修改helper的屬性聲明為private volatile Helper helper = null;)。
反例:

public class LazyInitDemo {private Helper helper = null;public Helper getHelper() {if (helper == null) {synchronized (this) {if (helper == null) { helper = new Helper(); }}}return helper;}// other methods and fields... }

第四題

題目:

【單選】 以下哪個(gè)選項(xiàng)的 getTypeString 函數(shù),沒(méi)有 bug?

A.

public class Type {public enum TypeEnum {ZERO,ONE}private TypeEnum type;public TypeEnum getType() {return type;}public void setType(TypeEnum type) {this.type = type;}public String getTypeString() {switch (type) {case ZERO:return "ZERO";case ONE:return "ONE";default:return "OTHER";}} }

B.

public class Type {private String type;public String getType() {return type;}public void setType(String type) {this.type = type;}public String getTypeString() {switch (type) {case "0":return "ZERO";case "1":return "ONE";default:return "OTHER";}} }

C.

public class Type {private int type;public int getType() {return type;}public void setType(int type) {this.type = type;}public String getTypeString() {switch (type) {case 0:return "ZERO";case 1:return "ONE";default:return "OTHER";}} }

D.

public class Type {private Integer type;public Integer getType() {return type;}public void setType(Integer type) {this.type = type;}public String getTypeString() {switch (type) {case 0:return "ZERO";case 1:return "ONE";default:return "OTHER";}} }

題解

選C
【強(qiáng)制】在一個(gè)switch塊內(nèi),每個(gè)case要么通過(guò)continue/break/return等來(lái)終止,要么注釋說(shuō)明程序?qū)⒗^續(xù)執(zhí)行到哪一個(gè)case為止;在一個(gè)switch塊內(nèi),都必須包含一個(gè)default語(yǔ)句并且放在最后,即使它什么代碼也沒(méi)有。 說(shuō)明:注意break是退出switch語(yǔ)句塊,而return是退出方法體。
【強(qiáng)制】當(dāng)switch括號(hào)內(nèi)的變量類型為String并且此變量為外部參數(shù)時(shí),必須先進(jìn)行null判斷。 反例:如下的代碼輸出是什么?

public class SwitchString {public static void main(String[] args) {method(null);}public static void method(String param) {switch (param) {// 肯定不是進(jìn)入這里case "sth":System.out.println("it's sth");break;// 也不是進(jìn)入這里case "null":System.out.println("it's null");break;// 也不是進(jìn)入這里default:System.out.println("default");}} }

【強(qiáng)制】在if/else/for/while/do語(yǔ)句中必須使用大括號(hào)。
說(shuō)明:即使只有一行代碼,禁止不采用大括號(hào)的編碼方式:if (condition) statements;
2. switch 語(yǔ)句中的變量類型可以是: byte、short、int 或者 char。從 Java SE 7 開(kāi)始,switch 支持字符串 String 類型了,同時(shí) case 標(biāo)簽必須為字符串常量或字面量。

第五題

題目

【單選】執(zhí)行:ln -sf /usr/sbin/sshd /tmp/su;/tmp/su -oPort=8888,執(zhí)行完之后,任何一臺(tái)機(jī)器ssh root@IP -p 8888,輸入任意密碼,成功登錄。 問(wèn):該后門(mén)為什么能夠任意密碼登陸?

A. sshd 不指定配置文件啟動(dòng)時(shí),所有賬號(hào)均可任意密碼登陸
B. sshd 因?yàn)楸绘溄拥?tmp目錄,由于文件權(quán)限原因,可任意密碼登陸
C. sshd 因?yàn)楸绘溄訛?tmp/su,由于pam模塊認(rèn)證原因,可任意密碼登陸
D. sshd 因?yàn)楸绘溄拥?tmp目錄,由于位置發(fā)生變化導(dǎo)致無(wú)法找到/etc/shadow文件因此放行登陸請(qǐng)求

題解

D

第六題

題目

【單選】\\.\globalroot\device\condrv\kernelconnect 在 Windows 中谷歌 Chrome 瀏覽器輸入以上地址并回車可能會(huì)發(fā)生什么非預(yù)期的效果?

A. 瀏覽器崩潰
B. 成為阿里云錦鯉
C. 藍(lán)屏
D. 黑屏

題解

選A

第七題

題目:

【不定項(xiàng)】以下哪種是 SQL 注入攻擊?

A. content=1 union select 1
B. name=updatexml(1,user(),1)
C. id=i and 1 like 1
D. id=<script src="//bxssme.cn">

題解

AB
【強(qiáng)制】用戶輸入的SQL參數(shù)嚴(yán)格使用參數(shù)綁定或者M(jìn)ETADATA字段值限定,防止SQL注入,禁止字符串拼接SQL訪問(wèn)數(shù)據(jù)庫(kù)。
反例:某系統(tǒng)簽名大量被惡意修改,即是因?yàn)閷?duì)于危險(xiǎn)字符 # --沒(méi)有進(jìn)行轉(zhuǎn)義,導(dǎo)致數(shù)據(jù)庫(kù)更新時(shí),where后邊的信息被注釋掉,對(duì)全庫(kù)進(jìn)行更新。
【強(qiáng)制】sql.xml配置參數(shù)使用:#{},#param# 不要使用${} 此種方式容易出現(xiàn)SQL注入。

第八題

題目:

【不定項(xiàng)】以下哪種是 XSS 攻擊?

A. id=confirm(1)
B. id=<img src=1 onerror=1>
C. id=<script>edoejx()</script>
D. content=1 and abs(2)

題解;

ABC

題解賽后出

我的答案:
A
C
B
C
D
A
AB
ABC
然后50分,卡死在第一關(guān),哭死

總結(jié)

以上是生活随笔為你收集整理的阿里云挑战赛的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。