失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 腾讯wxg提前批面经(后台开发录用)

腾讯wxg提前批面经(后台开发录用)

时间:2024-02-14 08:39:27

相关推荐

腾讯wxg提前批面经(后台开发录用)

批次:提前批

BG:wxg

岗位:后台开发

学历:双985硕

时间:8月

一、技术一面

首先是一小时时间做试卷,面试官开远程桌面观看,题目如下:

1.TCP建立连接的过程采用三次握手,已知第三次握手报文的发送序列号为10,确认序列号为5,请问第二次握手报文的发送序列号和确认序列号分别为?

答:发送序列号:4,确认序列号:10。(面试官追问了原理)

2.给出三种不同进程间通讯的方式。

答:消息队列,socket通信,共享内存,管道。(面试官追问了管道和匿名管道的区别)

3.广州从7月1号开始实行外地车牌“开四停四”的汽车行驶限制,请实现一个算法,可以根据过去若干天的行驶情况,准确判断今天是否可以出行。

bool IsLegal(bool history[], int size) //history是一个存储过去若干天(由size指定)的行驶情况,true表示有驶入管控范围,false表示停驶或未进入管控范围

返回值表示是否有存在违章情况。

bool IsLegal(bool history[], int size) {int count = 0;int blank = 0;int i = 0;while (!history[i] && i < size) {i++;}for (; i < size; i++) {if (history[i]) {count++;} else {blank++;if (blank == 4) {count = 0;blank = 0;while (!history[i] && i < size) {i++;}} else {count++;}}if (count > 4) {return true;}}return false;}

C++很久没写,编译器过期了,没有编译。后来面试官追问了原理讲解。

4.给定一个非负整数数组,将它们排成一个尽可能大的数,例如,给定数组[9, 81, 6, 35, 3, 30],那最后得到的最大数是981635330. 注意,由于最终结果可能是非常大的,所以返回结果使用string类型。

string LargestNumber(vector<int> & num);

public class Main2 {boolean compare(int a, int b) {String stra = a + "";String strb = b + "";int lena = stra.length();int lenb = strb.length();for (int i = 0; i < lena && i < lenb; i++) {if (stra.charAt(i) > strb.charAt(i)) {return true;} else if (stra.charAt(i) < strb.charAt(i)) {return false;}}int aa = Integer.parseInt(stra + strb);int bb = Integer.parseInt(strb + stra);if (aa > bb) {return true;} else {return false;}}String LargestNumber(int[] num) {for (int i = 0; i < num.length; i++) {for (int j = i + 1; j < num.length; j++) {if (!compare(num[i], num[j])) {int tmp = num[i];num[i] = num[j];num[j] = tmp;}}}StringBuilder sb = new StringBuilder();for (int i = 0; i < num.length; i++) {sb.append(num[i]);}return sb.toString();}}

改用Java,试了几个用例都过了。

5.给定两个字符串 s1 和 s2 ,从 s1 中删除在 s2 中出现过的字符。

char * remove( char * s1, const char * s2 );

public class Main3 {String remove(String s1, String s2) {for (int i = 0; i < s2.length(); i++) {s1 = s1.replaceAll(s2.substring(i, i + 1), "");}return s1;}}

大概中午写到12点面试官去吃饭了,下午两点半面试官打了电话问了两个简历上的项目,大概半个多小时。

总体而言还是比较顺利,面试官和我同样是信息安全专业,聊得也比较投机。

二、技术二面

二面本来通知用猿圈做网面,结果互相看不到对方,改用qq视频。。。

1,首先问了一个项目,比较深入细节。

2,然后发了一道题目:格式化输出一段字符串,就是wireshark那种二进制查看器的形式,每行显示16个字符,内容为16进制行号+16进制内容+字符串内容。我用java写的,刚开始写的是十进制(忘记16进制转换函数了。。。),面试官提醒后使用Integer.toHexString()转换为16进制(其实用printf格式化输出是最简单的)。

3,最后问了一个问题:如何实现一个高效的定时器?

答:实现可以使用观察者模式,定时器作为被观察者,每个观察者可以向定时器注册和解除注册,注册就是将观察者对象添加到被观察者维护的观察者列表中。定时器轮询观察者列表,若定时已到,新建线程调用观察者的回调方法。观察者列表可以直接使用链表存储,若定时任务是海量的,可以使用堆等数据结构使其有序化(按定时任务周期长短),这样在轮询前面节点时后面的节点不会超时(其实这个我也没太想明白,基本是瞎扯的)。

三、技术三面

1,聊项目,非常深入,每说一个技术点都会深入聊;

2,比赛经历,作品,如何设计的,主要考虑哪些安全性要求,为什么能获奖?

3,口述了一个链接(面试官的发音真的有点补票准呀,听了好几次才听清),合作编程那种网页,30分钟,三道题目:

(1)链表是否有环。这个用大不小步法即可;

(2)最长递增子序列。比较简单的动归;

(3)30w个员工抽10w名幸运奖,rand()函数输出0-65535。当时时间不多,没想到多好的算法,随便写了个上去。后来想了想,应该是分成8份,先随机0-7选择区域,再随机0-37499选择区域偏移。用rand函数实现两个随机函数即可,rand1返回0-7,实现中返回rand()%8即可,rand2返回0-37499,使用大于37499就重取策略。

四、HR面

hr是个小姐姐,非常神奇地聊了一个小时,不知道怎么就聊了那么久。。。大概问题整理一下:

1,自我介绍,你觉得自己有什么缺点,这些缺点造成的最严重的后果是什么?

2,家庭成员,家庭教育中父亲和母亲谁占得比重较大?

3,本科和研究生成绩如何?

4,聊一下本科的经历,包括学习经历和社团经历。

5,研究生的研究方向,做过的项目简单介绍一下。

6,城市选择,为什么选择深圳,北京如何?

7,还面试了哪些公司,offer选择问题。

8,过往病史?

9,本科为什么选择数学?研究生为什么选择信息安全?就业为什么选择后台开发?

10,有什么要问的问题?

五、后记

拿到微信offer感觉运气成分很大,本来自己就不会C++,只会java,每轮面试都当做最后一轮看待,但就这么莫名其妙的一面一面走到了最后,感谢杨超越,~~~叩拜!!

个人还是比较喜欢腾讯的面试风格的,基本从来没有语言相关的问题,只问基础、项目和撸代码,talk is 便宜, show me the 扣得!

如果觉得《腾讯wxg提前批面经(后台开发录用)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。