知识点

PHP编程:变量、常量、字符串、数组、控制结构、数据库、类、继承、多态、Cookie、Session

MYSQL命令:INSERT、UPDATE、DELETE、SELECT、GROUP、COUNT、JOIN、索引

前端框架:jquery 、css 、bootstrap或者foundation     VUE    node.js  angularjs

PHP扩展:学会安装和加载,更高是了解扩展的结构并实现一个简单扩展

Web安全:SQL注入、验证码、刷新提交、漏洞扫描、DOS攻击、跨域攻击、XSS 这些都要了解下,并学会基本的防御手段

SQL:基础(增删改查),有能力写高效语句优化数据库、分库分表的策略、主从架构,最后需要了解索引的原理

MVC模式:可以自己实现一个简单的MVC框架

Linux的知识要求:常用命令、软件安装目录、查看CPU、内存使用情况等

版本控制:SVN  、GIT (github)

缓存:主流的有Memcache 和Redis,前端使用CDN

大流量:最大请求量是千万级别的(每天)(分布式,负载均衡)

 高并发:秒杀活动,常用的解决方案

  • 登录、注册 模块
  • 上传模块
  • 图像验证码模块
  • 手机验证码模块
  • 支付系统
  • 订单系统
  • 统计模块
  • 级联刷选
  • 微信公众号开发(最好是认证的服务号)
  • 商城库存并发控制

最重要的是思路

 

如何保证订单重复提交的问题(当发生网络延迟等情况)

lz:楼主只回答了前端校验和后端校验具体其他操作不是很清楚,下面答案引用自百度百科只列举几个经典的(力争为园友提交较可信的答案)

  更详细的答案可以参考:http://www.bkjia.com/jingyan/471187.html

  1:在前端进行校验,当表单提交后,把提交按钮置灰

  2:表单提交后进行页面重定向,转到处理结果页面。

  3:在session中存放一个标识符(当表单数据被请求时,在session中生成一个标识符放在表单隐藏域中,当后端处理表单数据时,检查标识符是否存在,如果存在则表明第一次提交并从session中清除标识,如果不存在则表明重复提交)

  4:在数据中添加约束

5.防止订单重复支付问题

lz:我们公司的支付都是跳到微信或支付宝的(--把此问题抛给了腾讯和阿里);但是我们自己应该也能想到一种解决方法:就是同一笔订单我们可以设置它的支付状态。

  更详细的答案可参考:https://www.jianshu.com/p/530228b71888

MySQL索引

lz:主键索引、唯一索引、普通索引、组合索引

具体请参考:https://blog.csdn.net/goodsave/article/details/78018174

再抛个问题:假如表中建立了一个组合索引(name、city、age)当查询时采用city、age时索引生不生效?

数据库执行计划

具体一些细节就是怎么优化sql、还有查看sql语句性能,当然就是采用执行计划(explain)的方式了。

具体可参考:https://blog.csdn.net/wangpeng047/article/details/12849331

 

基础知识:

   1.算法和数据结构

   2.数组、链表、二叉树、队列、栈的各种操作(性能、场景)

   3.二分查找和各种变种的二分查找

 4.各类排序算法以及复杂度分析(快排、归并、堆)

 5.各类算法题(手写)

 6.理解并可以分析时间和空间复杂度

 7.动态规划

 8.红黑树、AVL树、Hash树、Tire树、B树、B+树

 9.图算法(比较少、也就是两个最短路径算法理解)

 10.计算机网络

 11.OSI 7 层模型(TCP 4层)等

数据库

 1.数据库(mysql、redis)

 2.索引(分类及优化方式、失效条件、底层结构)

 3.sql语法(join、union、子查询、having、group by)

 4.引擎对比(InnoDB、myisam)

 5.数据库的锁(行锁、表锁、页级锁、意向锁、读锁、写锁、悲观锁、乐观锁、加锁的select sql 方式)

 6.隔离级别、依次解决的问题(脏读、不可重复读、幻读)

 7.事务的ACID

 8.B树、B+树

 9.优化(explain 、慢查询、show profile)

 10.数据库的范式

 11.分库分表、主从复制、读写分离

 12.Nosql 相关(redis和memcached 区别之类的,还有。。。。)

操作系统:

 1.进程通信IPC(几种方式),与线程区别

 2.OS的几种策略(页面置换、进程调度等,每个里面有几种算法)

 3.互斥与死锁相关的

 4.linux 常用命令(某个场景)

 5.Linux 内核相关(select、poll、epoll)

编程语言:

  1.基础(面向对象、四个特性、重载重写、static 和final等等很多东西)

  2.设计模式

  3.负载均衡(原理、cdn、一致性hash)

  4.框架(框架理论)

  5.消息队列

  6.分布式存储系统

  7.分布式事务、分布式锁

 

让我们来看一个简单的分支新建与分支合并的例子,实际工作中你可能会用到类似的工作流。 你将经历如下步骤:

  1. 开发某个网站。

  2. 为实现某个新的需求,创建一个分支。

  3. 在这个分支上开展工作。

正在此时,你突然接到一个电话说有个很严重的问题需要紧急修补。 你将按照如下方式来处理:

  1. 切换到你的线上分支(production branch)。

  2. 为这个紧急任务新建一个分支,并在其中修复它。

  3. 在测试通过之后,切换回线上分支,然后合并这个修补分支,最后将改动推送到线上分支。

  4. 切换回你最初工作的分支上,继续工作。

https://git-scm.com/book/zh/v2/Git-%E5%88%86%E6%94%AF-%E5%88%86%E6%94%AF%E7%9A%84%E6%96%B0%E5%BB%BA%E4%B8%8E%E5%90%88%E5%B9%B6

 

沟通、逻辑思维、面试的积极性和主动性、简历的优化

  1.沟通和逻辑能力

  一个问题的表达方式,逻辑思维(发言层次感),沟通的层次感,善于短时间突出重点

  2.面试的积极性和主动性

  主动性的人更加擅长于克服当前的困难,并把事情做好,在遇到挫折后,更容易调整好心态,且积极去推进项目。

   简历重点是 自我介绍、擅长技能、项目经验  。 自我介绍要做到一句话能表述清楚自己的优势,比如 学习能力、个人履历  积极努力(个人推动什么项目)

  擅长技能:专业技能的描述词汇 精通  熟练 熟悉 了解。精通感觉一般还是不要写,除非你在某个技术点上真的有足够的把握,真正能做到精通伊恩语言、一个分布式框架这才是精通。熟悉、熟练居多。

  项目经验:突出自己的王牌项目,最有技术含量,挑战和帮助最大一个项目讲究足够了,面试的过程中面试官也会重点让你描述这个擅长的项目,提前模拟这个项目的讲解顺序和重点,而不是临场讲解。

  做一个靠谱且有责任心的人。

 

posted @ 2018-07-31 15:18  玲汐  阅读(140)  评论(0编辑  收藏  举报