首先,身为双非的大三学生,能收到腾讯的面试邀请,是我的荣幸,4月16号,上午11点17在北京开始初试面试,面试了大约40分钟。问题大致如下。
-
首先,聊了几个轻松的问题
-
介绍项目 有什么困难,怎么解决的
-
hashmap底层实现原理
-
hashmap存储结构怎么样,怎么处理的hash冲突,当查询时,其时间复杂度怎么样
-
说说spring mvc的流程
-
说说线程和进程的区别
-
线程和进程都可以并发吗
-
wait sleep的区别,并说明使用场景,wait sleep都会释放cpu资源吗
-
线程如何产生死锁,介绍一个场景
-
怎么避免死锁的产生
-
用过线程池吗?说说为什么要用线程池?都知道什么线程池?
-
如果让你设计数据库,你会想到那些优化
-
你刚才说了索引,说说索引类型和怎么实现的吧
-
问你一个关于索引的问题一个组合索引,a b c那么 a b c, a c ,a b哪个可以使用该组合索引。
-
一个表有用户id.和用户成绩,怎么找到成绩前10的人。
-
数据库中char和varchar2的区别,和使用场景。
-
看你项目使用了restful请求,简单介绍一下。
-
你做的项目有没有日志系统,类似于登录日志等。是怎么实现的。
-
你的项目都部署在什么服务器上。
-
刚才说你部署在腾讯云上,就是linux了,说一些你常用的linux命令。
-
linux中如何查看一个端口是否被占用,被那个进程占用。
-
http的默认端口是80,怎么将它改为8080端口。
-
linux中vim怎么统计文件的行数。
-
linux中怎么查看内存使用情况和cpu的使用情况。
-
你做项目的时候遇到过那些http状态码,你都是怎么处理的。
-
在项目中用到过设计模式吗?假设一个场景使用工厂模式
-
说说不经过第三个变量,怎么将两个变量交换。
-
说说jvm的gc,gc算法,gc收集器
-
介绍一下redis。这是在你的项目中用到你才学的,还是自己主动了解的。
-
你不在北京,如果在北京实习的话,会不方便吗?
-
你入职的话,可能会让你学一些新的需要,比如c c++ go等语言,对你来说,会有问题吗。
总体来说,因为只是初试,不算难,都答了上来,但也有几处错误。面试官人特别好,特别和蔼,面试过程还是挺轻松的。
在4月17号收到复试面试邀请,在4月18号上午10点开始复试面试,持续了25分钟把,果不其然凉了=.= , 问题如下
-
自我介绍一下
-
介绍一下你的项目。
-
你的项目 部署在几台服务器上。(我说的一台)
-
只有一台服务器的话那你服务器宕机怎么办。(我:。。。。)
-
你的数据库的备份策略是什么(我:项目中就是每半个月在半夜2:00备份一次,,,其次说了一些redis存储一些数据的主从复制,,然后看面试官不怎么满意。。。)
-
项目怎么进行并发控制的,说说具体的例子(我:项目中没用。。。。。然后简单说了说怎么进行并发控制)
-
怎么防止sql注入的(我:预编译语句集、后台正则过滤、filter过滤字符串)
-
说说你的项目怎么保证安全(我:添加权限、传输数据md5加密、对于状态保存使用session加cookie,私密信息存放在session中存放在服务器,其他无关紧要信息村存放在cookie中放在客户端缓存、防止sql注入、接口认证、限制网络类型访问只能在专网vpn访问啥的。。。)
-
你在建设你的数据库的过程中有什么优化
-
画一下你的项目架构图(简单画了画,感觉画的也不怎么地。。。面试官不满意.orz)
-
说说自己的优点
-
说说自己的缺点
-
好了,你话有什么想问我的吗(我的内心戏:噗,这就凉了?!-.-)
在准备复试的时候,准备的还是不怎么全面,一直在准备算法和其他的一些基础,对于项目的一些方面没有准备太多,也可以说没准备(全靠啃那点老本.orz)。在大公司中特别重视你的项目经验,重视你对系统整体架构的了解,对你的项目如果想要上线运行所需要注意哪些问题怎么解决(比如问我的第三个问题。。。。),初试就是问的你的基础,所以在复试中注重的是你的项目经验,你对项目的整体考虑。 我还是太naive...
虽然没有过复试,也收获了好多,面试一次增加一次经验嘛,找到自己的不足,弥补,不断充实自己,接着找,嘿嘿(●—●)。