說明:如下大部分都是測試朋友遇到的筆試題。 html
自問自答,自娛自樂,機會只留給有準備的人java
筆試或者面試的時候,常常被問一些概念,好比同步、異步、阻塞、非阻塞等等,是否是很懵逼?python
http://www.javashuo.com/article/p-qyvabcej-eh.htmlmysql
批量刪除/home/test/dist下的全部進程linux
參考答案:ps -ef | grep '/home/test/dist' | awk '{print $2}' | xargs kill -9git
對~/test目錄下的全部文件進行排序,且2018開頭的,在文件名後加上_bak面試
參考答案:https://gitee.com/UncleYong/exercise/blob/master/modifyFileName.sh算法
二叉樹遍歷:左序、中序、右序sql
鏈表操做shell
冒泡排序
二分查找
快速排序
對字符串「2kd4-1124*2|^2sdAmZ%fkMcv」排序,並返回符合要求格式的元組數據。
排序規則:按照ASCII碼由大到小排序;
返回數據格式:((最大字符,最小字符),(次大字符,次小字符),,,)
參考答案:http://www.javashuo.com/article/p-dqmjepdq-kx.html
倒置輸入的整數
參考答案:http://www.javashuo.com/article/p-pjtxwcgx-kx.html
結構體存儲學生學號、姓名、總分,動態內存分配增長信息,而後排序
參考答案:http://www.javashuo.com/article/p-njpjuzwu-kw.html
數組中有一個數字出現的次數超過數組長度的一半
參考答案:http://www.javashuo.com/article/p-dybgnzli-kw.html
將一個字符串中的空格替換成「%20」
參考答案:http://www.javashuo.com/article/p-kujrfznv-kw.html
青蛙跳臺階
參考答案:http://www.javashuo.com/article/p-htvhuhgk-kv.html
找到第一個只出現一次的字符並返回它的位置
參考答案:http://www.javashuo.com/article/p-xdcfyqho-kv.html
python文件操做,http://www.javashuo.com/article/p-exhurbup-ku.html
參考答案:
面向對象小測試
第一部分:http://www.javashuo.com/article/p-kyvgtzxp-kt.html
第二部分:http://www.javashuo.com/article/p-xrroqoqr-kt.html
參考答案:
封裝一個函數:生成n個密碼,要求包含大小寫字母,數字,並對密碼進行加鹽加密,默認鹽值%#$123
參考答案:https://gitee.com/UncleYong/exercise/blob/master/passwords.py
不用中間變量,交換兩個變量(同時爲數字 or 同時爲字符串)的值
參考答案: https://gitee.com/UncleYong/exercise/blob/master/exchageValu.py
運行結果
def fun(arg): print(id(arg)) arg = ['hello'] print(id(arg)) var = ['ok'] print('var: ',id(var)) fun(var) print(var)
http://www.javashuo.com/article/p-hcyxcfgy-ks.html
參考答案: 本身運行,總結規律。
下面代碼的做用是移除奇數,運行結果是?爲何?
li = [1,1,2,3,4,5,6,7,8,9] for i in li: if i%2!=0: li.remove(i) print(li)
參考答案:[1, 2, 4, 6, 8]
在原代碼基礎上,如何修改成理想中的答案[2,4,6,8]?(必須保留remove)
方式一(逼格低):
li = [1,1,2,3,4,5,6,7,8,9] li2 = [1,1,2,3,4,5,6,7,8,9] for i in li2: if i%2!=0: li.remove(i) print(li)
方式二(常規思路):
li = [1,1,2,3,4,5,6,7,8,9] li2 = li.copy() for i in li2: if i%2!=0: li.remove(i) print(li)
方案三(高逼格): from:杭州-null-失業老阿姨
li = [1,1,2,3,4,5,6,7,8,9] for i in li[:]: if i%2!=0: li.remove(i) print(li)
其實,更簡單的方案是列表生成式
li = list(filter(lambda x:x%2==0, li))
或者
li = [i for i in li if i%2==0]
一行代碼實現1-100奇數求和(5種方案)
參考答案:https://gitee.com/UncleYong/exercise/blob/master/sumOfOddNumber.py
下面的輸出結果是?
答案是:[6, 6, 6, 6]
詳細解釋,參考:https://www.cnblogs.com/uncleyong/p/11208987.html
def multipliers(): return [lambda x : i * x for i in range(4)] print([m(2) for m in multipliers()])
等價於
def func(): fun_list = [] for i in range(4): def foo(x): return x*i fun_list.append(foo) print(fun_list) return fun_list res_list = [] for m in func(): res_list.append(m(2)) print(res_list)
遞歸求1-100質數的和
參考答案:https://gitee.com/UncleYong/exercise/blob/master/RecursiveSumOfPrimeNumber.py
非遞歸參考答案:
print([x for x in range(2, 101) if all([x%y!=0 for y in range(2, x)])]) print(sum([x for x in range(2, 101) if all([x%y!=0 for y in range(2, x)])]))
【20190715】要求:封裝一個方法,實現文件的讀、寫、改
參考答案:https://gitee.com/UncleYong/exercise/blob/master/filetool.py
【20190712】要求:根據輸入的數字n,生成n注大樂透號碼,大樂透規則請自行百度
「35選5加12選2」玩法屬於雙區選號大樂透,玩法簡單易懂,彩民們在購買「35選5加12選2」時,能夠從01-35共35個號碼中,選取5個號碼爲前區號碼,並從01-12共12個號碼中選取2個號碼爲後區號碼,組合爲一注進行單式投注。
參考答案:https://gitee.com/UncleYong/exercise/blob/master/lottery_ticket.py
【20190711】要求:一行代碼,求1-100之間大於10且小於90的數字的平均值
參考答案:https://gitee.com/UncleYong/exercise/blob/master/oneLineCodeSumBetween11And89.py
【20190710】要求:不用sum,最多一個+號,一行代碼(不包含導包)實現1到10的累加
備註:只有python實現了一行代碼
參考答案(python版):https://gitee.com/UncleYong/exercise/blob/master/MySum.py
參考答案(java版):https://gitee.com/UncleYong/exercise/blob/master/MySum.java
參考答案(shell版):https://gitee.com/UncleYong/exercise/blob/master/MySum.sh
要求:提取出只包含數字及字母,且以字母開頭的最長的子字符串,打印出子字符串及其長度,若是有多個,都要打印出來
testStr = '#ab1k23$%&()*+,-./:;<=ab12w4>?666qzcsbj@[4f]^{1aaa12|}'
好比上面字符串提取結果是:
子字符串ab1k23,長度爲6
子字符串ab12w4,長度爲6
參考答案(正則):https://gitee.com/UncleYong/exercise/blob/master/findMaxSubString.py
參考答案(非正則):https://gitee.com/UncleYong/exercise/blob/master/findMaxSubString2.py
要求:java實現一個類,打印昨天的當前時刻
參考答案:
https://gitee.com/UncleYong/exercise/blob/master/LastDayTime.java
https://gitee.com/UncleYong/exercise/blob/master/TestLastDayTime.java
【20190709】要求:從左到右,每三位進行反轉,例如,輸入123456789,輸出321654987,若是輸入1234567890,輸出3216549870
參考答案:https://gitee.com/UncleYong/exercise/blob/master/new_str.py
要求:假如你要爲一個應用搞限時促銷,生成激活碼(或者優惠券)請用 Python 如何生成 200 個激活碼(或者優惠券)
激活碼的格式爲asqE-9xRK-lqWU-QkMT
要求1: 使用隨機生成時,生成數字機率爲1/5,大寫字母和小寫字母機率各爲2/5
要求2: 這200個激活碼,他們各不相同
參考答案:https://gitee.com/UncleYong/exercise/blob/master/coupon_gen.py
以mysql爲例,單表插入1萬條數據,建表的語句:create table test(id int, name varchar(20));
要求:至少兩種方案
參考答案一(存儲過程,不傳參&傳參):https://gitee.com/UncleYong/exercise/blob/master/addDatas.sql
參考答案二(py):http://www.javashuo.com/article/p-mwptzawp-cx.html
一個sql題,查詢出grade不同的人的全部記錄
表stu
參考答案(基於mysql):
方式一:
select * from stu where name in ( select tt.name from ( Select t.code,t.name,t.grade from stu t group by t.code,t.name,t.grade having count(*)=1) tt);
方式二:
select distinct s.* from stu s join( select t.code,t.name,t.grade from stu t group by t.code,t.name,t.grade having count(*)=1) s2 where s.code = s2.code and s.name=s2.name;
方式三:(oracle中下面方式寫會報錯)
部分圖片來源於網絡,若有侵權,請聯繫刪除。