【7.12】農(nóng)行研發(fā)中心暑期實習(xí)面試+機試
面試
上午八點半后候場,然后九點開始面試。
有很多個面試官,但是全程只有一個面試官提問。我是java技術(shù)棧,自我介紹說了兩個學(xué)習(xí)過程中的小項目,然后面試官就追著這兩個小項目提問。因為我的有一個項目涉及到并發(fā)訪問,但是是低并發(fā),面試官就問了如何處理高并發(fā)場景。最后面試官說我簡歷上寫了那么多技術(shù),最熟悉的是哪一個,我回答了數(shù)據(jù)結(jié)構(gòu)和算法,就問了我兩個問題:1.圖的存儲方式;2.最短路徑算法。
整個面試過程只有十多分鐘
機考
然后中午來短信說下午參加機考,與前面的筆試不同,這次只有兩道編程題+一道SQL題(60分鐘)。兩道編程很簡單:
- 1.合并兩個有序數(shù)組
- 2.給定一個字符串,相鄰的兩個字符可以消去,求最后剩下的字符串(用棧即可)
SQL題沒寫出來,不知道會有SQL題,早知道就復(fù)習(xí)了。但是下來回憶著寫了一下,我覺得應(yīng)該差不多
題目回憶(表和字段名隨便取的,但是不影響):
- 一個user表,字段有id,name,
- 一個work表,字段有id,s1,s2
字段類型都為varchar,s2的長度=3。
如果s1的前三個字符=s2,認定該條記錄時正確的,否則為錯誤的;
查詢每個用戶的錯誤記錄數(shù),并按錯誤數(shù)降序排列,如果錯誤數(shù)相等,則按照id升序建表和插入數(shù)據(jù)
CREATE TABLE `user` ( `id` VARCHAR(255) NOT NULL, `name` VARCHAR(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=INNODB DEFAULT CHARSET=utf8mb4; INSERT INTO `user` VALUES('001','z1'),('002','z2'),('003','z3'),('004','z4'),('005','z5'); CREATE TABLE `work` ( `id` VARCHAR(255) NOT NULL, `s1` VARCHAR(255) NOT NULL, `s2` VARCHAR(255) NOT NULL ) ENGINE=INNODB DEFAULT CHARSET=utf8mb4; INSERT INTO `work` VALUES('001','12345678','123'), ('001','123456','123'), ('002','1111111','112'), ('003','151515','111'), ('004','11111','111'), ('005','1111','111'), ('002','1111111','113');
執(zhí)行查詢
SELECT t1.id,t1.name,IFNULL(t2.TIMES,'0') AS `TIMES` FROM `user` AS t1 LEFT JOIN ( SELECT id,COUNT(id) AS `TIMES` FROM `work` WHERE STRCMP(LEFT(s1,3),s2)!=0 GROUP BY id ) AS t2 ON t1.id = t2.id ORDER BY t2.TIMES DESC,id ASC;
SQL題主要考察了:子查詢、按多個字段排序、字符串函數(shù)用法、連接查詢中將結(jié)果為null的置為'0'(題目要求是字符串)
貼一下結(jié)果: