解析1:ACD,提到无锁编程自然会想到原子性,想到原子性就会想到CAS,这一下A和C就命中了,然后B,COW是典型的一种需要加锁的场景,java的ArrayList的Add方法就是典型的CAW,可以阅读其代码得知,当添加一个新元素时,会将原有元素复制出一个副本,再把新元素添加到新数组里,最后将原数组引用指向新数组。D选项指的是消息队列了,比如rabbitmq等等,不过题目写的是一个生产者,一个消费者,如果是多个生产者,或者多个消费者,就需要加锁了。
我K,第一道题就涉及到了那么多知识点。OPPO的试题果然不简单,一家成熟的软件公司对其软件开发人员要求基础扎实,这就是5哥不建议应届生毕业去小公司的原因之一啦。
解析2:ABC,这题考察的是概念,弱引用会被垃圾回收收走。
解析3:ACD,这又是多线程题,这一题考synchronized的各种用法。第一个synchronized是锁住a整个方法,第二个synchronized是锁住b中的代码段,第三个synchronized是锁住静态方法c,第四个synchronized是锁住整个类。那么答案就很明显了,B中,c是静态方法,静态方法哪里会和a是同一个对象?
解析4:ABCD,这题考察myISAM和innodb的概念,就不赘述了。
整体多选是先难后易,对应试者心态是一次试炼,在大厂中工作肯定是要有一定抗压能力的,不能因为遇到了问题心态就崩了,影响后面的发挥。
解析:1、磁盘、SSD、内存、寄存器;2、位;3、O(log2(n));4、应用无响应;5、HashMap;前两题是基础概念题。第3题是比较典型的O(nlogn) 算法。第4第5题也属于概念题,就不赘述了。看来填空题都比较简单,这是暴风雨来临前的平静吗?别急,决定差距的地方就要来了,下面我们来看编程题,可是占了近一半的分值!!!
解析1:第1题考察字符串的操作,给个思路,可以把各种符号存入HashMap并计数。例如‘(’,读到一次对应‘(’计数器+1,如果读到‘)’则(计数器-1,如果减到负数立马返回false。遍历完整个字符串时HashMap中每个元素都为0时则返回true,否则返回false。解析2:第2题简单处理可以使用暴力匹配,牛逼点可以考虑用KMP,建议大家考试时还是用简单的,不会错。另外如果直接使用String的indexof会不会给分呢?解析3:第3题是动态规划算法的典型应用,定义 dpi 为走到方格 (i,j) 坐标的不同路径的条数,则到这个路径只有两种可能:从上面 (i-1,j) 到该点,或者从左边 (i,j-1) 到该点。解析4:最后一题有两种解法,广度优先和深度优先。个人倾向于深度优先,按照深度优先的顺序,记录每个节点的 position。对于每一个深度,第一个到达的位置会被记录在 left[depth] 中。然后对于每一个节点,它对应这一层的可能宽度是 pos - left[depth] + 1 。最后将每一层这些可能的宽度取一个最大值就是答案。
这些题目大家有什么感受?其实题目并不难,主要是考概念和算法。5哥推荐大家去刷leetcode上的算法题,里面有不少大厂的算法题库。

一直以来也有很多人问5哥:毕业到底去大公司好还是小公司好?实话说,就互联网科技企业而言,除非是有特别的考虑和诉求,一般来讲,5哥肯定是推荐大家去大公司,优势是显而易见的。
一家互联网科技企业,它在行业到底有几把刷子,有没有核心的前沿科技和发展战略,是优秀应届生毕业进大厂更要优先考虑的。就拿OPPO来说,我们耳熟能详的“充电五分钟,通话两小时”,其实底层科技是源于它自身领先行业的VOOC闪充技术,而在“搞机圈”近年来手机影像化的趋势下,OPPO也对手机影像技术保持着高频变革和创新突破,连续光学变焦、RGBW像素排布、五轴防抖等,都算是近年手机影像热度很高的核心科技。
所以,优秀应届生进去这种底子厚、有远见的“大平台”,自然能更快成长,学的东西也更多、更深,从个人长期职业规划来看,更有动力和条件去实现阶段性目标,也就更容易发挥出自己的价值。
至于其他一些辅助附加项,比如舒适宜人的办公环境这是个客观条件基础,而开放和谐的工作氛围比较重要,比如升迁看能力、管理者也是年轻人居多的这种良好风气自然会更受喜爱。
你心动了吗?

扫一扫进入全景VR,体验「就职大厂」的感觉