面试阿里,面试官问我有没有男朋友?

点击上方“开发者技术前线”,选择“星标”

13:11 在看 真爱

作者:  小熙  | 责编: 可可   来源 : 开发者技术前线 


640?wx_fmt=jpeg


刚好五一前后,又是大家 面试的高峰期,本文是Java开发 小熙(妹子) 的面试分享。之前有分享过很多面试:拿到蚂蚁金服 offer,  我不去了身为技术专家的我,面试居然还要靠刷题?刷了一个月算法,薪资终于Double了 等。


为何要面试?

过完年回来 公司的项目很闲,很多人觉得没意思陆续跳槽走了,我也考虑到自己的发展,从3月底开始面,面到4月底,面了三十家公司,虽很累,但我从不打没准备的仗, 我是一个喜欢总结经验的人,每经过一场面试,我都会拿个本子记录下来,哪些问题是自己之前没遇到过的,或者哪些问题是新遇到的。 通过一段时间的备战,面试,拿了几家offer ,最好的是头条和阿里,最终我入职了阿里。但让我记得深刻的是阿里面试官问我有没有男朋友。


 准备阶段

算法

  1. leetcodehttp://leetcode.com/

  2. careeruphttp://www.careercup.com/http://hawstein.com/posts/ctci-solutions-contents.html

  3. glassdoorhttp://www.glassdoor.com/index.htm

  4. topcoderhttp://www.topcoder.com/

  5. zojhttp://acm.zju.edu.cn/onlinejudge/

  6. july的博客http://blog.csdn.net/v_july_v/article/details/6543438

  7. mitbbshttp://www.mitbbs.com/bbsdoc/JobHunting.html

  8. pojhttp://poj.org/

  9. 杭电acmhttp://acm.hdu.edu.cn/

  10. codeforceshttp://codeforces.com/

  11. 复杂数据结构的讲解及实现GeeksForGeeks: 
    http://www.geeksforgeeks.org/

  12. 一个比较牛逼的coding challenge网站: 
    https://www.hackerrank.com/


Java基础

        面向对象的特征:继承、封装和多态

        int 和 Integer 有什么区别;Integer的值缓存范围

        说说反射的用途及实现

        Http 请求的 GET 和 POST 方式的区别

        MVC设计思想

        什么是Java序列化和反序列化;如何实现Java序列化;或者请描述


Serializable接口的作用

        重载和重写的区别


进程和线程

        线程和进程的概念

        并行和并发的概念

        创建线程的方式及实现

        进程间通信的方式

        说说 CountDownLatch、CyclicBarrier 原理和区别

        说说 Semaphore 原理

        说说 Exchanger 原理

        ThreadLocal 原理分析;ThreadLocal为什么会出现OOM,出现的深


层次原理

        讲讲线程池的实现原理

        线程池的几种实现方式 

        线程的生命周期;状态是如何转移的


锁机制

        什么是线程安全?如何保证线程安全?

        重入锁的概念;重入锁为什么可以防止死锁?

        产生死锁的四个条件

        如何检查死锁

        volatile 实现原理

        synchronized 实现原理(对象监视器)

        synchronized 与 lock 的区别

        AQS 同步队列

        CAS 无锁的概念;乐观锁和悲观锁

        常见的原子操作类

        什么是 ABA 问题;出现 ABA 问题 JDK 是如何解决的

        乐观锁的业务场景及实现方式

        Java 8 并发包下常见的并发类

        偏向锁、轻量级锁、重量级锁、自旋锁的概念


数据库

        DDL、DML、DCL 分别指什么

        explain 命令

        脏读、幻读、不可重复读

        事务的隔离级别

        数据库的几大范式

        说说分库与分表设计

        分库与分表带来的分布式困境与对应之策

        说说 SQL 优化之道

        存储引擎的 InnoDB 与 MyISAM 区别、优缺点、使用场景

        索引类别(B+树索引、全文索引、哈希索引);索引的区别

        什么是自适应哈希索引(AHI)

        为什么要用 B+tree 作为 MySql 索引的数据结构

        聚集索引与非聚集索引的区别

        limit 20000 加载很慢怎么解决

        常见的几种分布式 ID 的设计方案


  JVM

        JVM 运行时内存区域划分

        常见的 GC 回收算法及其含义

        常见的 JVM 性能监控和故障处理工具类

        JVM 性能调优

        类加载器、双亲委派模型

        类加载的过程

        强引用、软引用、弱引用、虚引用

        Java 内存模型 JMM


