今天晚上跟朋友吃了一顿小龙虾和烧烤,然后又看了一把复联四,顺便交流了一波java技术加吹牛,very happy!
周五早上有个去亚信的面试,咨询了在那个部门工作的小伙伴,说用到kalfka和storm.天呐我也有没实际用过,那就随便自学一点点外加背几题面试题吧。
一、kalfka
Apache Kafka® is a distributed streaming platform.
a few concepts:
--Kafka is run as a cluster on one or more servers that can span multiple datacenters.
--The Kafka cluster stores streams of records in categories called topics.
--Each record consists of a key, a value, and a timestamp.
1. 基础
2. 面试题
Kalfa的用途和使用场景?
ISR代表什么?ISR的伸缩又指什么?
HW LEO LSO LW分别代表什么?
Kalfka怎么体现消息顺序性?
分区器、序列化器、拦截器是否了解?它们之间的处理顺序?
生产者客户端的整体结构?
生产者客户端使用了几个线程来处理?分别是什么?
哪些情形会造成重复消费?哪些会造成漏消费?
创建topic时如何选择合适的分区数?可以增加或减少分区数吗?
卡夫卡的幂等和事务分别怎么实现?为啥不支持读写分离?
卡夫卡有啥优缺点?说说和同类产品的比较?
简述kalfka的日志目录结构
kalfka有哪些索引文件
说说对kalfka底层存储的理解
为啥它强依赖zookeeper?
乱入:如何不用递归实现快排?
二、storm
storm是用来作流失处理的,而hadoop是作批处理,两者用处不一样。
三、python复习
1. 数据结构和算法(源于python cookbook第一章中20个专题前五个)
(1)将序列分解为单独的变量
只要对象是可迭代的,就可以执行分解操作,包括字符串、文件、迭代器以及生成器。
>>p = (4,5)
>>x, y = p
>>x
4
>>s = ‘Hello‘
>>a,b,c,d,e = ‘Hello‘
>>a
‘H‘
(2) 从任意长度的可迭代对象中分解元素
>>record = {‘Dave‘, ‘[email protected]‘, ‘1249809‘, ‘1233456‘, ‘8099999‘, ‘9999999‘}
>>name, email, *phone_numbers = record
>>name
‘Dave‘
>>phone_numbers
[‘1249809‘, ‘1233456‘, ‘8099999‘, ‘9999999‘]
(3) 保存最后N个元素(新进入的会挤掉最前面的)
用collections.deque完美解决
>>q = deque(maxlen=3)
>>q.append(1)
>>q.append(2)
>>q.append(3)
>>q
deque([1,2,3], maxlen=3)
>>q.append(10)
>>q
deque([2,3,10],maxlen=3)
(4) 找到最大或最小的N个元素
使用heapq中nlargest()和nsmallest()
>>nums = [1,8,2,3,25,98]
>>heapq.nlargest(3, nums)
[98,25,8]
(5) 实现优先级队列(稍微有点复杂的)
import heapq class PriorityQueue: def __init__(self): self._queue = [] self._index = 0 def push(self, item, priority): headq.heappush(self._queue, (-priority, self._index, item)) self._index += 1 def pop(self): return heapq.heappop(self._queue)[-1]
2. 入门回顾(源于Learning Python第一部分)
问题一:为什么要用python, 或者说python的优点
答:(1) 软件质量
python代码的设计致力于可读性,因此比传统脚本语言更具可重用性和可维护性。即使代码并非你所写,Python的一致性也保证了其代码易于理解。此外,Python支持软件开发的高级重用机制OOP。
(2) 提高开发者的效率
Python代码的大小往往只有C++或者Java代码的1/5~1/3。并且python程序可以立即运行,无需传统编译/静态语言所必须的编译链接等步骤,进一步提高了程序员的效率。
(3) 程序的可移植性
(4) 强大丰富的标准库和第三方库
比如但三方库Numpy,使python成为科学计算使用的首选语言之一。
(5) 组件集成
python是胶水语言,可与多种语言混合使用。著名的Tensorflow的核心部分使用C++编写,而用户接口使用python编写。
问题二:python的缺点
答:执行速度慢
3. 复习进阶(源于Beginning Python from Novice to Professional的7、10、14、15章)
(1)检查继承
>>issubclass(Cat, Animal)
True
>>Cat.__bases__
(<class __main__.Animal at 0x17le40>,)
(2) 重要的模块
sys模块(argv, exit([arg]), modules, path, platform, stdin, stdout, stderr)
os模块(environ, system(commond), sep, pathsep, linesep, urandom(n))
(3) socket
一个小型服务器
import socket s = socket.socket() host = socket.gethostname() port = 1234 s.bind((host,port)) s.listen(5) while True: c.addr = s.accept() print ‘Got connection from‘, addr c.send(‘Thank you for connection‘) c.close()
一个小型客户机
import socket s = socket.socket() host = socket.gethostname() port = 1234 s.connect((host,port)) print s.recv(1024)
原文地址:https://www.cnblogs.com/jdbc2nju/p/10779717.html