[关闭]
@wuzhimang 2017-09-26T00:33:27.000000Z 字数 9440 阅读 1814

2017实习面试准备

面试


  1. 面试题 《程序员面试宝典》;算法题
  2. 数据结构 《王道书》 快速排序
  3. c/c++ 总结 《C编程专家》
  4. 加密算法 《系统安全》

公司调研

  1. 了解公司(或该部门)的产品 生产什么样的产品,怎么生产,如何盈利?
  2. 了解公司的企业文化 (在职或以往的员工)
  3. 了解公司的竞争对手(准备相关提问)
  4. 了解面试官

项目提问

问题 中新 同洲 拍牌 863 SDN
介绍一下
最具挑战性的方面(最难的bug)
学到的东西
如何影响道其他人
碰到过的冲突
犯过的错误

研究生项目

1. 863

2. 国拍

网络流量记录审计系统

3. SDN研究

工作情况

1. 中新软件

起点中文网信息监测系统“信息统计&报警”模块
具体来说是两个模块

2. 同洲电子

  1. 中山市标清机顶盒
    目的:08年软件完成,13年局方提出了新的要求

    • 更换CA:底层驱动加密解密那一块
    • 支持机顶盒股票功能:多媒体功能,包的解析那块
    • 如家广告功能:开机广告,音量条广告,实现动态修改,游标广告等等
    • 以前遗留下来的BUG
  2. CA商务认证
    公司没有给予ST5197平台的同方CA认证

    • 独自出差北京一个月,完成集成功能,并通过商务认证,提供底层测试驱动库,库不一定是OK的,共同开发
    • 同其他公司人员交流问题,有时候解决一个问题会很麻烦,但可以暂时的规避
    • 解析数据流,分析协议

3. 美亚光电

4. 科大讯飞

提问系列

1. 面试

带着记事本去参加面试,这样把想问的问题记录在上面,面试时可作为参考
预先准备10-15个提问

2. 宣讲会

面试题

  1. 集合-金领简历
  2. 为什么离职?换工作这么频繁?

预备知识

1. 数据库简单知识

mysql默认端口号:3306

  1. 分表(水平分表)
    • 数据库数据越来越大,随之而来的是单个表中数据太多。以至于查询书读变慢,而且由于表的锁机制导致应用操作也搜到严重影响,出现了数据库性能瓶颈。
    • 一种是表锁定(myisam存储引擎),一个是行锁定(innodb存储引擎)
    • 一个主表ENGINE=MERGE, 多个分表ENGINE=myisamENGINE=innodb 链接
  2. 数据库查询语句的优化
    • 一般情况下,Select Count (*)Select count(1)两着返回结果是一样的
    • 假如表沒有主键(Primary key), 那么count(1)count(*)
    • 如果有主键的話,那主键作为count的条件时候count(主键)最快
    • 如果你的表只有一个字段的话那count(*)就是最快的