在对上面的内容做了准备后,我开始投简历面试,先从小公司开始面,小公司一般 1-2面技术,大公司 3-5 轮技术,一般都是一面基础,二面进阶,三面优化和场景,四面问规划,五面hr.


自我评估

面试自我介绍

本人没太多的优点,双非本科,只不过大学学的数学专业,逻辑还行,英语水平一般。


优势:

1 大学拿过奥数三等奖,ACM 大赛二等奖,当年的优秀大学生。

2 良好的沟通交流能力

3.较强的学习能力和逻辑思维能力

简历写上,自我评价潜力好!此处有装逼的嫌疑。


劣势: 
1. 16年毕业,经验不多,非常尴尬,上不上,下不下的情况。

2.毕业于双非本科,只要是本科就基本没问题,但有的公司要985.211的,并且还要30岁以内的。

3.前一家公司是传统行业,加入项目组时,项目稳定,每天就是有bug就修复,优化一下,其他时间就是学习的,聊骚各干各的,工作2年多跟在养老一样,每天都是 用一句话说就是编程5分钟,扯淡2小时,项目经验严重不足,很怕开发很难的需求。


这一点是最伤的,很多公司看项目经历,结果你告诉面试官我写的需求都是垃圾。 


学习方式

我自己情况,项目和学历肯定无法加分的。我自己对此也有清晰的认识,因此我在平时抓紧空闲时间学习和复习技术点。

1.看面试题 
正常人第一步肯定都会看面试题,我也不例外,在看的过程中,我发现有些文章写的不错,对我帮助不小值得推荐 。

2.对问题深入理解 
在看面试题的过程,你会遇到一些自己没接触过的或者以前没深入学习过的知识,例如最常问的HashMap内部实现原理,这就促使你得开始去看jdk的源码或者是学习一些新的东西。看源码是很重要的一步,起步很难,但是会让你收益良多。

3.熟悉项目的代码和需求

把项目中不错的需求拿出来,看会,代码熟悉好,将整个功能的流程和涉及的东西吃透。项目是面试中必问的环节,一般是以一个功能点为基础展开问,因此你必须对这个功能有很深的认识,不能有模糊的地方。如果有时间,能把涉及到的知识点也搞懂最好。 


4.网上做题和刷题
头条会远程面试, 一般会做题。建议去本文开头的一些刷题网站多做些题目。

5.总结记录 
把自己每天学到的内容记录下来,可以让自己更有动力的复习,技术是一个枯燥的过程,你必须让自己时刻保持有动力。 


投简历、约面试环节

1.投简历渠道
BOSS直聘、猎聘网。拉钩等(一般不靠谱),找靠谱猎头也行。


2.简历不要海投 
为两个情况。 
1)没有社招面试经验:建议采取海投的方式,只要职位要求跟自己比较匹配都可以投,累计面试经验。


2)社招面试经验已经足够:投那些职位匹配、公司满意的职位。公司评价可以去看准网,企业查等。


3.投简历没下文
简历确实亮点不多,学历不好,项目不行,容易被HR给刷掉,因此他们看得最直接的就是你上家的公司和你毕业的学校,如果你不是从牛逼的公司/学校出来,可能会碰到和我一样的情况,应对的办法就是多投。


4.一天约几家面试合适? 
最理想的情况为2家面试,上午一般在10点左右,下午一般在2点左右。建议把理想的公司放下午,因为下午的时间比较充足,可以让公司更充分的了解你。我开始面的时候,每次都是上午面的不好,下午面的不错。 


5.是否该裸辞? 
我一开始是边上班边投,然后利用调休时间,或者请假去面试。后来,面试机会越来越多,请假太频繁了,自己都不好意思了,并且自己也已经有足够的信心,这个时候我选择了裸辞。


裸辞还有一个原因是,在面试过程中你会发现,遇到公司要人紧急的,如果你的入职流程过长可能错过这个公司。 


