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

640?wx_fmt=jpeg

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

夏天来啦,又是大家面试的高峰期,本文是Java开发 小熙(妹子) 的面试分享,已经入职阿里。


为何要面试?

过完年回来公司的项目很闲,很多人觉得没意思陆续跳槽走了,我也考虑到自己的发展,从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: 

  12. 一个比较牛逼的coding challenge网站: 

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.较强的学习能力和逻辑思维能力

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

劣势: 

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

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

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

学习方式

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

1.看面试题 

2.对问题深入理解 

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

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

4.网上做题和刷题

5.总结记录 

投简历、约面试环节

1.投简历渠道

2.简历不要海投 

3.投简历没下文

4.一天约几家面试合适? 

5.是否该裸辞? 

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

6.注意事项 

面试现场

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

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

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


 2.面试1-5面总结 

1)让你自我介绍 

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

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

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

的 

8)问期望待遇

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

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的区别。 

重载和重写的区别。 

栈和队列。 

 try、catch、finally都有return语句时执行哪个。 

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.大公司可以走猎头渠道,谈待遇靠谱一点。


之前大蕉看到这篇文章就觉得干货满满,一直想着分享给想要积极准备去大厂 Java 面试的同学,跟号主运营团队沟通了很多次终于同意我转载了。这篇文是开发者技术前线的文章,公众号号是美团技术人维护的, 开发者技术前线,汇集技术前线快讯和关注行业趋势,大厂干货 ,Java技术和 Python 技术,专注开发者经历和成长,是程序员成长的优秀指南。助力10W开发者成长。热烈推荐大家也可以关注一下。



开发者技术前线
640?


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值