2019.10.27 头条面试准备
2019.10.27 头条面试准备
个人简历
2019.06 - 至今上海华为开发工程师
实习部门:5G开发部
项目:网站开发、运维开发、数据处理
**2019.06至今华为实习 **
Python+Django+Javascript+Nginx+rabbitMQ+ELK
基于 Django 框架使用 Python 开发网站基础进程监控系统,实现进程异常记录、进程异常自动恢复、发送告警邮件,并且用 Web 界面进行展示和管理。整个框架由本人独立设计完成并上线,保证了部门 Web 的稳定。
使用Python对文件里面的数据进行处理分析,并完成web展示。
2019.06 - 至今网站基础进程监控系统开发工程师
1,基于 Django 框架使用 Python 开发网站基础进程监控系统;
2,使用pymysql实现进程异常记录、利用subprocess+ssh连接机器检查进程状态、异常自动恢复、使用rabbitMQ作消息队列发送告警邮件和短信通知;
3,使用JavaScript、Jquery、echarts等开发 Web 界面进行展示和管理进程。4,整个框架由本人独立设计完成并上线,保证了部门 Web 的稳定。2018.12 - 2019.03华为云意见反馈系统开发工程师
1,基于Spring boot框架+Mybatis+Redis+Restful等技术的一个意见反馈系统。2,本人在项目里面负责后端部分,使用IDEA开发工具,Git协同开发
3,实现了登录校验,发布,删除,评论等功能。
IT技能:熟悉Python、Java,有扎实的数据结构算法基础,熟悉Linux操作,熟悉JavaScript页面开发;
职位相关技能:了解Hadoop,了解redis,了解机器学习、深度学习。
CET6:520 有良好的英语阅读能力
准备
- 说一下Django框架
- 说一下进程监控系统
生产服务依靠很多关键性进程的运行来维持。比如rabbit_mq消费者,数据分析的脚本,网站响应速度,数据库健康状况等等。这些进程分布在不同机器上,而且数量巨大。为了把这些进程监控起来,就开发了一个简单的监控系统。通过前端界面进行配置服务相关信息,所有进程的状态都可以通过前端进行查看。一旦有异常会根据邮件分组进行发送,如果配置了异常自动恢复功能,会自动恢复服务。
底层原理:ssh,ping,connect,urlopen,rabbit_mq消息队列
不足:虽然功能简单,但是能稳定运行。其中也有很多不足的地方,如果机器数量特别大,那么这个监控系统可能管理起来就会很麻烦。
优化:可以借鉴开源框架的C/S模式,客户端上报机器信息,服务端进行汇总监控。
- python文件数据分析
对5G一些模块生成的文件,进行分析统计一些高频函数。
elk
elasticsearch
rabbitMQ 和 kafka
都是消息队列:
- kafka: scala,分布式多分区多副本基于zk协调的分布式消息系统。高吞吐的分布式发布订阅消息系统,水平扩展、高吞吐率
- rabbitMQ,起源于金融系统,分布式系统存储转发,高可靠性
nginx
-
上文已经提及Nginx的worker进程个数与CPU绑定、worker进程内部包含一个线程高效回环处理请求,这的确有助于效率,但这是不够的。
作为专业的程序员,我们可以开一下脑洞:BIO/NIO/AIO、异步/同步、阻塞/非阻塞...
要同时处理那么多的请求,要知道,有的请求需要发生IO,可能需要很长时间,如果等着它,就会拖慢worker的处理速度。
Nginx采用了Linux的epoll模型,epoll模型基于事件驱动机制,它可以监控多个事件是否准备完毕,如果OK,那么放入epoll队列中,这个过程是异步的。worker只需要从epoll队列循环处理
Java
-
spring boot基础
- 什么Spring的原理,
- Ioc和
- AOP,
- 事务,
- 多个bean的关系,
- SpringMVC的流程
redis
hadoop
reference:
zookeeper
reference:
-
流处理框架
-
设计模式
- 单例模式
-
哈希一致算法
-
Hive
- 分区和分桶
-
hbase
spark
reference:
hive
数据挖掘算法
算法
-
二叉树中序遍历 非递归 -
冒泡排序 -
最长公共子串 -
微信扫码登录设计原理 https://www.jianshu.com/p/047acc4190cb
-
01背包 -
二叉树序列化与反序列化
-
二叉树前序遍历中序遍历构造还原
-
LRU算法实现
-
单链表奇数位递增,偶数位递减进行排序 -
矩阵中的二分查找(一个二维矩阵,从左到右是升序,从上到下是降序,找一个数是否存在于矩阵中(类似于二叉查找树))
-
数组内部重复,求重复部分(1,2,3,1,2,3 求 1,2,3)
-
二叉树是否存在和位N的路径
-
求二叉树最长路径
-
归并排序
-
快速排序 -
通过内存计数器实现限流器
-
名人问题:
-
链接:https://www.nowcoder.com/discuss/115824 所有人都认识TA,但是TA不认识任何其他人 a [i] [j] = 1, i 认识 j a [i] [j] = 0, i 不认识 j a [i] [i] 置空 给定n*n的二维数组,有多少个名人?具体都是谁?
-
-
删除链表中所有重复元素
-
输入一个字符串String str,求重复次数最多的字符的第一个索引值
例如
输入:"aabcbcbc"
输出:2(b和c都出现了3次,但b在c前面)对char转换成int,然后26取模,在对应位置加26,遍历一遍,找到大于2*26的数(两次重复能这么做)
self:
场景题:
- 游戏保证100人在线不卡:长连接,消息队列静态资源分配
- 小米抢购怎么做
- 抢红包随机算法,保证公平性
- 微博高并发应对措施
- 爬虫多个电商数据,如何存放,如何找到同一商品最便宜的url
- 一个五升桶,一个三升桶,怎么倒出四升水,水可以无限量使用
- 滴滴派发订单功能设计?
- 有声小说音频自动匹配字幕情景题,有大量的音频文件,非人力能够做到,语音识别匹配生成字幕文件,字幕文件中语音和字幕的时间需一致,如何设计?
- 英雄联盟H5小游戏排名,实时动态更新,如何实现?
- 杭州G20形象工程需要擦窗子,估计杭州擦窗子要多少费用?
- 假设公司要建一个数据中心,你会如何处理?
- 例如销售衣服,针对衣服可以建立哪些特征向量,这里只是举了一个例子。不能说把算法全都掌握,但至少要熟悉一类,了解算法的原理以及该算法解决的实际问题。
数据库
-
索引:
-
平衡树,b树 和 b+树 https://www.cnblogs.com/aspwebchh/p/6652855.html
-
聚集索引(根据主键生成平衡树,然后进行查找),一般的查找步骤是,根据字段查找对应的id,然后根据id再查到具体的信息。 建立索引的目的就是加快id查找,根据多字段建立索引也可以省略根据id查找具体信息的目的。 比如:我要查name 小王 的 score成绩,根据这两个字段建立索引:<这种方式叫覆盖索引>
-
create index name_and_score on student(name, score); select score from student where name='小王';
-
-
b树 和 b+树的区别
-
数据库事务隔离级别
-
mysql 和 hbase对比
-
mysql数据库默认存储引擎,有什么优点
-
数据库引擎结构、区别
-
索引底层结构,插入数据索引结构的变化等
-
索引的优化方法,以及为什么(就是优化底层是怎么实现)
-
索引使用(优化器如何界定)
-
数据库几种日志,以及如何刷新,区别
-
数据库三个线程用处
-
数据库事务详细(不是指ACID几个性质,就是事务到底是基于什么实现的)
• 关系型和非关系型数据库的区别(各自优点)
• 常用SQL语句(DDL,DML,DCL,TCL)
• 数据库中join的类型与区别(inner join, outer join, cross join, natural join, self join),注意适用场景和sql语句的编写
• 数据库的索引类型
• 聚集索引和非聚集索引的区别(叶节点存储内容)
• 唯一性索引和主码索引的区别
• 索引的优缺点,什么时候使用索引,什么时候不能使用索引(重点)
• 索引的底层实现(B+树,为何不采用红黑树,B树)
• B树和B+树具体实现
• 索引最左前缀问题
• Mysql的优化(高频,索引优化,性能优化)
• 数据库引擎介绍,Innodb和Myisam的特点与区别
• 数据库中事务的ACID(四大特性都要能够举例说明,理解透彻,比如原子性和一致性的关联,隔离性不好会出现的问题)
• 数据库隔离性设置不同会出现的问题(脏读、不可重复读、丢失修改、幻读)
• 数据库的隔离级别,Mysql和Oracle的隔离级别分别是什么
• 数据库连接池的作用
• Mysql的表空间方式,各自特点
• 分布式事务
• 数据库的范式
• 数据的锁的种类,加锁的方式
• 视图的作用与使用方法(如何删除等)
• 分库分表,主从复制,读写分离。(我不会,也没碰到过)
• 项目中哪里用到了数据库,怎么用的
• Memcache和Redis了解
大数据和分布式
• Hadoop框架下,各个组件的构成及作用• BASE原则,CAP原则
• 一致性算法Raft的过程
• TIDB原理
• HBase的存储原理
• HDFS运行原理• Hive的了解
• Spark的了解
• 介绍熟悉的设计模式(单例,简单工厂,观察者模式等等)
• 写单例模式(饿汉模式和懒汉模式),线程安全版本
• MVC设计模式
others:
- epoll