2020年3月24日360内推笔试

本文分享了作者2020年360内推笔试的经历,包括考试结构、注意事项和遇到的技术问题。重点讨论了两道编程题,涉及DNA序列最少修改次数和抽奖概率计算,提供了解题思路和Python代码示例。

考试时长2个半小时,笔试题分为三个部分:

1.  20道逻辑选择题(包括图形找规律、数字找规律、小学奥数)

2.  40道基础选择题(包括计算机网络、C++补全代码/查看输入输出、python、机器学习)

3.  2道编程(编程可以使用本地IDE,不做跳出限制)

这三部分每一部分作答完毕后,必须提交才可进入下一部分,提交后不能再进行修改。

 

第一次笔试经验不足,有很多需要注意的问题:

1.在笔试过程中突然跳出广告弹窗,生气,被统计一次切出页面次数。因此电脑上的广告弹窗应该想办法都清理掉。

2.由于赛码网笔试时并不会显示摄像头拍到了你哪里,然后我看题的时候离电脑屏幕有点太近了可能导致我的脑袋过大摄像头识别不了,窒息了,又被统计一次。

3.由于是手机给电脑开的热点,中途来了电话直接导致掉线。

4.重新连网之后发现选择题不能点全部考题看到哪道题做了哪道题没做,傻了吧唧的在那儿从第一题跳到最后一题反复跳转跳到最后才提交。还是多刷新几次就好了。

5.自从我掉线重连后,赛码网上摄像头不停显示异常,但chrome右上角显示此网页正在调用摄像头,我设置的就是允许调用,也不知道到底是什么原因。

6.做题的时候还是有点被倒计时影响到,有点紧张就静不下心来了。编程的时候特别傻,没把题看完。

 

这次笔试过后需要复习和强化的一些知识点:

1.C++补全代码题对于引用、实例化顺序等知识点的复习

2.算法复习,包括KMP算法、最小生成树、最短路径、机器学习知识

 

编程题:

题目1:

有一段DNA,包含两种字符,A和T,科学家可以通过两种方式修改这种DNA,第一种是替换DNA上两个核酸的位置。第二种是直接把字符修改为另一种字符。
输入两行,第一行是原始的DNA,第二行是目标DNA,保证长度是相同的。
求最少的修改次数。

样例输入:
        ATTTAA
        TTAATT

输出:3

思路:

.....其实编程题最好是思路想好然后动手写代码(如果时间来得及的话)。(以下所有的代码如有不对请轻拍)

思路1:交换操作是成双成对的,而替换操作是形单影只的。先分别统计原始字符串和目标字符串中A和T的个数。需要替换的字符串的个数为Nsub=abs(A1-A2)或者Nsub=abs(T1-T2)。统计原始字符串和目标字符串中字符不同的个数记为Ndiff。(Ndiff-Nsub)/2为需要交换的次数。替换加交换即为总次数。

python题解:

def minChange(ori, tar):
    numA=0
    numA2=0
    Ndiff=0
    for i in range(len(ori)):
        if ori[i]=='A':  #统计出原始字符为A的个数
            numA=numA+1
        if tar[i]=='A': #统计出目标字符为A的个数
            numA2=numA2+1
        if ori[i]!=tar[i]:  #统计出字符不同的个数
            Ndiff=Ndiff+1
    Nsub=abs(numA2-numA)
    return Nsub+(Ndiff-Nsub)/2

ori = raw_input()
target = raw_input()
print(minChange(ori, target))

思路2:原始字符和目标字符不同则需要进行修改,原始字符是A而目标字符是T,原始字符是T而目标字符是A。在这些不同的字符之间进行替换或者交换,因此分别统计原始字符为A且与目标字符不同的个数Na,原始字符是T且与目标字符不同的个数Nt。先进行交换操作,则Na-1,Nt-1。因为交换操作肯定是成双成对的,如果Na或者Nt减少到了0,那么交换次数统计完毕。剩余的只能进行替换操作。这样,总的来说,需要进行修改的次数实际上就是Na和Nt中较大的那个数。

python题解:可参考August的优快云博客  https://blog.youkuaiyun.com/m0_38065572/article/details/105082562

 

题目2:

有一个抽奖箱,n张中奖券,m张不中奖券,A和B轮流抽奖,如果抽中奖券就结束,抽到中奖票的人胜利。抽过的奖票会被扔掉。并且额外地,B每次抽奖后会再次抽取一张票并扔掉,就算这张票中了也不算他胜利。如果所有的奖票都抽光了也没人抽中,则B获胜。现在A先抽,求A获胜的概率,保留4位小数
        输入: n和m输出A获胜的概率
        样例输入:
        2 3
        输出 0.6000

思路:

思路1:博主又挖坑了,待填中

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值