前两天,参加了搜狗实习的面试。因为实习是一时的想法,没有做太多准备。第一天投简历,第二天就面试了。搜狗营销事业部的董先生面试的,总体来说表示的十分不好,好多地方都欠缺。特此把面试中的问题记录下来,留作后续复习使用。
设计模式选择你熟悉的设计模式,画出UML图。(策略模式、装饰者模式、门面模式等)
你在项目中使用到了什么设计模式,为什么使用?
数据库如果要设计一个分布式数据库,你会怎么设计,需要考虑什么。
分布式事务的实现方式。
数据库的隔离级别。
数据库加索引的时候,采用的什么数据结构。如果使用Like进行查询,使不使用索引。
Java异常异常有那几大类,ClassNotFound属于哪一类,这些异常有什么区别。
在项目中构建的业务逻辑异常,采用的运行时异常还是检查异常。
Java并发synchronized关键字加在一个静态方法上时,加锁的对象是什么。
线程的状态转换图,wait和sleep的区别。
synchronized实现的工作原理是什么。
什么是Java Monitor的概念,主要作用是什么。
生产者和消费者模型,伪代码实现。
Java容器HashMap的数据结构是什么,怎么实现O(1)的复杂度。
HashTable、HashMap和ConcurrentHashMap的数据结构实现。
ConcurrentHashMap的get,put和size方法的加锁的步骤和方法。
项目全国高考录取系统的架构图,你开发的模块要点。
如果程序有性能上的问题,调优的思路是什么。
Java资源占用比较多,使用什么工具去查看资源占用情况。
算法26进制数的转换,27->AA
总结原来看过的书,例如设计模式、Java并发编程没有时常复习,现在一时想不起来。
学习的课程,分布式数据库、大数据平台技术还是有些用处,需要整理和复习。
Java的基础知识还是牢固,需要经常总结复习。
在项目上的问题,需要更深一步思考。
面试后,设计了一个自己的技术学习路线,主要从三个层次:
Java基础知识:设计模式,Java 容器,Java 异常,Java 并发等。学习完成后,完成一个小型项目的练习与开发。
Java进阶:Jvm 相关知识,Java 网络编程,Java RPC,Java 网络架构,CDN,Spring,Memcache等系统的架构了解。
大数据架构:分布式数据库,分布式集群管理,大数据处理平台。
这次面试后,对自己触动很大。就想在大三去找的腾讯实习面试一样,打击后,毅然决然的选择了保研道路,并取得了很好的结果。但这次,已经是退无可退,迫切需要自己在技术方面做全面的提升。