外包面试之旅( 二 )

三、奥萨医药(甲方,面试了35分钟左右)看到一个小姐姐,问路,好漂亮
进去之后,填资料,填完资料,就问问题

  1. MySQL 的常用引擎,区别(InnoDB:支持事务,外键,行锁,支持崩溃后恢复,面试官还问为什么能恢复 。Myisam: 表锁,全文索引)
  2. sql 有哪些优化,常用索引(查询哪些字段,不要用*, null, like后面的"% 等等)
  3. sql 语句执行的过程是怎么样的?怎么分析 explain
  4. 假如有 100w 数据,我想要第 60 万行之后的数据,怎么优化(用limit,加索引,面试官太变态了,问加了这些还很慢,怎么办)
  5. redis 是什么,为什么比 mongodb 热门?(非关系型数据库,基于内存等等,为什么热门,这个我就说不知道了,因为不知道 mongodb)
  6. 什么是非关系型数据库,与关系型数据库的区别?(没回答好)
  7. 除了基于内存,读取速度快,还有哪些原因让 redis 快?(没回答好)
  8. 常用的数据类型,应用场景(String,List,Set,Zset,Hash,面试官还问为什么,额,简直是抽丝剥茧呢)
  9. 持久化机制,rdb 和 aof 的区别,你会怎么选择哪种机制(全量和增量,备份时间长短,数据安全等等,现在有混合机制)
  10. 淘汰策略有哪些(答到过期策略那里去了,面试官提醒了)
  1. redis 为什么可以对 String 进行自增自减运算(这个不知道)
  2. redis 怎么进行优化?(不知道)
  3. java 常用的集合有哪些?(list,set,map,实现类)
  4. arrayList 和 linkedList 的区别(数据结构,读取和增删速度,线程安全copyonwriteArrayList)
  5. 我想要插入几十万数据到 arrayList,有什么优化方法?(这个还真的不知道了)
  6. hashmap 底层结构,put的过程?为什么要加红黑数?结构全部用红黑树可以吗?(数组+链表+红黑树,根据 key 计算 hash,根据 hash 计算下标,下标为 null 就赋值,不为 null,就遍历判断 hashcode 相等等等,1.7用头插,1.8用尾插,加红黑树是稳定,效率 。数组查询时间复杂度o(1),链表增删时间复制度o(1),红黑树o(log n),效率没有前面两者高,所以,不能全部用红黑树)
  7. concurrenthashmap 的结构(1.7分段锁,1.8cas+synchronize)
  8. synchronized和 lock 的区别
  9. hashtable 和 concurrenthashmap 的区别(结构不同,hashtable是锁整个对象和方法)
  10. 有哪些 java 的锁?实现类?cas 是什么?aqs 是什么?(乐观悲观,公平非公平,只说了 ReentrantLock,面试官接着问还有呢?cas,乐观锁的实现,会造成 aba 问题,加版本号或者时间戳 。aqs 是锁框架)
  1. 线程池怎么使用,常用的参数?(使用 ThreadPoolExcutor,核心线程数,最大线程数,时间,队列,线程工厂,拒绝策略)
  2. 假如有 50 个任务去执行,5 个核心线程,10 个最大线程数,10 个任务队列,流程是怎么样的,状态是怎么样的?多余的任务是怎么用拒绝策略的(创建 5 个核心线程,10 个放队列,队列满了,再创建 10 个非核心线程,剩余 25 个根据拒绝策略来决定,默认报异常,其余三种:要么忽略,要么放弃最早的线程,要么用该线程去执行)(后来才知道回答错了,10 个最大线程数,5个核心 + 5个非核心,剩下的 30 个走拒绝策略)
面试官给我的评价:面试的都能答出来,这一点很不错,但了解的不深,虽然工作上用不到,但是面试就是这样造火箭的 。面试不会差,但也不优秀,处于待定状态 。
四、金蝶软件(甲方,面试了40分钟)
  1. 问的项目问题比较多,怎么设计功能的,数据库是怎么设计的
  2. 左连接,右连接,内连接的区别
  3. mysql 执行计划,有哪些看的
  4. springmvc 执行过程,从前端到后台,再返回前端的过程
  5. 权限验证,验权怎么做
  6. 数据库的锁(乐观锁,悲观锁,独占锁,共享锁)
  7. select, update, delete 对应哪些锁
  8. java 集合体系(list,set,map)
  9. arraylist 删除元素有哪些注意的地方
  10. arraylist 是线程安全的吗(不是,线程安全:vector,copyonwritearraylist)

外包面试之旅

文章插图
 
  1. 什么时候用 arraylist,linkedList(频繁增删用 linkedList)
  2. 深拷贝和浅拷贝
  3. 值传递和引用传递
  4. 多线程,线程池
  5. 资源同步是怎么做的?
  6. synchronized 可以修饰静态类吗
  7. lock 和 synchronized 的区别?用的话,你会怎么选
  8. 平时怎么学习的(看教程,看博客)


    推荐阅读