zoukankan      html  css  js  c++  java
  • 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', 'dave@163.com', '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)
  • 相关阅读:
    MySql cmd下的学习笔记 —— 引擎和事务(engine,transaction)
    MySql cmd下的学习笔记 —— 有关视图的操作(algorithm)
    MySql cmd下的学习笔记 —— 有关视图的操作(建立表)
    MySql cmd下的学习笔记 —— 有关常用函数的介绍(数学函数,聚合函数等等)
    MySql cmd下的学习笔记 —— 有关多表查询的操作(多表查询练习题及union操作)
    MySql 在cmd下的学习笔记 —— 有关多表查询的操作(内连接,外连接,交叉连接)
    MySql cmd下的学习笔记 —— 有关子查询的操作(where型,from型,exists型子查询)
    MySql cmd下的学习笔记 —— 有关select的操作(order by,limit)
    剑指Offer--第21题 调整数组顺序使奇数位于偶数前面;
    剑指Offer--和为s的连续正数序列
  • 原文地址:https://www.cnblogs.com/jdbc2nju/p/10779717.html
Copyright © 2011-2022 走看看