腾讯WXG后端一面面经
WXG果真名不虚传。。一面就面了两小时 当然也可能是因为我菜🤣
上来打完招呼就直接先做5道题
1.两个字符串A,B,将所有同时存在于A,B中的字母从A中剔除(HashMap)
2.一棵二叉树,判断是否存在从根到叶子节点的路径,使得路径各节点值之和等于给定值(DFS)
3.一个矩阵,按行递增,按列递增,判断一个数是否存在于该矩阵中(剑指offer原题)
4.求比整数N小的所有正整数中,各位数字乘积最大者,如输入220,返回199(没做出来,好像其他腾讯面经里也有这道题,据说也是剑指offer原题)
5.在N*N矩阵上随机取三个点A,B,C,用多段横线、竖线将它们连起来,要求各线段长度之和最短
(我想到可以平移成max(x)-min(x) + max(y)-min(y),照着往下推就好)
海量数据题:100亿个整型数据(面试官提示,100亿不重要,反正很多),乱序,100M内存,无外存(也就是不能写入到文件),求中位数
我提出用HashMap,面试官补充说没有硬盘
我提出用BitMap,面试官说100亿个你装不下的
他提示我,怎么用多轮处理,找到它大概的范围,我没get到
最后他又提示,可以二分,整型上限40亿,可以统计0~20亿,和20亿到40亿的个数,然后每次排除掉一半,但是太慢,怎么继续优化
我说N分,他说那N是多少?划分出来的区间,最小能是多少?
我说一个字节对应一个区间,但是很快发现最坏情况下,一个字节装不下
挖到这里没有继续往下挖了,面试官说反正到了这一步就是怎么分配单个区间大小的问题
开始问基础:
操作系统:
1.什么是线程安全?
2.操作系统层面,如何保证线程安全?说了锁和信号量,还有呢?
3.了解协程吗?你平时写一个程序,是多线程还是多进程?为什么不用多进程?
4.什么是内存碎片?如何解决?
数据结构:
1.Java Map有哪些实现?HashMap底层是什么数据结构,有什么好处,什么缺点?TreeMap底层是什么数据结构,有什么好处?
2.哈希表有哪些解决冲突的方案?(讲了开放寻址、链地址、二次散列)
网络:
1.四次挥手为什么是四次,不是三次
2.记不太清了,大概是问TCP绑定端口写网络编程的时候,是用select,poll,还是epoll
项目:
挑一个介绍,背景,亮点?
如果用户下订单的时候,后台已经写入数据,但是随即用户断网了,丢包,如何避免用户以为下单没成功,再下一个重复的单?
希望能有二面。。
#腾讯##实习##Java工程师##面经#