转-经验

先来看下记录的面试材料:

 

一、阿里巴巴面试

第一个:阿里面试都问什么? :(55分钟)

01

1、开发中Java用了比较多的数据结构有哪些?
2、谈谈你对HashMap的理解,底层原理的基本实现,HashMap怎么解决碰撞问题的?
这些数据结构中是线程安全的吗?假如你回答HashMap是线程安全的,接着问你有没有线程安全的map,接下来问了conurren包。
3、对JVM熟不熟悉?简单说说类加载过程,里面执行的哪些操作?问了GC和内存管理,平时在tomcat里面有没有进行过相关的配置
4、然后问了http协议,get和post的基本区别,接着tcp/ip协议,三次握手,窗口滑动机制。
5、开发中用了那些数据库?回答mysql,储存引擎有哪些?然后问了我悲观锁和乐观锁问题使用场景、分布式集群实现的原理。
6、然后问了我springmvc和mybatis的工作原理,有没有看过底层源码?

 

二、京东金融面试

02

1、Dubbo超时重试;Dubbo超时时间设置
2、如何保障请求执行顺序
3、分布式事物与分布式锁(扣款不要出现负数)
4、分布式session设置
5、执行某操作,前50次成功,第51次失败a全部回滚b前50次提交第51次抛异常,ab场景分别如何设置Spring(传播性)
6、Zookeeper有哪些用
7、JVM内存模型
8、数据库垂直和水平拆分
9、MyBatis如何分页;如何设置缓存;MySQL分页
10、熟悉IO么?与NIO的区别,阻塞与非阻塞的区别
11、分布式session一致性
12、分布式接口的幂等性设计「不能重复扣款」

 

三、美团面试

03

1、最近做的比较熟悉的项目是哪个?画一下项目技术架构图
2、JVM老年代和新生代的比例?
3、YGC和FGC发生的具体场景
4、jstack,jmap,jutil分别的意义?如何线上排查JVM的相关问题?
5、线程池的构造类的方法的5个参数的具体意义?
6、单机上一个线程池正在处理服务如果忽然断电该怎么办?(正在处理和阻塞队列里的请求怎么处理)?
7、使用无界阻塞队列会出现什么问题?
8、接口如何处理重复请求?
9、具体处理方案是什么?
10、如何保证共享变量修改时的原子性?
11、设计一个对外服务的接口实现类,在1,2,3这三个主机(对应不同IP)上实现负载均衡和顺序轮询机制(考虑并发)

 

总结

以上是对大型互联网名企面试题收集分享,分享给大家,希望大家可以了解什么是大型互联网名企面试题。

我特意整理了一下,有很多问题不是靠几句话能讲清楚,自己在网上收集了一套BAT面试视频合集,用来回答这些面试题。很多问题其实答案很简单,但是背后的思考和逻辑不简单,要做到知其然还要知其所以然,还有一些Java高并发、分布式、微服务、JVM、源码分析等技术视频也一并分享在我的Java后端技术群里。

一面总体上还是围绕项目架构、Java基础、JVM、并发编程、数据库操作、中间件技术和Dubbo服务治理框架等展开,可能因为是云安全部门,有一半时间在考察JVM,还提问了一些编译优化的知识。

一面结束后很快安排了二面,相对一面,二面的问题更深入,问题比较刨根问底,更加注重对一些技术细节的理解和把握。

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

一些值得记录的问题:

JVM内存分代,

Java 8的内存分代改进

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

JVM的编译优化

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

指令重排序,内存栅栏等

HashMap的并发问题

了解LinkedHashMap的应用吗

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

总结:

既然是社招,一定的工作经验是必须的,三年以上最好,上面的几个面试里也体现了。所以如果想去大公司个人建议,在小公司积累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.软性指标,包括快速学习,良好的沟通能力,以及对相关行业的了解

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

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

好多公司还会看重所在行业,虽然是做业务,但是对产品和行业的了解也很重要。
比如互联网金融类公司的岗位,如果有过支付和银行相关的系统开发经验肯定会有加分,这点和每个人的长期规划有关。

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

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

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

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

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

学习新知识的感受是快乐的,特别是那些掌握了就感觉自己的天空更亮了一点的那种。

但面对未知的领域,有时也会感到前途漫漫,步履维艰。

 

多注意自己的代码质量;其次如果在开发过程中用到了自己原来没接触过的技术时,要花点时间去学习研究一下,而不是直接把代码粘过来实现功能就没有下文了,即使当时实在赶时间,也要把这事记下来,以后找时间去学习,最好做到接触即掌握,用过即专家。这才是程序员的自我修养!

 

今天,就为大家整理一份目前互联网公司最主流的技术选型:

阅读源码

程序员每天都和代码打交道。经过数年的基础教育和职业培训,大部分程序员都会「写」代码,或者至少会抄代码和改代码。但是,会读代码的并不在多数,会读代码又真正读懂一些大项目的源码的,少之又少。这也造成了很多错误看源码的方式。

那要如何正确的分析源码呢?

 

有人说:一晃眼毕业已经三五年有余,回首再看一路走来的磕磕绊绊,如果在当时有人告诉过他一些职场建议,也许自己可以少走许多弯路。

  无论你是工作N年的职场大咖,还是刚出校园的职场菜鸟,都该看看这篇文章:工作三年后,悟出了哪些职场道理?

  本文作者为LinkedIn领英专栏作家小川叔:只聊职场、不写故事的萌叔,骂过无数职场迷茫之人依旧被大家爱着,最近出版《努力,才配有未来》。

  工作前三年有多重要呢?

  1996年,Google创始人拉里·佩奇遇到了谢尔盖·布林,两人开始合作研究一名为“BackRub”的搜索引擎,三年后的1999年,Google正式上线,并在当时获得了千万美元投资。

  虽然我们大部分人都没这么牛。但如果你工作第一年就满足于五点钟下班,那你一辈子可能都是五点钟下班了。

  在职场上你会遇到一些人,乍看之下他们其貌不扬、出身学历可能也并不好,但他们就是职位比你高、能力比你强、得到老板更多的青睐。

  有些人用三年时间,获取了一年的工作经验;而优秀人才的特质是:用一年时间,获取了其他人三年的工作经验。他们是如何做到的呢?

  1、做事很重要,但是更要学会做人。

  如果你只是一味埋头做事,最后顶多是个兵,当不了将。

  所谓“做人”,不过就是多笑点,多帮点,有事儿多主动点,这些“多”不会让你累死,但是会让你很快能融入这个团队,让大家记得你。

  多笑,多说,多问,少气,少打听。

  每个人都喜欢正能量的人,背后打听和筹划一些扯淡的事儿,是很二的,因为你根本不知道你打听的对象,谁是你的领导的对头,也不会知道你打听的问题会怎么被添油加醋地传到谁的耳朵里。

  所以,做积极正能量的自己。多说几个“我试试看”,少说几个“没问题”以及“我不行”,或许是最好的打开局面的办法。

  2、没有人有义务教你,所以如何让其他人教你更多,那才是你的本事。

  坦白说,同事就是完成自己的KPI,下属就是帮领导分担工作,所以没人帮你是正常的,做事是肯定必要的。

  领导为了让你做的事情能多快好省,可能会交代你一些流程或者经验,但是他能不能和你分享更多,取决于你的工作成绩和态度,以及你怎么对他。

  浅薄的讨好固然是受用,但是不会太奏效。大家都是老油条出身,还能败给你这种小伎俩?所以真心对他人是必要也是根本。

  所谓的真心不是让你关心领导家门牌几号,生日多少,而是:

  帮他做一个会议列表;

  提前发一个会议通知;

  吃早饭的时候发个短信问他要不要带杯咖啡;

  其实不过是最基本的人情往来。

  任何培训都需要交学费,你上班做下属,用不着学费,那好歹也要一点人情投资不是么?

  3、给自己定一个大目标,这没什么不好,这样你才能知道你要提升什么。

  一般入职一年左右就会到了该指定目标的时候,如果你的目标是你某个同事的位置,那么你就要知道,你和他还差了几级,如果你的目标是你领导位置,那你就要多总结,除了能力,你还差什么?

  有目标是好事,毕竟比没有目标强。能不能做到也许不要重要,重要的是,知道自己始终在向上。

  4、做好随时清空自己学习新知识的准备。

  这句话是告诉那些转行的同学的,虽然每个门类都是相通的,但是清空上一个地方学到的东西,让自己从低姿态做起,你会更容易学到和补充到新的知识。

  尤其是换了一个门类和领域之后,完全新人的面貌去做事情,把自己清零会更容易找到定位,学得扎实。

  5、每个人都有雷区,所以不要问不合适的问题。

  每个人都有各自的雷区,有一些私人的事情,除非对方主动提起,不然不要冒然发问,比如是不是结婚了?(也许对方离异)比如对方的女友是做什么的等等。

  职场不是朋友圈,一些在你看来无关痛痒的话题,也许是对方的雷区。谈资就是谈资,没有原则好回答的,或许是最安全的。

  6、提高就是大量的练习和被否定之后还能活着。

  所谓的学习就是给你更多犯错的机会。学多了自然就会了。错多了,被骂多了,自然就长了记性。

  至于被骂了,第二天还能坦然笑出来。被训斥了,第二天还能毫无芥蒂的一如既往,这就是所谓的职场压力。

  没有人欠你什么,没有人一定要顺你的意思,要安抚你,要鼓励你,要如何如何你,做错要承认,但是担责任的都是领导。

  没有人的成长是顺顺利利的,其他人没这个义务要帮你擦屁股。如果领导已经帮你擦了,那你让他骂两句不是也应该么?

  7、适应你领导的做事风格,弥补他的不足才是你存在的意义。

  每个人都会有各自的风格,每个人都会和自己风格相同的人亲近。性子急的人喜欢反应迅速的人,强势的人喜欢第一时间去执行的人。所以短时间内快速适应你领导的做事风格,是合拍的第一要素。

  如果对方是一个急性子,和你要一份资料,你偏偏是一个慢性子,隔了一天才给,那估计你留不下,且会死很惨。

  配合领导的风格只是第一位,弥补他的不足才是一个下属存在的价值。

  急躁的人很容易不注意细节,慢性子的人计划执行力一定会不强。你所能做的就是依据这些,帮性子急的领导把控细节,提醒慢性子的领导他的日程安排。

  做不做是他们的事,但是领你的人情是一定的。做下属不能为领导分忧,那你就永远只能做一个下属。

  8、学会使用图表分析问题,学会自我总结。

  图表是最好的概括方式,小到一本书,大到个人理念。

  你可以随意在纸上圈一个圆,一句话概括这部电视剧讲的主要内容,之后画出几个并列的分支,列出起承转合,之后用线条标明各自的关系,最后汇总发表你自己对这个电视剧的看法。

  由此可以推展为,这个电视剧的营销组合动作,以你个人的认知你是如何知道它,尝试用自己的认知来确定这个电视剧的推销手法,之后再总结整合营销里的先后顺序以及节奏,最后列出自己的观点。

  概括和总结是很必要的事情,而且这种事情很简单,一般一张A4纸就能完成。

  你可以列出今天的五项工作任务,之后分出这些工作任务所需的条件,目前进展的情况,接下来分成的步骤,以及总结自己今天可以完成几项,还有如何有机组合自己的工作顺序。

  时间久一点,你也许会找出自己工作的规律,比如上午工作效率是否是高点?下班前的工作是如何?一周下来你大概就知道如何合理分配自己的工作时间和节奏,进而找到哪天可以休息,哪个时间点可以放松,哪个时间是打电话沟通的好时机?哪个时间可以安静写点东西。

  总结是提升自我最必要的条件之一,当然,学会概括总结,你要面临的就是,也许你的感性思维会越来越萎缩,但是你的逻辑和条理性会很好。

  9、存在感很重要,自信也很重要,克服孤独感,顶得住压力。

  没人能得到全部的人赏识。一定会有人喜欢你,有人讨厌你。关键是让哪些人喜欢你!

  同事喜欢你,只是团队融合,但是未必得到更多提高。领导喜欢你,要看是怎样的喜欢,如果只是单纯的吸引,那还是尽早换工作比较好。

  要有成绩的表现,要让领导看到你的个人能力,这需要机会,也需要努力。机会只要肯等一定会有。

  有了机会也许会有升迁、奖励、遭人嫉妒一定会难免。顶得住这些,扩展你的圈层,淘汰那些只会嫉妒、嚼舌根以及矫情的各位亲们,其实那没什么不好。

  如果你是天鹅,那么请不要留念早年还在的丑小鸭的窝。更不要因为几只鸭子的酸酸的吐槽怀疑自己今天的一切。

  你的成长是自己努力换来的,向上走,势必要抛弃一部分人和群体。因为“前进”是一个动词,你选择出发,就没必要再为那些留在原地的人而叹息。

  向前走,走你该走的路。

  每个人都喜欢和积极向上的人做朋友,那些害怕吃苦还羡慕你的人,他们可以和你继续做生活里的朋友,那些嫉妒你成长所以背后黑你的人,你根本没必要在乎他们。

  10、高效不等于慌乱,反应及时不等于报告过度

  把你本子的第一页空出来,随时记录新同事的名字,每天抽空温习,方便下次准确称呼对方。在你本子的最后一页记录重要的电话、联系人、联系方式,工作流程、系统密码等方便随时查阅。

  高效是反馈及时,不代表慌乱,稳,是一个人该有的一个必要素质,处变不惊其实不是考验你应对的办法,而只是考验你调整自己情绪的能力。

  领导指定的任务,第一时间反馈自己接到指令,开始进行工作,之后要在重要节点报告工作进展,不要有事儿没事儿去烦领导,因为工作是派给你的,如果凡事都请示,要你干嘛?

  11、多做有准备的发言,不要信口开河,思考很重要,沟通更重要。

  也许有的同学会说,如果不汇报,那很多事情我做不了主啊!那怎么办?擅自做主一定会被批啊!参加过培训的同学一定都知道买火车票的案例。老板让你去买火车票,你去了,排了三个小时的队,售票员说没有,你回来报告说,老板没有票。这样的员工被骂死也活该。

  派另外一个人又去,也花了三个小时,他回来也报告说,没票了,但是可以到某某站转车,是几点几分的,大概是多少多少钱,如果非要买这趟车,黄牛票大概是多少钱,而且他还托朋友可以拿到打折的机票,大概会比火车票高多少钱。

  后一种员工,如果你是领导你会不喜欢么?

  同样都是没买到票,为什么后一种更招人爱?

  因为后一种他思考了,而且他真的是站在为领导着想的角度,给出了好几种方案,同样的三小时工作时间,你就做了排队一件事,他做了多少事呢?

  所以由此推展下去,你的发言,你的每一次表现一定是要经过思考之后才能脱口而出的东西,不要相信所谓的灵光乍现!那都是深思熟虑以及经验之后的结果。

  12、工作三四年,从员工变成优秀。

  工作三四年就意味着你已经到了一个成熟期,这个成熟是一个职场人基本且必要的心态、从业原则和态度。

  那么接下来你们都会遇到新的课题、新的挑战、新的晋级。

  比如我要学会的是如何学会管理,很多人则要学会如何从员工变成优秀。

  会总结,懂汇报,能抓住重点,总结经验,把你的做法变成流程的,就是一个优秀的员工。

  你在做的是什么?你的成果是什么?

  你现在遇到的难题是什么?

  亮点是什么?需要的协助是什么?

  这些你都可以在你的汇报工作里,有条不紊地提出来。

  把你手头的工作做好,总结一些经验,寻找一些亮点,之后和你的直属领导去沟通,尝试去推进你的计划,哪怕一次只是一点点。

  最后,忍得住打击,谁都不是从一开始就会走的。

  人在职场,失败是必然的,走弯路是难免的,有挫败感是经常的,成就感如果那么容易取得,就不叫成就。

  职场人最大的本事不是你在台面上有多光彩,而是你摔下来,还能快速收拾一地的碎片,之后露出笑容对自己说,没事!再来!

 

工作节奏越来越快,我们永远有做不完的事情,哪怕 996 也阻止不了工作堆积成山的节奏。于是只能先完成任务再说,跑,跑,跑得足够快,我们才能留在这里,至于手上这些事情,符不符合职业规划,能不能提升自己的能力,都来不及考虑了。

日复一日如此这般,有一天我们忽然发现:好像我没怎么成长啊,危险,哪天一觉醒来就要被裁员啦!

看来只好利用业余时间来学习提升啦!然而我们已经身处不可逆转的碎片化时代,手机嘀嘀嘀地响个不停,不看就担心错失什么重要东西,结果一天下来净看手机了,连 15 分钟的整块时间都没有,怎么能系统的学习?

这个 Chat,结合作者从2013年~2017年业余时间学习的经历,提供了 6 个关键步骤,指导我们有效利用业余时间来学习:

  • 确立学习目标
  • 分解学习任务
  • 寻找学习工具
  • 测试时间消耗
  • 找到可利用时间
  • 结合任务和时间粒度,执行学习计划

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值