【面试题】2018秋招后台开发

2018秋招面经-后端开发mysql

1、计算机网络

基础部分

  1. TCP报头格式
  2. UDP报头格式
  3. TCP/UDP区别(不只是宏观上的,最好能根据各自的机制讲解清楚)
  4. HTTP状态码(最好结合使用场景,好比在缓存命中时使用哪一个)
  5. HTTP协议(一些报头字段的做用,如cace-control、keep-alive)
  6. OSI协议、TCP/IP协议以及每层对应的协议。
  7. SESSION机制、cookie机制
  8. TCP三次握手、四次挥手(这个问题真的要回答吐了,不过真的是面试官最喜欢问的,建议天天手撸一遍,并且不仅是每次请求的过程,各类FIN_WAIT、TIME_WAIT状态也要掌握)。
  9. 打开网页到页面显示之间的过程(涵盖了各个方面,DNS解析过程,Nginx请求转发、链接创建和保持过程、浏览器内容渲染过程,考虑的越详细越好)。
  10. http和https区别,https在请求时额外的过程,https是如何保证数据安全的
  11. IP地址子网划分
  12. POST和GET区别
  13. DNS解析过程

深刻部分

  1. TCP如何保证数据的可靠传输的(这个问题能够引伸出不少子问题,拥塞控制慢开始、拥塞避免、快重传、滑动窗口协议、中止等待协议、超时重传机制,最好都能掌握)
  2. 地址解析协议ARP
  3. 交换机和路由器的区别

2、数据库

基础部分

  1. 事务四大特性(ACID)
  2. 数据库隔离级别,每一个级别会引起什么问题,mysql默认是哪一个级别
  3. MYSQL的两种存储引擎区别(事务、锁级别等等),各自的适用场景
  4. 数据库的优化(从sql语句优化和索引两个部分回答)
  5. 索引有B+索引和hash索引,各自的区别
  6. B+索引数据结构,和B树的区别
  7. 索引的分类(主键索引、惟一索引),最左前缀原则,哪些状况索引会失效
  8. 汇集索引和非汇集索引区别。
  9. 有哪些锁(乐观锁悲观锁),select时怎么加排它锁
  10. 关系型数据库和非关系型数据库区别
  11. 了解nosql
  12. 数据库三范式,根据某个场景设计数据表(能够经过手绘ER图)
  13. 数据库的主从复制
  14. 使用explain优化sql和索引
  15. long_query怎么解决
  16. 内链接、外链接、交叉链接、笛卡儿积等

深刻部分

  • MVCC机制
  • 根据具体场景,说明版本控制机制
  • 死锁怎么解决
  • varchar和char的使用场景。
  • mysql并发状况下怎么解决(经过事务、隔离级别、锁)

Redis

  • redis数据结构有哪些
  • redis队列应用场景
  • redis和Memcached(支持数据持久化)
  • 分布式使用场景(储存session等)
  • 发布/订阅使用场景

3、操做系统

  • 内存的页面置换算法
  • 进程调度算法
  • 进程间通讯方式
  • 进程线程区别
  • 进程之间的通讯
  • 父子进程、孤儿进程
  • fork进程时的操做,
  • 这个部分我回答的都很差,只能是死记硬背,建议基础好的同窗多看看操做系统这部分,能大大加分。

4、算法

基础部分

  • 剑指OFFER的各个题目是最多见的,即便不是原题也是题目的变体,由于面试不像笔试,通常不会出特别困难的题目,因此剑指OFFER上小而精的题目就很是适合。建议手刷一遍。PHP的同窗能够参考专栏剑指OFFER
  • 二叉树相关(层次遍历、求深度、求两个节点距离、翻转二叉树、前中后序遍历)
  • 链表相关(插入节点、链表逆置、使用链表进行大数字的加减,双向链表实现队列、寻找链表中的环)
  • 堆(大量数据中寻找最大N个数字几乎每次都会问,还有堆在插入时进行的调整)
  • 排序(八大排序,各自的时间复杂度、排序算法的稳定性。快排几乎每次都问)
  • 二分查找(通常会深刻,如寻找数组总和为K的两个数字)
  • 两个栈实现队列。
  • 图(深度广度优先遍历、单源最短路径、最小生成树)
  • 动态规划问题。

深刻部分

  • 红黑树性质
  • 分治法和动态规划的区别
  • 计算时间复杂度
  • 二叉树和哈希表查找的时间复杂度

具体题目记录

1. 一个文本文件中每一行中有一个URL,最多一万行,统计每个URL的次数,输出到另一个文件中,每一行前面是URL,后面是个数。
2. 单链表的逆序
3. 一个函数实现给定字符串,去除前面和后面的空格,好比“ ab cd ”,最后获得的结果是”ab cd”,不能改变字符串的地址。
4. 对比cookie和session,有一个值错误则不正确
5. 查找10的阶乘后面有几个0
6. 字符串匹配
7. 字符串移位,给出字符串abc##dfg##gh,实现将全部#移至字符串串头。输出####abcdfggh(我的认为能够用后向移位,减小移位次数)
8. 给出一颗二叉树,两个叶节点,找到这两个叶节点互连通的一条最短路径。
9. 两个日期计算天数差
10. 100个有序数组合并
11. 矩阵的最大子矩阵和
12. 给定一棵多叉树,每一个节点有一个编号,如今要对节点排序,要求对于每一个节点,它的父节点排在它后面,若是一棵树有N个节点,那么确定有N-1条边。输入的数据形式为:Map.Entrylinux

5、LINUX

  • 硬连接和软链接区别
  • kill用法,某个进程杀不掉的缘由(进入内核态,忽略kill信号)
  • linux用过的命令
  • 系统管理命令(如查看内存使用、网络状况)
  • 管道的使用 |
  • grep的使用,必定要掌握,每次都会问在文件中查找
  • shell脚本
  • find命令
  • awk使用

6、语言部分(PHP)

  • 数组操做函数
  • 字符串操做函数(数组和字符串的函数是最常问的,很是多,必定不要记混了)
  • 指针和引用区别
  • 堆和栈的区别
  • == ===区别
  • PHP的垃圾回收机制
  • zval结构
  • 防sql注入
  • 跨域问题
  • 长连接和长轮询
  • 面向对象、设计模式
  • 接口和抽象类区别
  • 单继承
  • construct的调用顺序(子类父类之间)
  • 设计模式(工厂模式、策略模式、单例模式、装饰模式比较常见)
  • OOP特性,经过哪些机制实现的
  • 重写和重载区别
  • 静态类静态方法
  • 根据某个需求设计一个类(主要考虑类之间的继承关系和属性的权限设置)

7、项目

  • 项目中遇到的困难(提早想好,而且把实现或者优化方法说清楚)
  • 系统的量级、pv、uv等
  • 应对高并发的解决办法(分布式)
  • 在项目中主要负责了哪些工做。
  • nginx的负载均衡
  • 分布式缓存的一致性,服务器如何扩容(哈希环)
  • 项目中用到了哪些技术
  • 服务器性能如何测试
  • 项目中印象深入的东西
  • 项目中遇到过哪些坑,怎么解决的
  • 项目中为何用redis以及怎么实现相关功能
  • 用过的开源框架(路由问题),框架的原理
  • 消息队列的应用场景(想一个)
  • 有没有用到非关系型数据库
  • 网站负载变大时怎么办
  • SOA?
  • WebService?
  • 《大型网站技术架构:核心原理与案例分析》
  • redis的消息队列 redis的数据类型
  • OAuth认证过程
  • 单点登录系统 分布式缓存的使用场景
  • 一个Controller调用两个Service,这两Service又都分别调用两个Dao,问其中用到了几个数据库链接池的链接?
  • 图片是怎么存储的
  • 分布式一致性协议、分布式锁(应用场景)
  • 项目中的网络编程
  • 划一下项目的架构
  • MVC的路由机制怎么实现的(路由很重要)
  • 为何要用hadoop
  • 本身写的接口如何防止被别人恶意调用?印象笔记
  • 如何实现数据容灾,
  • 怎样实现负载均衡
  • 如何解决单节点负载过
  • Redis和memcache区别
  • redis的持久化

总之要把写在简历上的项目部分熟悉一遍,技术栈、项目功能、难点都要考虑好。nginx

转自:http://blog.csdn.net/acingdreamer/article/details/78479476面试

相关文章
相关标签/搜索