前言
本文收录的面试题包括MySQL、Redis、MongoDB、数据结构、系统编程、网络编程、编程题等相关内容。
一. MySQL
- 事务
- 数据库索引
- 乐观锁和悲观锁
- MVCC
- MyISAM和InnoDB
- 主键 超键 候选键 外键
- 视图的作用,视图可以更改么?
- drop,delete与truncate的区别
- 索引的工作原理及其种类
- 连接的种类
- 数据库优化的思路
- 存储过程与触发器的区别
- 悲观锁和乐观锁是什么?
- 你常用的mysql引擎有哪些?各引擎间有什么区别?
二. Redis
- Redis是什么?
- Redis缺点
- Redis宕机怎么解决?
- Redis和Mecached的区别,以及使用场景
- Redis集群方案该怎么做?都有哪些方案?
- Redis回收进程是如何工作的
三. MongoDB
- MongoDB中对多条记录做更新操作命令是什么?
- MongoDB如何才会拓展到多个shard里?
四. 数据结构
- 数组中出现次数超过一半的数字-Python版
- 求100以内的质数
- 无重复字符的最长子串-Python实现
- 通过2个5/6升得水壶从池塘得到3升水
- 什么是MD5加密,有什么特点?
- 什么是对称加密和非对称加密
- 冒泡排序的思想?
- 快速排序的思想?
- 如何判断单向链表中是否有环?
- 你知道哪些排序算法(一般是通过问题考算法)
- 斐波那契数列
- 如何翻转一个单链表?
- 青蛙跳台阶问题
- 两数之和 Two Sum
- 搜索旋转排序数组 Search in Rotated Sorted Array
- 写一个二分查找
- set 用 in 时间复杂度是多少,为什么?
- 列表中有n个正整数范围在[0,1000],进行排序;
- 面向对象编程中有组合和继承的方法实现新的类
五. 系统编程
- select,poll和epoll
- 调度算法
- 死锁
- 程序编译与链接
- 静态链接和动态链接
- 虚拟内存技术
- 分页和分段
- 页面置换算法
- 边沿触发和水平触发
- unix进程间通信方式(IPC)
- 进程总结
- Java异步使用场景有那些?
- 多线程共同操作同一个数据互斥锁同步?
- 什么是多线程竞争?
- 请介绍一下Java的线程同步?
- 解释以下什么是锁,有哪几种锁?
- 什么是死锁?
- 多线程交互访问数据,如果访问到了就不访问了?
- 什么是线程安全,什么是互斥锁?
- 说说下面几个概念:同步,异步,阻塞,非阻塞?
- 什么是僵尸进程和孤儿进程?怎么避免僵尸进程?
- Java中进程与线程的使用场景?
- 线程是并发还是并行,进程是并发还是并行?
- 并行(parallel)和并发(concurrency)?
- IO密集型和CPU密集型区别?
- python asyncio的原理?
- 谈谈你对多进程,多线程,以及协程的理解,项目是否用?
六. 网络编程
- 三次握手和四次挥手
- ARP协议
- urllib和urllib2的区别
- Post和Get
- Cookie和Session
- apache和nginx的区别
- 网站用户密码保存
- HTTP和HTTPS
- CSRF和XSS
- 幂等 Idempotence
- RESTful架构(SOAP,RPC)
- SOAP
- RPC
- CGI和WSGI
- 中间人攻击
- c10k问题
- socket
- 浏览器缓存
- HTTP1.0和HTTP1.1
- Ajax
- 怎么实现强行关闭客户端和服务器之间的连接?
- 简述TCP和UDP的区别以及优缺点?
- 简述浏览器通过WSGI请求动态资源的过程?
- 描述用浏览器访问
www.baidu.com
的过程 - 列出你知道的HTTP协议的状态码,说出表示什么意思?
- 说一下什么是tcp的2MSL?
- 为什么客户端在TIME-WAIT状态必须等待2MSL的时间?
- 谈一下HTTP协议以及协议头部中表示数据类型的字段?
- 使用Socket套接字需要传入哪些参数 ?
- HTTP常见请求头?
- 七层模型?
- url的形式?
七. 编程题
- 台阶问题/斐波那契:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
- 变态台阶问题:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
- 矩形覆盖:我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
- 杨氏矩阵查找:在一个m行n列二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
- 去除列表中的重复元素
- 链表成对调换
- 创建字典的方法
- 合并两个有序列表
- 交叉链表求交点
- 二分查找
- 快排
- 找零问题
- 广度遍历和深度遍历二叉树
- 二叉树节点
- 层次遍历
- 深度遍历
- 前中后序遍历
- 求最大树深
- 求两棵树是否相同
- 前序中序求后序
- 单链表逆置
- 两个字符串是否是变位词
- 动态规划问题
小编已经把以上涉及问题总结成了面试专题文档,有需要的朋友 点此即可获取