6.注意事项 
1)千万别迟到。 
2)做好特殊情况处理,带简历、充电宝、纸巾、伞。 


面试现场


1 笔试常见的问题 
面试常见的问题上面给的面试题链接基本都有。

1 手写代码:手写代码一般考单例、排序、线程、消费者生产者 排序。

2 写SQL很常考察group by、内连接和外连接


 2.面试1-5面总结 


1)让你自我介绍 

2)做两道算法题(刷题必中)
3)问Java基础知识 

4)java 高级进阶就是我准备的那些
4)问项目中指责和做了什么
5)业务情景问题,例如:你的一个功能上了生产环境后,服务器压力骤增,该怎么排查。 

6)对职业的规划
7)你有什么想问面试官

的 

8)问期望待遇


      3.常问的知识要点
      1)集合相关问题(必问): 

2)线程相关问题(必问):  

3)JVM相关问题(必问):

4)设计模式相关问题(必问): 

5)数据库相关问题,针对Mysql(必问): 

6)主流框架相关问题:  
Spring的设计模式。 
Spring中AOP。 
Spring注入bean的方式。 
什么是IOC,什么是依赖注入。 
Spring是单例还是多例,怎么修改。 
Spring事务隔离级别和传播性。 
介绍下Mybatis/Hibernate的缓存机制。 
Mybatis的mapper文件中#和$的区别。 
Mybatis的mapper文件中resultType和resultMap的区别。 

Hibernate和Mybatis的区别。 
Spring MVC和Struts2的区别。

Mybatis中DAO层接口没有写实现类,Mapper中的方法和DAO接口方法是怎么绑定到一起的,其内部是怎么实现的。 


7)其他遇到问题: 

介绍下B树、二叉树。 

IO和NIO的区别。 

重载和重写的区别。 

栈和队列。 
接口和抽象类的区别。 
int和Integer的自动拆箱/装箱相关问题。 常量池相关问题。 
==和equals的区别。 
String和StringBuilder、StringBuffer的区别。 
静态变量、实例变量、局部变量线程安全吗,为什么。

 try、catch、finally都有return语句时执行哪个。 
分布式锁的实现。 
分布式session存储解决方案。 
常用的linux命令。 


Offer 流程

面试通过当然还有一些后续的环节

1)提交工资流水(大点的公司),学历,学位照片。

2)定薪

3)体检通知

4)背调 发offer。

5)入职材料 选择入职日期。


一些经验


1 .千万别裸辞,别裸辞,别裸辞 我同事裸辞了,2个月了到现在还没找到工作。

2.先投一些普通的小公司,等面出感觉了再去面大公司。 
3.自己不会的技术简历不要写 

4.很多公司压待遇,期望待遇适当提高。 

5.不要去实习期6个月还打8折的公司,除非你没有其他选择了,否则不要去。

6.不要去参加很多大大小小的招聘会,纯粹是浪费时间。 
7.把面试当作一次技术的交流,不要太在意是否能被录取。 就当学习。

8.公司一般面完就决定是否录取了,让你回去等消息这种情况一般没戏,感觉良好也没用。
9.地方远的尽量通过电话面试,不然白跑。 
10.面试冲刺阶段,要保持每天学习,无论是学习新东西还是复习旧东西。 
11.无论好的坏的公司,先拿到offer再说,最后看看自己这个公司自己是否值得去。
12.通过面试体验和面试官的风格 可以大概判断入职团队的情况。 
13.拉勾投的简历很多会被筛掉,但是拉勾还是面试机会的最主要来源。 
13.理想的公司可以多投几次,不同部门要求不一样。
14.问到自己有深入研究过的知识,抓住机会好好表现,吹是必须的,不要轻易错过吹得机会。 

15.大公司可以走猎头渠道,谈待遇靠谱一点。

END

开发者技术前线 ,汇集技术前线快讯和关注行业趋势,大厂干货,是开发者经历和成长的优秀指南。

历史阅读


拿到蚂蚁金服 offer,  我不去了

身为技术专家的我,面试居然还要靠刷题?

Kotlin 新版来了,支持跨平台!

640? 640?wx_fmt=gif 640?wx_fmt=png 喜欢就点个好看吧 640?wx_fmt=gif
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值