富途網絡科技系統測試工程師面試題記錄


  

1.筆試題:

做筆試題的公司遇見的比較少,不過這也是篩選人才的一種方式吧,富途的測試筆試還是對於我來言有點難度,其中選擇題比問答題要難,大概的講一下我不確定的幾道題。

1.對於一個含有n個變量的程序,采用基本邊界值分析法測試程序會產生()個測試用例。

A、6n+1          B、7n            C、4n+1           D、5n

答:C,做測試這么久,還真沒有了解過邊界值能產生多好條用例,然后我百度了一下

作者:whylaughing,https://www.cnblogs.com/whylaughing/p/5821898.html ,里面講的很到位,基本邊界值產生4n+1條用例,健壯性測試生成的測試用例個數為6n+1,最壞情況的測試生成測試用例 5^n,健壯性最壞情況的測試生成的測試為7^n

2.一堆數據進行入棧出棧操作,入棧順序為{a,b,c,d,e,f,g},可能的出棧順序為()

A、{c,d,e,f,a,g,b}           B、{e,f,d,g,b,c,a}        C、{d,e,c,f,b,g,a}       D、{f,e,g,d,b,a,c}
答:C,看了半個小時的入棧,出棧大概了解了,a-g入棧時,a-f可以隨時都可以出棧,但是必須保證后進先出,

A,   a入,b入,c入,c出,d入,d出,e入,e出,f入,f出,a不能出,因為b還沒有出。

B. a入,b入,c入,d入,e入,e出,f入,f出,d出,g入,g出,b不能出,因為c還沒有出 

 C. a入,b入,c入,d入,d出,e入,c出,f入,f出,b出,g入,g出,a出  這樣是ok的 

 D.a入,b入,c入,d入,e入,f入,f出,e出,g入,g出,d出,b不能出,因為c還沒有出

 

3.當 n =5時,下列函數的返回值是()

int func(int n){
    if(n<=2){  return n;  }
    return func(n-1) + func(n-2);
}
A、8  B、13   C、5  D、6

答:A,這是一道java的題,雖然我是java的小菜鳥,但是基本上還是看得懂,其實就是一個遞歸的用法,類似於python的

def func(n):
    if n<=2:
        return n
    return func(n-1)+func(n-2)

print(func(5))
#8
#  解釋:5傳入函數func(5)中,因為5大於2,所以 return func(4)+func(3)
# func(4)中4又大於2,func(3)+func(2),func(3)中的 3大於2,所以就變成 func(2)+func(1)
# 合起來就是 func(2)+func(1)+func(2)+func(1)+func(2)+=2+1+2+1+2=8

 

 

4.已知三角形三邊abc,現有個程序能判斷這個三角形的類別(比如等腰三角形),請為這個程序設計測試用例。

這個題比較簡單,考慮到三角形的定義就能做出來,任意兩邊之和大於第三邊的是三角形,其余特殊情況,三條邊相等就是等邊三角形,兩兩相等就是等腰三角形,任意兩邊的平方等於第三邊的平方就是直角,其余的就不是三角形了

 

5.設計用例測試下面的Python程序

def Do(a,b,x):
    if(a>1) and (b==0):
        x=x/a
    if (a==2) or (x>1):
        x = x+2
    return x

解題思路:可以用上unittest來進行單元測試,可能有錯誤,這塊還得完善

import unittest

class MyTest(unittest.TestCase):
    def setUp(self) -> None:
        pass
    def tearDown(self) -> None:
        pass

    def test_a_1xiaoyu1(self):

        self.assertEqual(Do(0.5,1,1),1)

    def test_a_2dengyu0(self):
        with self.assertRaises(ValueError):
            Do(0,0,1)

    def test_a_3dengyu2_1(self):
        self.assertEqual(2,1,1)

    def test_a_4dengyu2_2(self):
        self.assertEqual(2,1,2)

if __name__ == '__main__':
    unittest.main()

 

6.公司數據庫的在職人員表有name和deptment兩個字段,分別表示員工姓名和所屬部門。請寫出一條SQL語句查出每個部門的人數。

解題思路,查詢出每個部門的人數,就是說得通過group by 來查詢出部門對應的人數

select deptment,COUNT(name) from zhiyuan group by deptment 

7、聖誕節到了,公司舉行交換禮物活動,參加的員工每人准備一個禮物。
交換完成后,自己的禮物會隨機給到另一個人,自己也能隨機獲得一個其他人准備的禮物。不要求A拿了B的禮物.,B就一定要拿A的,只要自己不拿自己的即可。為公平起見,請你寫一個隨機程序來決定禮物何分配。

答:

暫時沒有做出來

 

---------------------------------------------------------------2020年3月28日-------------------------------------------------------------------------------------------------------------

想了一晚上終於想出來了一種方式:

import random,time
k = {'a':'蘋果','b':'梨子','c':'香蕉','d':'菠蘿'} # 將每個人有自己的物品變為一個字典,這個字典可以靈活增加,暫不擴展,只做舉例
x = list(k.values()) # 將所有物品集中放入一個列表
k1 ={} # 創建一個空字典,將交換成功的數據存入字典
print("交換中......")
for key in k.keys(): # 將人都遍歷出來
while True:
if x !=[]:      # 跑到最后列表為空,隨機會報錯,所以在此判斷
x1 = random.choice(x) # 隨機在列表中抽取一個數據
if k[key]!=x1: # 如果從原字典對應的value不等於隨機取出來的數,則存入k1
k1[key]=x1
x.remove(x1)  # 將取出來的數據從列表x中剔除
break
else:
break
for key in k1.keys():
time.sleep(1)
print("{}交換到了:{}".format(key,k1[key])) #遍歷去除k1的數據

 目前這個程序有bug,原因是當a、b、c交叉交換以后,只留下了d造成死循環,如果有感興趣的,可以針對此進行修改


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM