算算自己大概面试了近十家公司,也拿到了几个Offer,现在面试告一段落,简单总结下面试经验。

我现在主要的方向是Java服务端开发,把遇到的问题和大家分享一下,也谈谈关于技术人员如何有方向的提高自己,做到有的放矢。

百度 百度面了两次,分别是百度糯米和金融事业部,百度目前只有这两个部门的招聘岗位和我比较匹配。面试都在西二旗的百度新总部,园区还在施工,离地铁也比较远,需要打车过去。

面试官自带电脑,整个面试过程都在记录,首先详细询问了最近一份工作项目的架构和工作内容,面试主要围绕工作中用到的组件和中间件技术来扩展,考察掌握程度。

MySQL InnoDB存储的文件结构

索引树是如何维护的?

数据库自增主键可能的问题

Redis的并发竞争问题如何解决

了解Redis事务的CAS操作吗

分析线程池的实现原理和线程的调度过程

动态代理的几种方式

Spring AOP与IOC的实现

为什么CGlib方式可以对接口实现代理?RMI与代理模式

Dubbo的底层实现原理和机制

描述一个服务从发布到被消费的详细过程

算法方面考察了一个简单的数组就地去重问题,用丢弃数组尾部元素的方式实现了。

百度金融的面试安排在了周六,一面面试官很赞,态度认真,有些问题没有思路会给你提示,交流的不错,

二面被告知缺少金融支付背景,不过作为一名工作不到两年的新人,我觉得被Pass主要原因应该是工作经验比较少,教育背景也不太亮眼。

面试中的问题:

分布式系统怎么做服务治理

接口的幂等性的概念

Maven出现版本冲突如何解决

JVM垃圾回收机制,何时触发MinorGC等操作

新生代和老生代的内存回收策略

Eden和Survivor的比例分配等

Synchronized和Lock的区别

两次面试,感觉百度的流程比较严格,面试官挺不错的,简单可信赖

阿里巴巴

阿里巴巴 阿里的面试安排的很快,这次止步二面,两轮面试都是电面。听朋友说阿里五轮面试,四轮技术一轮HR,技术面试是部门的几个同事交叉面试,也有了了解。

一面总体上还是围绕项目架构、Java基础、JVM、并发编程、数据库操作、中间件技术和Dubbo服务治理框架等展开,可能因为是云安全部门,有一半时间在考察JVM,还提问了一些编译优化的知识,一面结束后很快安排了二面,相对一面,二面的问题更深入,问题比较刨根问底,更加注重对一些技术细节的理解和把握。

比如数据库操作,面试官会详细的问你数据库插入和删除一条数据的过程在底层是如何执行的,项目里配置了读写分离,也会比较深入的就实现方法和底层逻辑展开讨论。

一些值得记录的问题:

JVM内存分代,

Java 8的内存分代改进

深入分析了Classloader,双亲委派机制

JVM的编译优化

对Java内存模型的理解,以及其在并发中的应用

指令重排序,内存栅栏等

HashMap的并发问题

了解LinkedHashMap的应用吗

在工作中遇到过哪些设计模式,是如何应用的

由于阿里杭州目前社招都是P6起,自我感觉和岗位要求有差距,二面在电话里和面试官交流了,没有再参加后面的面试。

两次面试,阿里给我留下的印象很好,面试官都是大牛,面试结束后第二天,收到了阿里的邮件拒信,点赞。

阿里的岗位大都在杭州,面试结束特意关注了一下那边的生活成本,目前杭州房子均价不到两万,相比浙江一些县市的房价都破两万,杭州的房价应该比较正常。

如果拿到阿里和网易等几家互联网公司的高薪,买房和生活的确比北京要轻松很多,果断决定再沉淀一段时间,两年后P7再战。

优酷土豆

优酷网 优酷的面试都是二对一,每轮面试两个面试官,一面比较顺利,主要是Java基础,Spring原理,JavaNIO,并发和集合框架等,可能是因为视频网站,优酷考察网络原理的知识多,比如TCP/IP协议、长连接与短连接等。

一面提到了自己可能会在下半年学习大数据与机器学习相关的知识,二面就在这上面栽了跟头,问了很多海量数据的问题。

TCP/IP协议

长连接与短连接

mapreduce过程

多路归并的时间复杂度

海量url去重类问题

Java NIO使用

倒排索引的原理

对分词技术的了解

面试中给了一个具体场景,考察对MapReduce过程的理解,比如Map阶段和Reduce阶段是如何进行的等,Reduce阶段面试官希望分析给出一个多路归并的时间复杂度,用外排序的知识简单分析了一下,回答的不太好。

回来以后搜索了胜者树和败者树的优化,发现这里面的内容还挺多,深刻体会到有些知识点如果平时掌握的不够全面深刻,很难信手拈来。

总结:

既然是社招,一定的工作经验是必须的,三年以上最好,上面的几个面试里也体现了。所以如果想去大公司个人建议,在小公司积累2-3年经验然后开始跳槽。

1.基础方面我们就不讲了,主要是针对Java语言,需要对集合类,并发包,IO/NIO,JVM,内存模型,泛型,异常,反射等都有比较深入的了解,最好是学习过部分源码。

这些知识点都是相通的,在面试中也可以体现,比如集合类的HashMap,从源码的角度,可以深入到哈希表的实现,拉链法以外的哈希碰撞解决方法,如何平衡内部数组保证哈希表的性能不会下降等;

从线程安全的角度可以扩展到HashTable、ConcurrentHashMap等其他的数据结构,可以比较两种不同的加锁方式,RetreenLock的实现和应用,继续深入可以考察Java内存模型,Volitale原语,内存栅栏等;

横向扩展可以考察有序的Map结构如TreeMap、LinkedHashMap,继而考察红黑树,LRU缓存,HashMap的排序等知识。

Java方向的中高级职位,会比较重视对虚拟机的掌握,诸如类加载机制,内存模型等,这些在程序的优化和并发编程中都非常重要。

算法方面,基本的排序和查找算法,对递归,分治等思想的掌握。如果算法基础不太好,推荐《编程珠玑》等,每一章都很经典。

另外计算机基础,比如TCP/IP协议和操作系统的知识也是必备的,这些都是大学计算机专业的基础课,也是做开发基本的素养。

2.设计模式,造轮子的能力,各种缓存和数据库应用,缓存,中间件技术,高并发和高可用的分布式系统设计

大型互联网公司每天要面对海量的请求,都会考察分布式系统的架构和设计,如何构建高并发高可用的系统,另外因为用户基数比较大,一个细微的优化可能会给带来很大的收益,所以对一些技术栈的掌握要求都比较深入。

比如对MySQL数据库,需要知道相关的配置和优化,业务上来以后如何分库分表,如何合理的配置缓存,一个经验丰富的服务端开发人员,也应该是一个称职的DBA。

对常用的开发组件,比如中间件,RPC框架等都要有一定的了解,虽然工作中可能用不到我们自己造轮子,但是掌握原理才会得心应手。

这部分知识主要靠工作积累,推荐《大型网站技术架构与Java中间件实践》,还有曾贤杰的《大型网站系统架构与实践》,里面对大型网站的演变,服务治理和中间件的使用做了很详细的阐述。

作为业务开发人员,有必要了解压力测试相关的指标,比如QPS,用户平均等待时间等,可以帮助你更好的了解自己的系统。

3.软性指标,包括快速学习,良好的沟通能力,以及对相关行业的了解

公司招聘会比较看重一个人的学习能力,是不是值得培养,很多公司校招的毕业生薪资会倒挂工作多年的老员工,也是这样。

像沟通习惯,逻辑分析能力,这些都属于软实力,短时间内很难提高,需要长期的养成和持续不断的投入。

好多公司还会看重所在行业,虽然是做业务,但是对产品和行业的了解也很重要。

比如互联网金融类公司的岗位,如果有过支付和银行相关的系统开发经验肯定会有加分,这点和每个人的长期规划有关。

有了方向,接下来就是如何提高,说一些自己的感想。

很多时候,除非你的工作内容就是要应对高并发,海量用户等场景,否则通过加班或者说重复性的工作,其实很难有提高。

技术人员最直接的提高方式,还是需要跳出来,在工作以外审视自己,比如广泛的阅读技术书籍,多去论坛和各路牛人交流,了解主流互联网公司的技术栈,有针对性的去学习和了解。

同时也可以适当的了解一些产品或者设计的知识,以点带面,复合人才肯定更受欢迎,对待面试,要像和妹子约会一样,表现自己平常的一面就可以了。

代码改变世界,要早日成为明日大牛,程序员肩上的担子可是很重啊,共勉。