2. 知识点

  1. 计算机启动流程:
    1、加载BIOS的硬件信息与进行自我测试,并依据设置取得第一个可启动的设备; UEFI
    2、读取并执行第一个可启动设备内的MBR的Boot Loader(即grub等程序)
    3、依据boot loader的设置加载Kernel, Kernel会开始检测硬件与加载驱动程序;
    4、在已经驱动加载完后,Kernel会主动调用/sbin/init进程,而init会取得run-level信息;
    5、init 执行/etc/rc.d/rc.sysinit 文件来准备软件执行的操作环境(如网络、时区)
    6、init 执行run-level的各个服务的启动(script方式)
    7、init 执行/etc/rc.d/rc.local 文件 → 用户自定义启动程序;
    8、init 执行终端机模拟程序mingetty 来启动login进程,最后等待用户登陆

  2. 堆和栈的区别:

    1. 数据结构里面
    2. 内存结构:栈从高地址向低地址增长;堆从地址向高地址增长
  3. B树,B+树:
    定义,应用,MYISAM, InnoDB
    http://blog.csdn.net/hguisu/article/details/7786014
    B树是为了提高磁盘或外部存储设备查找效率而产生的一种多路平衡查找树。
    B+树为B树的变形结构,用于大多数数据库或文件系统的存储而设计。

  4. 红黑树&&AVL树
    http://blog.csdn.net/mmshixing/article/details/51692892
    根节点是黑的;节点要么是黑的、要么是白的;叶子节点(null节点)也是黑的;一个节点是黑的,那么其孩子节点是红的;对每个结点,从该结点到其子孙结点的所有路径上包含相同数目的黑结点
    红黑树通过非严格的平衡来换取增删节点次数的降低,所以其插入效率更高!
    其查询性能比AVL要低一点,但是插入和删除性能较高,所以对于对于大量的数据比较好!
    map, set 比较好!!!!
    • 著名的linux进程调度Completely Fair Scheduler,用红黑树管理进程控制块
    • epoll在内核中的实现,用红黑树管理事件块
    • nginx中,用红黑树管理timer等
    • Java的TreeMap实现
    • 红黑树:平衡二叉树,广泛用在C++的STL中。map和set都是用红黑树实现的
    • 关联数组
  5. 进程间的调度算法:
    http://blog.csdn.net/luyafei_89430/article/details/12971171
    1. 先来先服务
    2. 短作业优先
    3. 优先权:高优先权调度(抢占式和非抢占式)—> nice
    4. 高响应比调度算法((等待时间+ 要求时间)/要求服务时间)
    5. 基于时间片的轮转调度算法
    6. 多级反馈队列调度算法
  6. 进程和线程的区别:http://blog.csdn.net/linux12121/article/details/51786233
    1. 调度&拥有资源:进程——资源分配的最小单位,线程——程序执行的最小单位(调度)。 线程可以看做是进程内的一条执行路径
    2. 并发性:线程使得CPU更加有效
    3. 系统开销:进程拥有独立的地址空间,还包括一些数据包括数据表(用来维护代码段、堆栈段、数据段),创建和销毁的开销比较大。而线程,拥有独立的栈空间,但是共享数据段,彼此之间使用相同的地址空间,共享大部分数据,开销较
    4. 通信机制:IPC比较复杂;线程之间很方便,通过共享的数据结构
    5. 地址空间和其他资源:进程间的地址空间是相互独立的
    6. 安全性:一个进程崩溃后,对其他进程的影响较少
  7. 进程和线程如何选择:
    1. 是否需要频繁的创建和销毁,优先使用线程
    2. 需要大量的计算工作,切换频繁时用线程,耗时的操作使用线程可以提高应用程序的响应
    3. CPU系统效率,并行操作使用线程(C/S服务器端的并发线程想用用户的请求)
    4. 安全、稳定的话,选择进程;速度的话,选择线程! 如:SSH只能用多进程!!!一个线程挂了,这个进程就挂了
  8. 多线程、线程池的选择:
    1. 当服务端处理单个任务时间较短且所需处理任务量较大时。因为线程频繁地创建和销毁会造成服务器性能损耗。 频繁的创建和销毁时,选择使用线程池(C语言的网络爬虫) ,线程池
    2. 每一个任务是无状态的,前后请求没有关联
  9. Linux文件系统:
    i节点(索引节点):文件的描述信息
    软连接(指向文件的路径)、硬链接(指向i节点)
  10. 虚拟地址空间:(虚拟内存不一样)
    1 每一个进程都有自己独立的地址空间,各不干扰,保证代码和数据的安全。
    2 进程可以使用一系列相邻的虚拟地址来访问物理内存中不相邻的内存。
    3 可以在一个物理内存较小的主机上运行多个进程。
  11. 字符串匹配算法
    https://wenku.baidu.com/view/e852f195cc7931b765ce15b5.html
    KMP(前缀搜索) BM(后缀搜索) Horspool 自动机 自动计(bnfa_search.c)
    NFA是非确定性的状态机,DFA是确定性的状态机。确定性和非确定性的最大区 别就是:从一个状态读入一个字符,确定性的状态机得到一个状态,而非确定性的状态机得到一个状态的集合。
    http://blog.csdn.net/yukuninfoaxiom/article/details/6057736
  12. I/O模型
    http://www.cnblogs.com/zhuyp1015/archive/2012/05/31/2529203.html
    五种I/O模型请掌握,阻塞I/O,非阻塞I/O,I/O复用,信号驱动式I/O,异步I/O。
    同步和异步关注的是消息通信机制(synchronous communication/asynchronous communication)
    所谓同步是指,发出一个调用之后,在没有得到结果之前,该调用就不返回。但是一旦调用返回,其就返回结果
    所谓异步是指,发出调用之后,这个调用直接返回,但不会立刻得到结果,而是在调用发出之后,被调用者通过状态、通知来通知调用者(或回调函数)
    同步I/O操作:导致请求进程阻塞,不导致I/O操作完成
    异步I/O操作:不导致请求进程阻塞
    异步就是异步
    只有同步才有阻塞和非阻塞之分,异步肯定是非阻塞的!!!
    同步:执行一个操作之后,等待结果,然后才继续执行后续的操作。
    异步:执行一个操作后,可以去执行其他的操作,然后等待通知再回来执行刚才没执行完的操作。
    阻塞:进程给CPU传达一个任务之后,一直等待CPU处理完成,然后才执行后面的操作。
    非阻塞:进程给CPU传达任我后,继续处理后续的操作,隔断时间再来询问之前的操作是否完成。这样的过程其实也叫轮询。
    (1)阻塞式IO,recv,read 等到有数据了才返回
    (2)非阻塞式IO,设置描述符为非阻塞,其立即返回,但需要进程自己一直检查是否可读
    (3)IO多路复用 --> 同步非阻塞,严格的来讲,是把阻塞点改变了位置(需要阻塞的检查时候可读)
    (4)信号驱动IO
    (5)异步IO
  13. select, poll, epoll
    拉一个子线程去轮询、去死循环,或者使用select、poll、epool,都不是异步。
    关于select, poll, epoll自己了解的并不多,因为需要轮询的文件描述符集合不大!
    select:
    1. 每次调用要将fd从用户到拷贝到内核态
    2. 每次都得在内核遍历所有的fd
    3. 可打开的文件的数目有限制
    epoll 边缘触发、水平触发
    http://www.cnblogs.com/yuuyuu/p/5103744.html
    • WDT:系统间高速文件传输FaceBook开源工具,WDT既是一个嵌入式函数库,也是一个命令行工具,它通过多TCP通道让系统间文件传输尽可能快速。WDT代表(Warp speed Data Transfer)和Wormhole Data Transfer。它快如闪电。
      http://www.tuicool.com/articles/VVRnEnF
  14. mysql索引类别
    http://www.jb51.net/article/49346.htm
  15. “反射机制”: 简单的说,就是提供某种机制,在运行时可以获得一些对象和类型的结构信息。
  16. “闭包”:闭包是一类特殊的函数。如果一个函数定义在另一个函数的作用域中,并且函数中引用了外部函数的局部变量,那么这个函数就是一个闭包。
  17. 网络内核代码
    • 用户态&核心态
  18. c程序的调试(core)
  19. DDoS攻击
    • HTTP慢速攻击
      • slow header
        HTTP协议规定,HTTP Request以\r\n\r\n(0d0a0d0a)结尾表示客户端发送结束,服务端开始处理。那么,如果永远不发送\r\n\r\n会如何?Slowloris就是利用这一点来做DDoS攻击的。攻击者在HTTP请求头中将Connection设置为Keep-Alive,要求Web Server保持TCP连接不要断开,随后缓慢地每隔几分钟发送一个key-value格式的数据到服务端
      • slow body
        在POST提交方式中,允许在HTTP的头中声明content-length,也就是POST内容的长度。在提交了头以后,将后面的body部分卡住不发送,这时服务器在接受了POST长度以后,就会等待客户端发送POST的内容,攻击者保持连接并且以10S-100S一个字节的速度去发送,就达到了消耗资源的效果
    • SSL 攻击
      机密性(密钥加密)、可靠性(认证、证书)、完整性
      Renegotiating机制让攻击者可以在一个TCP连接中不停的快速重新协商
    • UDP Flood Attack攻击
      也称为UDP淹没攻击,当不存在UDP端口时,会产生一个“目的地址无法连接” ICMP报文 相关信息
  20. C++ (C专家)
  21. 常见协议的端口
    https(443) -- 三次握手、四次挥手详细解说
    smtp(25)
    mysql(3306)
  22. 网卡缓冲区(重要), 网络数据包发送接收全过程网络数据包收发流程,流量控制&拥塞控制, NAPI, net.ipv4.tcp_mem=111 222 333限制一个协议的总体内存用量 参考
  23. 强弱类型
  24. 结构体(struct、union)的sizeof,结果只可能是最大项类型的整数倍(有效项的整数倍),数据项只能存储在地址是数据项大小的整数倍内存位置上,# pragma pack(n) 参考
  25. ABCD类地址 CIDR
  26. HTTP2.0 二进制帧,多路复用,请求优先级,流量控制,服务器端推送以及首部压缩等, HTTP前世今生 -- head of line blocking; 连接无法复用,websocket--允许用户在浏览器中实现双向通信,实现数据的及时推送,如在线聊天室(html5 应用);
  27. 幂等性:在编程中.一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数,或幂等方法,是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。
  28. 英语简历、英语面试,王道书必须了解!数据结构、操作系统、计算机网络、安全的加密算法、SDN常问题目!Shell编程
  29. 简历里面提到的肯定都要会,最重要的是《程序员面试金典》一定要多练习!学些!明天搞一天那个!自己的笔记
  30. 用英语介绍一个你做过的项目,用英语自我介绍,英语简历
  31. 一些基本的安全类算法
  32. sed工具和gawk工具,shell知识复习下
  33. 进程间通信方式,彼此的特点,自己的总结
  34. 拓扑中毒是什么?
  35. 静态CDN
  36. 网络安全
  37. 修改系统/用户的最大文件描述符和系统上限,ulimit, /etc/security/limits.conf, /etc/profile
  38. fork函数说明链接
  39. TCP状态转换,为什么是3次握手,4四次挥手
  40. AIMD拥塞控制算法,加性增加,乘性减少!
  41. B树、B+树、MyISAM、InnoDB
    • MyISAM索引文件和数据文件是分离的,索引文件仅保存数据记录的地址。
  42. 数据库隔离机制 ACID、隔离级别(读未提交、读已提交、可重复读、串行化)

