这是A同学对B同学之间的一场技术面试,整个过程大概2个半小时,期间基本是一问一答的形式;面试涉及内容之广,故记录于此,以备他日面试他人之用。

基本技能篇

  1. 最早接触的Ruby版本,使用过的最新Ruby版本; Ruby2.x有哪些新特性,平时使用了这些新特性?
  2. Ruby中一般使用的是进程还是线程,具体是什么技术,这种技术的好处和坏处?
  3. 使用过最早的Rails版本,最新4.x版本有无使用,与3.x有哪些大的改变?
  4. Rails中有哪些可以作为单独的Gem使用的模块?
  5. Rails Model中哪些属于ActiveModel,哪些属于ActiveRecord ?
  6. 模型中共享的代码代码一般放在哪里?
  7. models和lib哪些是autoloaded?
  8. 项目中css是怎么组织的?
  9. 假如有一段css只有一个页面用到,而不想全局引入,该如何处理?
  10. 响应式设计的原理,大概写法?
  11. 数据库表中有个字段叫attribute,如何在不修改表结构的情况下,正常使用ActiveRecord?
  12. Rails中Base Transactions 和 Instance Transactions的区别?
  13. 队列用的什么?
  14. 缓存用的什么? Rails默认缓存是什么,工作原理,和其他缓存的优劣?
  15. Delay Jobs用的什么技术,定时任务怎么处理?
  16. Application Server用的是什么,为什么选择,平时有无当机情况,怎么处理?
  17. 平时写测试不?用的什么技术,什么时候改写测试,什么时候可以不写?
  18. 部署工具用的什么?
  19. 数据库用过哪些?PostgreSQL有哪些特性,是否在项目中使用?
  20. 是否做过Api对接,选用的什么技术?
  21. 想对iphone和android返回不同的结果,该怎么处理,直接在代码中写if/else之类的判断是否可取?
  22. 开发过程中遇到bug,你的一般解决问题流程是?

基础安全篇

  1. 对称加密和非对称加密有什么不同?
  2. 平时我们说的64位加密和128位加密,那个位指的是什么?
  3. 假如用户在网页上分享一个链接给特定的人,并且只有该特定人才能访问,该如何处理?
  4. 如何设计一个找回密码的功能?
  5. 如何避免用户靠多次/频繁修改token,从而测试出正确的token?
  6. Api设计中如何保证请求是合法的,数据是可靠的?
  7. Rails开发中常见的安全问题有哪些?
  8. 腾讯邮箱会在用户不知道的情况下,将用户邮件内容中的链接全部点击一遍(网络机器人),那么区分出是腾讯机器人的请求,如何block?
  9. OAuth 2.0的基本原理,如何自己设计一个OAuth 2.0认证系统?
  10. 使用过哪些第三方的OAuth 2.0认证服务?

基础网络篇

  1. UDP和TCP有什么区别?
  2. TCP的会话过程?
  3. 打开一个https的页面,除了第一步域名解析,那下一步是什么?
  4. TCP发包和接受包,哪个是顺序的?
  5. 假如你网站特别慢,你该如何排查原因?过程是怎样?
  6. 无线wifi分为哪些类?
  7. 路由器和集线器有什么区别?
  8. 192.168.0.20中的20什么意思,那16呢?

基础Linux篇

  1. 当输入free命令后,出现的buffers指的是什么?Swap又指什么,Swap有什么作用,一般在哪个目录?
  2. 假如我有部分命令需要开机启动,但是需要sudo,如何针对部分命令,配置sudo不需要密码?
  3. ssh如何无密码登录?
  4. 一个项目有多个子项目组成,如何使用git来管理?

基础项目/架构篇

  1. 如何设计一个电商系统,大概有哪几张表?
  2. 订单表和哪些关联?
  3. 退款记录只与哪个有关?
  4. 购物车为什么要单独一张表,是否可以和订单表合并,如果合并,那么如何区分是订单还是购物车?
  5. 多种优惠卷的设计?

基础职场篇

  1. 假如你的一个同事技术又不好,又喜欢唠叨,又偷懒不干活,你会怎么办?会给他指出? 给其他同事说? 给老板说吗?
  2. 如果有人反对你的设计,而且围住你办公室,叫你出去,你会选择出门吗?
  3. 假如项目deadline块到了,但是发现还有不少功能还没完成,你会怎么办?
  4. 你认为5k,10k,15,20k的人有什么区别,你觉得你是属于哪一类?
  5. 你喜欢将代码最快发布,抢占市场,还是将功能做到perfact后再发布?
  6. 你觉得远程办公有什么好处和不好的地方,你喜欢远程办公吗?

生活习惯篇

  1. 平时晚上几点睡觉,早上几点起床?
  2. 一般下班都喜欢做什么?
  3. 过去一年你觉得你做的最酷的事情是什么?
  4. 用过哪些数码产品,你最喜欢哪个?
  5. mac上的软件你有在使用哪些?你觉得他们有什么值得提高的?
  6. 你有为国外的软件或服务付费吗?
  7. 喜欢开源吗?阅读过哪些开源项目,你觉得他们写的好吗?好在哪里?

xxxxx 省略部分未记住的问题?

总结: 我们平时可以不妨了解一些面试题目,即有助于了解自身实力,也可以认识一些不错的朋友!