Java程序员从阿里、百度面试回来,这些面试题你们会吗?相关推荐

  1. Java程序员裸辞,跳槽面试屡屡被拒,终拿美团offer面经分享如下

    Java程序员裸辞,跳槽面试屡屡被拒,终拿美团offer面经分享如下 我是一名本科毕业但是非计算机专业的程序员,上个月面完了阿里,结果是没通过,然后上周又面了美团,上周五才面完了HR面,我自己感觉希望 ...

  2. 从普通JAVA程序员到阿里P8架构师,他用了六年

    工作年限:8 年服务公司:4 家(含四大门户中的两家)最近职业:Java 架构师职场关键词:社交平台.高并发系统架构设计.技术团队管理.多款从零到一的产品城市! 六年间,这位职人呆过四大门户中的两家, ...

  3. Java程序员跳槽涨薪面试心得

    面试候选人的时候,有个比较常见的问题:对于一份工作,你最关注哪些因素?回答往往是薪资待遇,公司氛围,公司发展前景,工作强度等.个人比较欣赏的答案是:个人能力的成长.想收获一个薪资好,公司发展前景好的工 ...

  4. Java 程序员必须掌握的 8 道数据结构面试题,你会几道

    转载自  Java 程序员必须掌握的 8 道数据结构面试题,你会几道 瑞士计算机科学家Niklaus Wirth在1976年写了一本书,名为<算法+数据结构=编程>. 40多年后,这个等式 ...

  5. python程序员专用壁纸_程序员炫技必备:用Python生成马赛克画!(文末附源码)...

    原标题:程序员炫技必备:用Python生成马赛克画!(文末附源码) 源 | Python与数据分析文 | 强哥 大家知道马赛克画是什么吗?不是动作片里的马赛克哦~~ 马赛克画是一张由小图拼成的大图,本 ...

  6. Java程序员从阿里、京东、美团面试回来,这些面试题你会吗?

    前言 作为一个 Java 程序员,你平时总是陷在业务开发里,每天噼里啪啦忙敲着代码,上到系统开发,下到 Bug 修改,你感觉自己无所不能.然而偶尔的一次聚会,你听说和自己一起出道的同学早已经年薪 50 ...

  7. java三年技术差_3年经验Java程序员面阿里P6 差距在哪里

    虽然这位小伙伴觉得自己工作三年了,结果阿里连面都不面就把自己挂了,这让自己感到很伤心.但是还是有网友觉得,三年不到p6,很正常啊,明年再面就没有问题啦! Java程序员3年经验面阿里P6,2面连面都没 ...

  8. 多线程设置操作时间间隔_听说,有位Java程序员学完这59道多线程面试题之后,直接面上阿里...

    前言 多线程是指从软件或者硬件上实现多个线程并发执行的技术.具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能.具有这种能力的系统包括对称多处理机.多核心处理器以 ...

  9. Java程序员两次美团面试失败后,含泪整理自己的面试经历

    说起来,职场上很多事情,只能用一个"缘分"来解释.近日在职场论坛上看到有员工发帖,他说自己在面试时遇到了一件最悲哀的事情?在上个月去美团面试的时候,由于发挥不太好,面试挂了.当时那 ...

最新文章

  1. 深入解析Windows操作系统笔记——CH1概念和术语
  2. npm 重新安装依赖_npm-shrinkwrap锁定依赖
  3. Mysql5.7-CentOS7安装
  4. FreeMarker简介及其语法
  5. web前端技术分享:web前端的求职前景好不好?
  6. Nacos源码覆盖实例列表
  7. 51nod1743-雪之国度【最小生成树,LCA,并查集】
  8. C高级第一次PTA作业(2)
  9. 一个TextView使用不同的颜色
  10. 岗位po是什么意思_劳务派遣是什么意思,劳务派遣和正式员工区别在哪
  11. 6月10款超赞的jQuery插件新鲜出炉
  12. Android Studio(7)---查找例子
  13. WaveShaperNode
  14. android Launcher——启动过程详解
  15. jquery css位置offset()
  16. git命令之git rebase 的用法
  17. 地震与地球的内部构成
  18. 嵌入式开发 | 单片机产品开发流程及学习方法
  19. 怎么看计算机的a卡右键找不到,右键没有显卡,右键没有amd显卡选项
  20. totolink服务器未响应,totolink路由器登陆页面打不开怎么办

热门文章

  1. java stringbuilder appendline_StringBuilder
  2. 通过“四大行为”对WCF的扩展[原理篇]
  3. 关闭chrome浏览器的developer tools
  4. MICRA OPENCART 自适应主题模板 ABC-0678-02
  5. vmware esxi的安装
  6. 面向对象之__isset__unset
  7. 找工作?该复习了!(转)
  8. [Silverlight] UI 测试/UI 自动化相关知识
  9. python3练习题:11-20
  10. 常用的php开发工具有哪些?