4.12 腾讯客户端一面凉经

楼主是初面腾讯,面试官应该是做安卓开发的,效率很高,昨天晚上面今早挂。
科班+有两个java相关项目,没问项目

1.自我介绍
2.有没有做过安卓项目?(无)

java:
3.java为什么能跨平台
4.jvm有什么特性
5.说说jvm的JIT和AOT的区别
6.说说反射
7.静态代理和动态代理
8.cglib的invokeSuper和JDK的invoke的区别
9.cglib中拦截器的子类是怎么获得的(说的不够好——)
10.动态代理的应用场景(答Spring的AOP,但是面试官要更具体的业务场景)
11.线程池了解吗?(不了解)
12.说说jvm的GC吧
13.GC的收集算法
14.假如是一个UI界面,应该用哪种算法
15.java内存结构
16.java的对象中的基本类型在哪
17.java线程中栈存放什么

操作系统:
18.线程和进程的区别
(顺便说了进程状态,进程通信方式
19.说说中断
20.内存页式管理
21.说说虚拟地址和物理地址
22.虚拟内存
23.页面置换算法
24.操作系统线程间同步方式
25.你说了Mutex,那讲讲synchronized和volatile吧
26.volatile的可见性可以保证变量同步吗?(记不清具体的)
27.volatile有什么应用

容器相关:
28.数组和链表的区别
29.说说为什么数组获得一个值的时间复杂度是O(1)的
30.数组的下标是怎么取元素的,对应在内存中是怎么样的步骤
31.ArrayList的扩容
32.ArrayList扩容后,内存中新旧List的地址是怎么样呢


---到这里45min问完,因为是比较常规的问题,基本都答上来了

---我们来做道题吧,20分钟
算法题:
leetcode 494
给定一个非负整数数组,a1, a2, ..., an, 和一个目标数,S。现在你有两个符号 + 和 -。对于数组中的任意一个整数,你都可以从 + 或 -中选择一个符号添加在前面。
返回可以使最终数组和为目标数 S 的所有添加符号的方法数。

楼主太菜了,没见过01背包的dp,刷题还是太少,没想出来怎么做,问了一下面试官,他一时半会没想到算法,就算了

无反问,面试官评价:
算法题比较难没做出来,java和操作系统相关基础都挺不错的,都回答差不多,计算机网络没时间问了。

本来以为还有希望进二面的,结果早上一看挂了

总结:
这次其实算是一次比较侥幸的面试吧,前面问的都很常规,没有太难的,都是一些基础内容,其实楼主Spring、数据库和相关掌握的不是很好,接下来有时间还是要多多深入,面试官会比较喜欢针对一个点一直深入询问
另外就是算法真的很重要很重要!看来腾讯可能是算法没AC就直接挂,遇到3道题目的同学最好也要至少AC两道,算法全AC太重要了!其他各家大厂也都需要笔试了,所以准备面经的同时,多刷算法也很重要!
#面经##腾讯##安卓工程师##Java工程师#
全部评论
        // 测试链接 : https://leetcode.com/problems/target-sum/         // 优化点一 : // 你可以认为arr中都是非负数 // 因为即便是arr中有负数,比如[3,-4,2] // 因为你能在每个数前面用+或者-号 // 所以[3,-4,2]其实和[3,4,2]达成一样的效果 // 那么我们就全把arr变成非负数,不会影响结果的 // 优化点二 : // 如果arr都是非负数,并且所有数的累加和是sum // 那么如果target<sum,很明显没有任何方法可以达到target,可以直接返回0 // 优化点三 : // arr内部的数组,不管怎么+和-,最终的结果都一定不会改变奇偶性 // 所以,如果所有数的累加和是sum, // 并且与target的奇偶性不一样,没有任何方法可以达到target,可以直接返回0 // 优化点四 : // 比如说给定一个数组, arr = [1, 2, 3, 4, 5] 并且 target = 3 // 其中一个方案是 : +1 -2 +3 -4 +5 = 3 // 该方案中取了正的集合为P = {1,3,5} // 该方案中取了负的集合为N = {2,4} // 所以任何一种方案,都一定有 sum(P) - sum(N) = target // 现在我们来处理一下这个等式,把左右两边都加上sum(P) + sum(N),那么就会变成如下: // sum(P) - sum(N) + sum(P) + sum(N) = target + sum(P) + sum(N) // 2 * sum(P) = target + 数组所有数的累加和 // sum(P) = (target + 数组所有数的累加和) / 2 // 也就是说,任何一个集合,只要累加和是(target + 数组所有数的累加和) / 2 // 那么就一定对应一种target的方式 // 也就是说,比如非负数组arr,target = 7, 而所有数累加和是11 // 求有多少方法组成7,其实就是求有多少种达到累加和(7+11)/2=9的方法 // 优化点五 : // 二维动态规划的空间压缩技巧
5 回复 分享
发布于 2021-04-13 20:09
楼主你好,请问你是实习、校招还是社招?
点赞 回复 分享
发布于 2021-04-13 15:00
看面试官的,我同学贼简单的算法都没弄出来也过了
点赞 回复 分享
发布于 2021-04-13 15:28
请问一下,30怎么答鸭
点赞 回复 分享
发布于 2021-04-13 17:54

相关推荐

6 20 评论
分享
牛客网
牛客企业服务