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)
  • 相关阅读:
    设计模式学习之工厂方法(Factory Method,创建型模式)(2)
    设计模式学习之简单工厂(Simple Factory,创建型模式)(1)
    JAVA基础学习之 Map集合、集合框架工具类Collections,Arrays、可变参数、List和Set集合框架什么时候使用等(4)
    JS图片延迟加载分析及简单的demo
    SVN服务器搭建和使用(三)(转载)
    SVN服务器搭建和使用(二)(转载)
    SVN服务器搭建和使用(一)(转载)
    JAVA基础学习之String、StringBuffer、StringBuilder、基本数据类型的使用、整形进制转换、集合Collection、Vector、ArrayList、LinkedList、HashSet、TreeSet等(3)
    Entity FrameWork 中使用Expression<Func<T,true>>访问数据库性能优化
    JAVA基础学习之throws和throw的区别、Java中的四种权限、多线程的使用等(2)
  • 原文地址:https://www.cnblogs.com/jdbc2nju/p/10779717.html
Copyright © 2011-2022 走看看