博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用 Python 解答两道来自阿里伯乐系统的笔试题
阅读量:7227 次
发布时间:2019-06-29

本文共 1569 字,大约阅读时间需要 5 分钟。

目录

前言

朋友到阿里面试,分享两道小题,博主比较闲就试着用 Python 解答一下,实现方式肯定是多种多样的,优劣也会各有不同,欢迎交流。

题目一

三个线程交替打印 abcabcabc…,一个打印 a,一个打印 b,一个打印 c。

分析

典型的线程同步问题,解决思路是互斥锁,三个线程通过锁来完成互斥下的协作同步。

这里写图片描述

实现

import threadinglock_a = threading.Lock()lock_b = threading.Lock()lock_c = threading.Lock()def print_a(num):    if num < 0:        return    lock_a.acquire()    print('a')    lock_b.release()    print_a(num-1)def print_b(num):    if num < 0:        return    lock_b.acquire()    print('b')    lock_c.release()    print_b(num-1)def print_c(num):    if num < 0:        return    lock_c.acquire()    print('c')    lock_a.release()    print_c(num-1)def main():    num = 9    thread_a = threading.Thread(target=print_a, args=(num,))    thread_b = threading.Thread(target=print_b, args=(num,))    thread_c = threading.Thread(target=print_c, args=(num,))    lock_b.acquire()    lock_c.acquire()    thread_a.start()    thread_b.start()    thread_c.start()if __name__ == '__main__':    main()

题目二

有一个 String 类型数组 arr = { "a", "b", "d", "d", "a", "d", "a", "e", "d", "c" },请编码实现统计该数组中字符重复次数并由多到少的顺序对 a,b,c,d,e 重新排序输出。

分析

如果用 C 语言实现,那么姑且还是一道冒泡排序算法题。对于 Python 而言,这题就是比较单纯的熟练度考验,使用 collections 模块可以轻松实现。

实现

from collections import Counterli1 = ["a", "b", "d", "d", "a", "d", "a", "e", "d", "c"]print(Counter(li1))

from collections import defaultdictfrom collections import OrderedDictli1 = ["a", "b", "d", "d", "a", "d", "a", "e", "d", "c"]d = defaultdict(int)for k in li1:    d[k] += 1print OrderedDict(sorted(d.items(), key=lambda t: t[1], reverse=True))

转载于:https://www.cnblogs.com/jmilkfan-fanguiju/p/10589764.html

你可能感兴趣的文章
Shell标准输出、标准错误 >/dev/null 2>&1
查看>>
Android自定义对话框(Dialog)位置,大小
查看>>
设置python的默认编码为utf8
查看>>
简易sqlhelper-java
查看>>
通过案例对SparkStreaming 透彻理解三板斧之一:解密SparkStreaming运行机制
查看>>
HBuilder 学习笔记
查看>>
利用OpenStreetMap(OSM)数据搭建一个地图服务
查看>>
TopN算法与排行榜
查看>>
lucene排序算法之向量空间模型(一)
查看>>
新浪微博数据Json格式解析
查看>>
WLAN 802.11 wifl区别
查看>>
oracle授权动态视图权限给用户
查看>>
Debian – 出现-bash: pip: command not found错误解决办法
查看>>
Zxing扫描二维码
查看>>
我的友情链接
查看>>
aspcms后台拿shell漏洞(非添加模块)及修复方法
查看>>
C语言冒泡排序法
查看>>
B2B行业门户网站群发邮件时间及发送频率
查看>>
关于虚拟机能ping通物理机,而物理机ping不通虚拟机问题解决。
查看>>
同台机器启动多个mysql
查看>>