首页 > 2020农行研发(软开)天津,实习笔经
头像
搬运工hq
编辑于 2020-06-15 19:25
+ 关注

2020农行研发(软开)天津,实习笔经

时长175min,三个部分

一、计算机选择题(80题,60min)

  1. 数据库:大部分是数据库查询语句的题,还有一些数据库范式,定义之类的概念题。
  2. 数据结构:树,链表,队列等。代码填空、读代码写结果之类的题。
  3. 计算机网络:IPV6,吞吐量,比特率等等,有小部分计算题。
  4. C/JAVA:基本都是读代码写结果and程序填空
  5. 思维逻辑
题量比较大,有不少没时间做了,只能“C无敌”了🤣

二、编程题(3道,90min)

采用python。也支持C/C++/JAVA
1.10个数求平均值,找出前三个距离最短的数,并输出。
2.一个字符串计算表达式,只包含加减。
3,三进制运算,求结果,输出字符
前两题相对简单,第三题印象比较深刻,考完之后复现了一下,希望有帮助吧。
num1='121'
num2='1212'
def plus(num1,num2):
    sum1=0
    sum2=0
    def mi(num):         #3的幂函数
        x=1
        if num==0:
            return 1
        elif num>0:
            for i in range(num):
                x*=3
            return x
    for i in range(len(num1)):
        x=int(num1[-(i+1)])
        sum1+=x*mi(i)
    for i in range(len(num2)):
        x=int(num2[-(i+1)])
        sum2+=x*mi(i)
    sum=sum1+sum2        #转化成十进制相加
    n=0
    index=0
    for i in range(100):#找出需要几位三进制数可以
        n+=mi(i)
        if n>sum:
            break
        index+=1
    temp=''
    for i in range(index):#短除
        x=sum%3
        sum=int(sum/3)
        y=str(x)
        temp=temp+y
    result=temp[::-1]
    return result

三、性格测试

四、总结感悟

  • 总的来说,农行软开的笔试还是比较偏重计算机知识,还有手撕代码环节,题量大,覆盖面广,难度适中吧。
  • 数据结构,C语言要掌握的比较好,这方面确实比较欠缺,后期还要夯实基础。
  • 从笔试来看,对于技术的要求,在业内比较高(其他银行手撕代码、程序填空的情况很少)
  • 希望对大家有帮助吧,许愿农行软开!
--------------------------------------------------------------
6.15更新:
前两个题的代码也用python复现了一下,希望能帮到大家。

第一题

nums=[33,44,61,2,36,42,56,81,11,17]
def f(nums):
    dsum=0
    for i in nums:
        dsum+=i
    avg=dsum/len(nums)
    dis=[]
    for i in nums:
        dis.append(abs(avg-i))
    result=[]
    for k in range(3):
        dmin=max(dis)    #此处注意,不能为dis[0].第一个为最小时会一直输出第一个
        index=0
        for i in range(len(nums)):
            if dis[i]<dmin and nums[i] not in result:
                dmin=dis[i]
                index=i
        result.append(nums[index])
    return result

第二题

a='100+200-1+2-3'
def f(expression):
    num=''
    array=[]
    list=[]
    for i in range(len(a)):
        if a[i].isdigit():
            num=num+a[i]
        elif a[i]=='+'&nbs***bsp;a[i]=='-':
            array.append(int(num))
            list.append(a[i])
            num=''
        if i==len(a)-1:
            array.append(int(num))
    dsum=array[0]
    for i in range(len(list)):
        if list[i]=='+':
            dsum+=array[i+1]
        elif list[i]=='-':
            dsum-=array[i+1]
    return dsum



(split剥离法)
a='100+200-1+2-3'
def f(a):
    b=a.split('+')
    c=[]
    for i in b:
        temp=i.split('-')
        c=c+temp
    array1=list(map(int,c))
    list1=[1]
    for i in range(len(a)):
        if a[i]=='+' :
            list1.append(1)
        elif a[i]=='-':
            list1.append(-1)
    dsum=0
    for i in range(len(array1)):
        dsum+=array1[i]*list1[i]
    return dsum
注:第二题有大佬说可以用eval函数直接上🤣 不知道这个函数的我在傻傻的码代码🤣

全部评论

(16) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

近期热帖

近期精华帖

热门推荐