用 Python 解答两道来自阿里伯乐系统的笔试题
目录
- 目录
- 前言
- 题目一
- 分析
- 实现
- 题目二
- 分析
- 实现
前言
朋友到阿里面试,分享两道小题,博主比较闲就试着用 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:returnlock_a.acquire()print('a')lock_b.release()print_a(num-1)def print_b(num):if num < 0:returnlock_b.acquire()print('b')lock_c.release()print_b(num-1)def print_c(num):if num < 0:returnlock_c.acquire()print('c')lock_a.release()print_c(num-1)def main():num = 9thread_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 defaultdict
from collections import OrderedDictli1 = ["a", "b", "d", "d", "a", "d", "a", "e", "d", "c"]
d = defaultdict(int)for k in li1:d[k] += 1
print OrderedDict(sorted(d.items(), key=lambda t: t[1], reverse=True))
转载于:https://www.cnblogs.com/jmilkfan-fanguiju/p/10589764.html
用 Python 解答两道来自阿里伯乐系统的笔试题相关推荐
- 两道大众点评网技术部的笔试题
技术部全职-研发工程师问题测试(答题时间45分钟) 共两道题目,为必答题 问题: 如何快速比较这两个字符串是否相等?两个字符串相等的条件如下,字符串中的每个字母出现的次数都相等.例如:abbcd和ac ...
- 阿里校招 数据分析师 笔试题
2015年8月19日,阿里校招数据分析师笔试题.共计21题(貌似统计漏了一题,应该是单选少了一题,凑合看吧),选择题每个人的都不一样,问答题是一样的.暂时没有答案,希望对大家有用. 单选题: 1观测宇 ...
- 深圳Java学习:分享几道真实的企业Java工程师笔试题
深圳Java学习:分享几道真实的企业Java工程师笔试题,你都会做吗?
- 九月十月 阿里 百度 华为 校招笔试题
九月迅雷,华为,阿里巴巴,最新笔试面试十题 8月15日,百度2道面试题: 1.来自<编程之美>的概率题:一个桶里面有白球.黑球各100个,现在按下述规则取球:的 i .每次从通里面 ...
- 【撷英采华】阿里面试Linux基础笔试题-含答案
文章目录 一. 阿里面试流程 二. 阿里原题限时答题 三. 参考答案: 四. 总结 一. 阿里面试流程 阿里的面试一般分为笔试和电话面试. 很多大的外包公司都在帮阿里招聘,所以他们的候选人很多. 所以 ...
- 【前端】2015阿里前端实习生在线笔试题
网上找的题,自己做了做. ... 2015阿里巴巴前端实习生在线笔试题 1. (单项选择)对于下列程序运行结果,符合预期的是 function f1() { console.time('time sp ...
- 三天打鱼两天晒网python程序设计_Python经常会遇到三天的笔试题:钓鱼和两天的晒网:,之,三天打鱼,两天晒网...
问题概述:中国有句俗语叫"三天打鱼两天晒网"某人从1990年1月1日起开始"三天打鱼两天晒网",问这个人在以后的某一天中是"打鱼"还是&qu ...
- java常见面试题及答案(基础题122道,代码题19道),java高级面试笔试题
我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家. 扫描二维码或搜索下图红色VX号,加VX好友,拉你进[程序员面试学习交流群]免费领取.也欢迎各位一起 ...
- 2019阿里秋招一道笔试题(关于火柴拼出最大数字) - Android开发岗
题目描述: 使用火柴组成一个最大的数字, 规定: 可组成的数字 1 2 3 4 5 6 7 8 9 所需火柴数量 2 5 5 4 5 6 3 7 6 给定火柴总数m, 组成n位数字, 输出可以组成的最 ...
最新文章
- 使用 Global.asax 文件
- 成功解决ImportError: cannot import name 'pywrap_tensorflow'
- Vs2010与VC的区别
- java 链表反转_剑指BAT:如何最优雅着反转单链表?
- tensorflow神经网络结构可视化
- 如何在Windows上设置BitLocker加密
- 条令考试小程序辅助器_可以自己编题的答题软件,自定义题库考试出题工具,微信答题小程序...
- STM32工作笔记0012---认识老化试验
- 舰船目标检测的学习笔记
- 一个基于protobuf的极简RPC
- xml建模包括以下_数据挖掘--建模与挖掘的结合
- 腾讯发布三项息争前提 360将扣扣保镖下线
- 回溯法之旅行商问题解题思路详解
- 零线和地线的区别、示波器如何测量市电
- jedispool的使用
- HTML5编写格式命令详解
- 后代选择器和子代选择器
- 数学建模常见算法:拟合算法
- Windows和Linux上的管道符
- 【面试】MyBatis面试题