比赛

  1. 华为网络技术大赛

    • 华为软件精英挑战赛: 视频服务器部署问题,n个节点的网络拓扑中,任意两个节点之间都有一定限制的带宽以及费用,n个几点当中,有m个消费节点,消费节可以理解为用户,也就是对在线视频带宽有要求的,m个消费节点对应有m个不同给的需求,如果将若干的服务器附属在n个节点中使得在满足各个消费节点的总带宽需求的情况下,总费用最少(费用包括,任意两条线路之间的带宽,线路的租用费用cost,视频服务器的cost),复赛的话规模变大了,视频服务器有种类的区别(我把题拆解为两个部分)
      1. 消费节点是确定,视频服务器是不确定,在确定视频服务器之后,其实可以抽象为图论里面的一个最小费用最大流的问题!只不不过是多源多汇节点的情况!在这种情况下,我可以算出最少cost值的(增光路径、剩余网络、残留网络) 使用的是SPFA, ford算法
      1. 点怎么选择呢?暴力出奇迹吗…… 简单的分支裁剪,其实说白了就是排序尝试! 对节点根据它的出度、费用来计算一个权值,然后排序,尝试(中间加一些条件进行裁剪)
      1. 粒子群算法,一个粒子算一个可行解,解是一个向量(表示视频服务器的位置),然后最开始通过简单的聚类的算法对节点进行分类(k-means)算法,敲定了10个解,每个解其实都会对应一个cost值,然后每一次迭代的话,对应会有一个全局最优值,在下一次迭代的时候,通过更新公式,更新每个粒子,公式是根据全局最优的值来计算的,就这样一步步迭代,指代全局最优解连续十次没有更新那就算找到了解!
  2. 网络技术大赛

    • 对网路感兴趣,面向是网络工程师、网络架构师、产品经理!
    • 思科、华为的网络工程师的证,对网络协议比较熟悉,临场应变能力(个人答辩),ppt展示 出一个数据中心的解决方案,从设备的选型,技术的选型来看!安全、容灾备份、网络拓扑、核心交换、聚合交换机、边界交换机等等! 网络架构方案、存储方案、安全方案、计算资源方案、技术选型docker、haddop、openstack、spark技术等!SDN………… 计算、存储、网络……
  3. 黑客马拉松比赛

    • 做了一个图片加工的产品opencv,商汤科技的库!

实习

  1. 数据挖掘的工作,目前做的并不是算法类的研究,而是数据的整合!企业QQ、营销QQ、QQ分析等很多产品融合到一起!TDW数据仓库平台,mysql,hive, spark,数据源
  2. 了解业务,在了解业务之后才可能更多的去挖掘数据中的价值(基础研究岗),shell、python、spark编程! 数据的整合、提取、报表,统计PV、UV等的,数据转换率啊,高质量的例子和对象啊! 通过整合各个信息—— 电话营销,比如现在学英语,对不不对,认识乱打的!但时候潜在的个可能性的兑现个,然后将这些对象分配给那些王牌推销员,进而这样可以提高整个20%的成单率!复杂的模型!基于mysql, 基于hive的python编程,基于spark 的scala编程,shell调度任务!

为什么写博客!

CSDN日报,“建立自己的品牌”, 作为一名程序员,三种能力比较重要“编程;写作;英语”

编程题

  1. 双指针
  2. http://blog.csdn.net/zzran/article
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注