2019.4.25 周四 阴有小雨

今天晚上跟朋友吃了一顿小龙虾和烧烤,然后又看了一把复联四,顺便交流了一波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

时间: 2024-09-28 06:53:32

2019.4.25 周四 阴有小雨的相关文章

2019/08/25 leetcode

2019/08/25: L230, L226, L18, L234, L23 1. L230 Kth smallest element in BST 借助 Stack 或 LinkedList inorder traveresal, LinkedList会更快 ArrayList, LinkedList, Vector, Stack  https://blog.csdn.net/iteye_11495/article/details/82618748 2. L226 Invert Binary

【2019.9.25】Za

容斥 容斥 \(\Big|\bigcup\limits_{i=1}^nS_i\Big|=\sum\limits_{m=1}^n(-1)^{m-1}\ \sum\limits_{a_i<a_{i+1}}\Big|\bigcap\limits_{i=1}^mS_{a_i}\Big|\) 不定方程非负整数解计数 不定方程\(\sum_{i=1}^n\ x_i=m\)和\(n\)个限制条件\(x_i\le b_i\) 没有限制时 其非负整数解为\(C_{m+n-1}^{m-1}\) 相当于有\(m\)个

2019/01/25 低迷的一天

今天不分享技术,也不发表工作事情.主要是因为今天看到的2个事情有感 1.中午和同事下去吃饭,吃饭的地方是一个公共的美食城,所以就有那种吃完了的饭菜要等一会才有人收拾,恰好吃完后,隔壁2个人离去.这时候突然来了一个50岁左右的男人,着装整齐,背了个包,开始以为他是找座位,还特意看了下周围,也瞟了下我,突然他拿起别人吃完的饭菜在那里狼吞虎咽,第一次看到,也是很真实的看到,我没想到一个看起来不像缺钱的人竟然会饭都吃不起,我当时还看了他几眼,他好像知道了有点忐忑那种,手和筷子发抖,于是我马上低头看手机,

[jzoj 6084] [GDOI2019模拟2019.3.25] 礼物 [luogu 4916] 魔力环 解题报告(莫比乌斯反演+生成函数)

题目链接: https://jzoj.net/senior/#main/show/6084 https://www.luogu.org/problemnew/show/P4916 题目: 题解: 我们设$f(x)$表示最小循环节长度为x的合法序列数,那么有$ans=\sum_{d|gcd(n,m)}\frac{1}{d}f(d)$ 这是因为最小循环节为d的序列对应的环会被计算d次,比如 0101,最小循环节长度为 2(循环节为 01),其对应的环会被统计 2 次(序列 0101 与 1010)

学习总结2019.3.25

元组 (存多个数据,不可变,有序) 定义:在圆括号内用逗号隔开的多个任意类型数据,元组与列表的 t = (1, 'a', ('b',2)) t = (1, ) 常用操作: 索引取值 t = (1, 2, 3, 2, 3, 2) print(t[1]) print(t[-2]) 切片 print(id(t)) nt = t[:-1:] print(nt, id(nt)) 长度(item元素个数) print(len(t)) 成员运算(in | not in ) 元组内置方法 print(t.cou

2019.5.25 Noip模拟测试2

原文地址:https://www.cnblogs.com/LJB666/p/10921986.html

2019.7.25锻炼逻辑思维9道题。

1.在calDate()的基础之上添加 计算当前日期的是星期几的功能 注:设定1900年1月1日为周一 2判断101-200之间有多少个素数,并输出所有素数. 3.打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身.例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方. 4.将一个正整数分解质因数.例如:输入90,打印出90=2*3*3*5. 程序分析:对n进行分解质因数,应先找到一个

2019/7/25 编程本质及计算机组成原理(01)

1. 什么是编程语言? 编程语言就是人与计算机交流的一个工具,一个介质. 2. 什么是编程? 编程是一个用编程语言写出一个文件的一个过程,这些文件会产生一个目的一个结果. 3.为什么要编程? 编程写出一个软件或一个文件,这些文件会提高我们的生产力效率,或者让我们的需求达到满足**. 4.计算机5大组成分别有什么作用? 计算机五大组成部分由控制器,运算器,输入设备,输出设备,存储器组成. 控制器是计算机的指挥系统,相当于人的大脑一样指挥一些动作工作的运转. 运算器是计算机的运算系统.实现算术运算和

2019.08.25校内模拟赛Graph

其实这是道很难的容斥. 所以我考场上直接考虑了\(m=0\)的暴力和白给的\(m=\cfrac{n(n-1)}{2}\)的\(10\)分. 白给的那十分是完全图,根据题意就只需要输出\(0\)就行了. 而至于\(m=0\)的\(40pts\),稍加思索就会发现它和错排是双射关系... 于是,就直接错排就好了. 但我当时忘了错排公式是什么了...递推式也没想起来... 于是我就妄想手推容斥形式的错排,但是我死了,没推出来. 于是我就\(10pts\)走人了. 后来在\(wqy\)的指导下推了出来,