面试总结4_sizeof在计算变量所占空间大小时采取的机制-程序员宅基地

技术标签: 面试题  

1)tcp三次握手的过程,accept发生在三次握手哪个阶段?


2)Tcp流, udp的数据报,之间有什么区别,为什么TCP要叫做数据流?


3)const的含义及实现机制,比如:const int i,是怎么做到i只可读的?


4) valitale的含义。


5)OFFSETOF(s, m)的宏定义,s是结构类型,m是s的成员,求m在s中的偏移量。


6)100亿个数,求最大的1万个数,并说出算法的时间复杂度。


7)设计一个洗牌的算法,并说出算法的时间复杂度。


 socket在什么情况下可读?


9)流量控制与拥塞控制的区别,节点计算机怎样感知网络拥塞了?



1)三次握手之后
第一次握手:客户端发送syn包(syn=j)到服务器。 
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个ASK包(ask=k)。 
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1)。 
三次握手完成后,客户端和服务器就建立了tcp连接。这时可以调用accept函数获得此连接。
2)tcp是数据流,udp是数据报,流无边界,数据报有边界.TCP是先进先出的,并且可靠.
3)编译器相关,优化可能让其直接转为一常量代入.(编译期间完成,可以用常数直接替换)
4)volatile吧,告诉编译器此处必须得从地址去取,不得作相关优化。千万注意,这里与硬件cache可不是一回事。
5)#define OFFSETOF(s, m) ({s s1;(void*)(&s1)-(void*)(&s1->m);}) /*gcc*/
#define OFFSETOF(s, m)   ((size_t)&(((s*)0)->m))
6)建一个堆,先把最开始的1万个数放进去。以后每进一个,都把最小的赶出来。(考虑存储空间的限制)
7)产生2*54+rand()%2次交换,所有序列已经很接近平均分布(只要rand()满足均分),并且比较快。否则会是复杂度比较高的算法。我统计过。
不知道想问什么。
9)拥塞控制是把整体看成一个处理对象的,流量控制是对单个的。感知的手段应该不少,比如在TCP协议里,TCP报文的重传本身就可以作为拥塞的依据。依据这样的原理,应该可以设计出很多手段。(流量控制:控制连接的两端发送数据不要太快;
拥塞控制:控制连接所经过的路由器别超负荷;
感知拥塞应该是受到了ICMP抑制报文)

第8个问题就是在议协层来说,比如当缓冲区数据达到一定数量socket就可读了,除此之外还有对方把链接关闭了也可读。

这份面试题是我在网上收集到的,是C++的,本人是搞Java的,C++以前也稍微接触过,在这里我稍微总结一下这份面试题,供需要的人参考。


电话面试题目:

1. 异步通信和同步通信的区别?

同步通信与异步通信区别:

   1.同步通信要求接收端时钟频率和发送端时钟频率一致,发送端发送连续的比特流;异步通信时不要求接收端时钟和发送端时钟同步,发送端发送完一个字节后,可经过任意长的时间间隔再发送下一个字节。
    2.
同步通信效率高;异步通信效率较低。
    3.同步通信较复杂,双方时钟的允许误差较小;异步通信简单,双方时钟可允许一定误差。
    4.同步通信可用于点对多点;异步通信只适用于点对点。


2. TCP协议的作用?三次握手是通过什么方法来保证通信双方确认的正确?

  TCP提供的可靠数据传输服务,是依靠接收端TCP软件按序号对收到的数据分组进行逐一确认实现的。这个过程在TCP收发端开始通信时,被称为三次握手初始化。

三次握手过程:

第一次握手:建立连接时,客户端发送syn(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认; 

       
第二次握手:服务器收到syn包,必须确认客户的SYNack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态; 

       
第三次握手:客户端收到服务器的SYNACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。


3. 操作系统执行可执行程序时,内存分配是怎样的?

一个由c/C++编译的程序占用的内存分为以下几个部分
1
、栈区(stack— 由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。
2
、堆区(heap— 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。
3
、全局区(静态区)(static全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 - 程序结束后有系统释放
4
、文字常量区 —常量字符串就是放在这里的。程序结束后由系统释放
5
、程序代码区(text)—存放函数体的二进制代码。


4. 引用和多态的区别?

答:引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。

多态是允许你将父对象设置成和它一个或更多的子对象相等的技术,赋值之后, 父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单地说就是一句话,允许将子类类型的指针赋值给父类型的指针。多态在C++中是通过虚函数实现的。


5. 堆和栈的区别?

答:stack的空间由操作系统自动分配/释放,heap上的空间需要手动分配/释放

栈的空间有限,堆是很大的自由存储区。

程序在编译期对变量和函数分配内存都在栈上进行,且程序运行过程中函数调用参数的传递也在栈上进行。


6. 进程之间通信的方式有哪些?

答:信号、信号量、消息队列、共享内存。


7. 面向对象的三个特征,分别有什么作用?

答:封装:封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。

        继承:继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展

  多态:多态性( polymorphisn )是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。

实现多态,有二种方式,覆盖,重载。
8. 虚函数的实现机制

答:
9. 如何判断一棵树是平衡二叉树

答:如果某二叉树中任意结点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。

 


10.sizeof在计算变量所占空间大小时采取的机制

答:
11.结构体struct和联合体union的区别

答:  共用体

构造数据类型,也叫联合体
用途:使几个不同类型的变量共占一段内存(相互覆盖)

结构体是一种构造数据类型
用途:把不同类型的数据组合成一个整体-------自定义数据类型

Structure 与 Union主要有以下区别:

1. struct和union都是由多个不同的数据类型成员组成, 但在任何同一时刻, union中只存放了一个被选中的成员, 而struct的所有成员都存在。在struct中,各成员都占有自己的内存空间,它们是同时存在的。一个struct变量的总长度等于所有成员长度之和。在Union中,所有成员不能同时占用它的内存空间,它们不能同时存在。Union变量的长度等于最长的成员的长度。

2. 对于union的不同成员赋值, 将会对其它成员重写, 原来成员的值就不存在了, 而对于struct的不同成员赋值是互不影响的。


12.目前效率最好的内部排序是什么

答:归并排序:最差、平均、最好都是O(nlog2n)

各种排序方法对比:

 

 

 

 

 

 

 

 



一面题目:(因为比别人多了一个电话面试,所以一面的问题不再只是纯技术方面的)

1. 简单自我介绍(主要讲自己的特长、性格特点、优缺点)

答:自己发挥吧这个。


2. 大学期间自己做过的最成功的一件事

答:我觉得自己在大学最成功的事就是参加了传智播客在我们学校举办的第一届软件开发大赛,我自己从参赛到实现作品,最后获得奖项的整个过程让我都回味无穷。自己付出很多努力,那也是我学习Android做的第一个项目,整个过程自己遇到很多问题,都是自己慢慢的耐心地去解决的,最后也不枉费我花的心机,所以觉得这件事我做得蛮成功的。


3. 如果遇到一个以前完全没接触过的技术,会怎么去学习

答:首先我会先去收集资料,看看这个技术需要些什么,看如何怎么让自己快速入门。是否有视频教程或者比较好的书籍能让我对这个陌生的技术有比较好的认识的,如果有的话就制定相应的学习计划。


4. 接下来的学习计划是什么

答:我接下来的学习计划是项目驱动学习,先去了解最新的技术动态,学习把最新的技术整合到自己的项目当中去,在整合项目之前,我会尝试去做相应的Demo去实现效果,学习它实现的原理和机制。


5. 觉得大学里最难学的课程是什么

答:算法分析与设计

我觉得这门课比较难学的原因是这门课需要我们比较好的逻辑分析能力,或者要有比较好的数学功底才能学好。


6. 如何统计深圳市便利店的数目,说思路

答:说实在我没啥思路。


7. 如果你一个人在一间偏僻且设备简陋的酒店,某天晚上很晚,你突然想吃烧烤,你会怎么做?(旁边没有烧烤店,旅馆也没有工具,你住的地方离有烧烤店的地方很远,而且你也不知道怎么去,贸贸然出去可能会有危险,你会采取什么方法让自己可以安全地吃到烧烤)

答:自己想
8. 重载和覆盖的区别是什么

答:

1、方法的覆盖是子类和父类之间的关系,是垂直关系;方法的重载是同一个类中方法之间的关系,是水平关系。
2、覆盖只能由一个方法,或只能由一对方法产生关系;方法的重载是多个方法之间的关系。
3、覆盖要求参数列表相同;重载要求参数列表不同。
4、覆盖关系中,调用那个方法体,是根据对象的类型(对象对应存储空间类型)来决定;重载关系,是根据调用时的实参表与形参表来选择方法体的。

 


9.MySQL数据库中,如何查看一个表的表结构,如何查看其主键(说出查看的命令)

答:desc 表名

show fields from dbname;
10.数据库的读脏活存放数据库的磁盘出现灾难性事故,有什么方法可以避免

答:使用并发控制技术的封锁技术可以避免读数据的不一致。


11. 现场手写代码,实现一个双向循环链表的增删查操作

答:

typedef structDNode

    ElemType data;

struct DNode *prior, *next;

}DNode, * DoubleList;

插入操作:

intDlinkIns(DoubleList L, int i, ElemType e)

{

 DNode *s, *p;

s=(DNode*) malloc(sizeof(DNode));

if(s)

{

    s->data = e;

s->prior =p->prior; p->prior->next = s;

s->next= p;p->prior=s;

return TRUE;

}

       else

       returnFALSE;

}

 

删除操作:

intDlinkDel(DoubleList L, int i, ElemType *e)

DNode *p;

*e = p->data;

p->prior->next= p->next;

p->next->prior=p->prior;

free(p);

return TRUE;



 

 


二面题目:

1. 简单自我介绍

答:自由发挥。


2. C++和Java的区别,JVM是什么,具体用来做什么

答:我觉得C++与Java最大的区别是在于内存管理上,C++的内存管理是需要程序员自己控制的,自己开了需要自己去释放。然而Java提供了JVM,JVM就是用来进行内存管理的,不需要程序员自己手动开关。

Java呢,摒弃了C++很多复杂的特性,比如指针、多继承、操作符重载等等,相对来说Java的编程学习入门比较容易。


3. 图像处理中位图BMP的格式是怎样的(这个是针对我的图像识别项目来的)

答:这个不清楚,面试官会根据你的项目来问相关的问题,能准备的是好好复习自己所做过的项目。


4. Windows编程的知识点,如消息机制,一个自定义消息如何实现

答: 自定义消息共分为3步骤:

1)  自定义消息:#defineWM_MYMSGWM_USER+1

2)  在头文件中声明函数:      afx_msg voidonMyMsg();

3) 在消息映射中添加对应关系:

//BEGIN_MESSAGE_MAP(CDefMsgDemoDlg,CDialog)//END_MESSAGE_MAP()

ON_MESSAGE(WM_MYMSG,onMyMsg)

4)定义函数void onMyMsg();

核心即:函数原型、关联消息与消息响应函数的宏、函数实现。


5. 简单介绍一下Java中的集合框架(有哪些类构成和包括哪些接口)

答:

集合框架:用来表示和操作的统一的架构,包含了实现集合的接口与类


由上图可知,所有Collection是上级接口,接口List、Queue、Set接口都继承与它

实现List接口的类有ArrayList、LinkList

实现Queue接口的类有LinkList

实现Set接口的类有HashSet、SortedSet

Map也是一个接口,实现它的类有HashMap、SortedMap


6. 如果是自己为一个类写一个sizeof函数,应该考虑哪些问题

答:
7. 虚函数和虚继承对于一个类求sizeof的影响有什么差别

答:


8. 说一下为什么觉得自己适合做开发

答:首先我对编程就有很大的兴趣,兴趣是最好的老师。我本人有较好的语言基础并且具备去做开发的职业技能。我个人在平时学习工作中都比较耐心,有较好的抗压能力,这是做开发必备的素质。兴趣+能力+素质,我想这三点就能让我可以认为自己适合做开发。


9. 求最大子串和,说思路

答:含义:从元素i开始,到元素j为止的所有的元素构成的子段有多个,这些子段中的子段和最大的那个。

那么:

q      如果:b[j-1]>0, 那么b[j]=b[j-1]+a[j]

q      如果:b[j-1]<=0,那么b[j]=a[j]

这样,显然,我们要求的最大子段和,是b[j]数组中最大的那个元素。

int MaxSubSum(int n, int *a)
{
    int sum=0, b=0;

    for (int i=1;i<=n; i++)
    {
        if (b>0) b+=a[i];
        else b=a[i];
        if (b>sum) sum=b;
    }
    return sum;
}


10. Linux后台开发问题(表示没接触过,题目没听懂,囧)

答:不知道问什么问题,无法总结


今年腾讯出手确实很早,足足比阿里校招实习生面试早了一个月(当然排除内推的)。我报的上海IEG后台开发,下面就来讲讲自己的实习面试经历。

       3.22号腾讯在nd笔试,还好在市区,屁颠屁颠和同学都去了,之前看过腾讯的实习生招聘题目,感觉是很难的,不过这次选择题确没有历届那么难,倒是很基础,题型和之前差不多,不过没有填空题了。题目就不说了,签保密协议了。考的范围包括c++,数据结构、概率、网络、redis、ios开发、java等等比较多,不知道什么原因,怎么可能都会呢?或许不同方向他们会选择对应方向的题目来算吧。

       一面:在面试的前一天,有几个同学收到短信了,直到晚上睡觉前都没有收到短信通知,但是我很确定的是我只有几道没学过的知识没做,其他的基本没错,因为自己没把握的题目和同学对了下答案,而且都是对的。我不相信自己面试的机会都没有,终于第二天接到短信了说电话面试。过了半个小时,广州深圳打来了电话进行面试,很奇怪为什么我是电话面试,而且是深圳的(因为之前我说过我不去深圳了)。面试题目可以分享一下:先是问的项目,接着问了如下几道题目1.链表判断环路和查找连接点;2.两个栈实现队列,如何实现多线程并发;3.两个串任意合并是否可以成为第三个串。(参考:http://www.cnblogs.com/yu-chao/archive/2012/02/26/2369052.html)。

       二面:当天晚上查微信状态变成了复试中,知道自己过了,晚上收到短信说后天早上9点半准时面试。中间问了一下其他二面后台问题,感觉不简单,是压力面啊。有几道题目分享一下,值得玩味:1.linux内核态和用户态,为什么要这么分?2.多重继承为什么会含有多个虚表指针而不是一个?3.tcp和udp的区别,tcp是怎么做错误处理的?4.读文件时系统和硬盘会做哪些工作。5.select、poll和epoll。供大家参考吧。去面试的当天,差点睡过头,急忙起来吃饭去了xjk,还好我到的时候才9点,面试官还没到。在那等了一会,9点20左右,HR叫到了我的名字,叫我去6号台面试。面试官看上去挺好的。首先自我介绍,同学问的问题基本上都没有问我,不过下面面了我将近两个小时,两个小时。。。。直到11点15才结束,当时我一看时间都吓尿了,一座就两个小时,我怎么一点都没有发觉。好了我讲重点分享经历给大家:1.谈项目细节,问的比较深,改进什么的,多并发一类处理,总之往大数据上靠,你怎么解决。2.写两段代码,一个是打印九九乘法表(简单,主要考代码风格吧),另一个是socket服务端接收代码(这个写的不好,主要考IO阻塞的、问了同步异步)。3.问了文件系统4.主要三个服务器方面的问题:a.从接收包,解包,提内容,存数据库期间会出现哪些异常,怎么解决;b.服务器宕机,为什么客户端还是可以工作,实现模型(加额外路由器进行管理);c.怎么实现多服务器负载均衡。

       三面:面试完二面,面试官就告诉我去hr那告诉他你过了,下午继续面试。Hr告诉我等到2点半可以面试,因为之前已经排满了,之后我说学校近就回学校了。下午4点hr发短信问我还在xjk附近吗?现在能不能来面试?我就说40分钟内可以到的。他说好等我。问了一些无伤大雅的问题。就是家庭情况、实习地点、最大优点、最骄傲的事情、和同学导师的关系、挣第一个月的钱怎么花等等。HR面很轻松,HR也很友好。

总结:1.腾讯笔试题目很重要,要把基础打牢,考一个高分,面试很加分(因为我一个同学一面二面基本没聊技术轻轻松松的过关了,不是报的后台)。

        2.做一个你值得骄傲的项目,而且要准备的很充分,各种你想到的细节你都准备一下,尤其算法细节、代码细节等等。

        3.面试很重要,要好好回答面试官的问题,会就说不会你就老实一点,可以引导到你擅长的领域中去,不止于过于尴尬,最后千万不能冷场,冷场很危险!

 

       最后,自己报的上海IEG后台开发,最后给了TEG深圳的Offer,有点奇怪,之前接到电话说过去上海的,难到还有调剂?这个就不知道了,听说一面的人就是你的leader,这样我就不奇怪是调剂了,可能是在面试之前就已经分好了方向。所以,最后,我可能去阿里云,杭州还是不错的。

      此文仅笔者个人观点,不妥之处见谅。写此文供大家参考,共勉!祝大家找到心仪的工作。

面的腾讯后台C++,面试地点西安,事业群选的无意向。 之后两面技术面的面试官全都是QQ浏览器的面试官。 前天一面面的很顺利,二面直接面跪了,今天早上通知下去的HR面

之前内推的时候面的微信支付,直接面跪了,这次学乖了,简历上事业群选的无意向

一面面的很短

1.去了先介绍介绍项目,然后就让你对项目的架构让你进行阐述,这个说了很久

2.说说你常用的库

3.说说你常用的数据结构

大量的树会退化成什么?

红黑树的性质,旋转、插入、删除操作

哈希表解决冲突的方法及优缺点

如何设计好的散列函数

说说后缀树

4.linux

linux下如何查看cpu使用率

用过哪些API

5.网络

TCP下Socket程序设计框架

time_wait状态产生的原因,危害及避免

6.C++

空类默认生成哪些成员函数

什么是多态

动态绑定的实现

内存泄漏原因及如何避免

7.程序设计

手写程序:两个大量无序无重复数组,筛出其中相同元素

解法:(1)哈希,时间复杂度低 (2)直接排序,空间复杂度低

然后聊了聊还面试了哪些公司,其他公司的面试题……

还给我介绍了学习经验,让多关注关注数据挖掘和机器学习

当场直接给我说过了,让我准备二面


第二天下午,二面的电话就直接打来了,被狠狠打击了

上来直接问项目经验

自己认为做的最好的项目是什么?

我就给他讲了讲自己做的http web server

然后问如何处理多线程并发

如果发生crash怎么解决

如何查看错误日志

介绍下linux上的权限

top命令能显示什么

用过STL吗,知道里面的内部实现吗

看过linux内核源码吗? 我回答没有,然后噩梦开始了

linux文件读取经过哪些过程?在内核源码中怎么实现(问了很多关于内核和源码的东西直接懵逼了,记不起来了)

如何打印当前工作目录路径,知道这个命令存放在哪吗

后来安慰了我两句,问了问愿不愿意来深圳,让我多注重实践

我问他过没过,他说让我、、消息,我心里就有点慌了


今天早上,微信查询显示HR面,下午就去了一面的那个酒店

我一进房间,一看是个挺年轻的男面试官,挺开朗的

然后就开始了

做个简单的自我介绍吧

知道你被分到哪个事业群了吗

知道以后实习的地点了吗

因为我在学校创建了一个社团,他就让我介绍介绍 这个说了很久

同学,朋友和老师对你的评价

你认为QQ浏览器有哪些特点呢

你认为BAT的发展方向有什么不同呢

说说你之前的实习或者面试经验

谈谈你的博客吧

有没有女朋友

如果让你做管理方面的事情,你愿意吗

你是如何看待深圳这个地方的

你是如何看待腾讯的企业文化的

如果7月份开始实习,你会不会拥有什么不方便

最后提问环节

问了问实习生伙食 他说有食堂

问了问腾讯需要的人才,除了技术,精神品质比较注重什么 他说是学习能力

问了问实习生住宿问题 他说、、七月来了深圳,开头几天帮着找住房,公司有补贴,但具体多少不知道

问他当HR多久了 他说光干HR就6年了  我感到很惊讶,因为我觉得他很年轻   他后来告诉我说,头发白了,他给染黑了=-=

我这个人比较喜欢聊天,和他聊了整整一个多小时

最后他把我送到了房间门口,叫我、、消息,我感觉他人挺不错


【腾讯一面】SNG后台 面经

作者:ZKKZKK

楼主西安的,C++方向,本科大三

先来了个自我介绍,我说我是那个学校的,学的计算机专业,就这两句

然后就是一连串算法代码题(除了让用shell写的那个,剩下的全写出来了)

1.strlen的常规写法 和 递归写法

2.strcpy 和strncpy 的代码和区别, 这里你要说本质区别,就是strcpy不安全,有可能cpy越界

3.快速排序和复杂度 代码

4.一个文本文件,包含很多字符串,要求用伪代码求出 每个字符串出现的次数 我用的 STL里的map实现的

这个题完了 面试官 要求我用shell脚本实现,我只说了先用sort排个序,然后后面不会了

5.现在要求你实现一个内存池,结构体怎么定义。 我就把操作系统有次实验课 老师让写首次适应算法  那个结构体改了下 写给他了

6.字符串“abc de fgh”反转为 "hgf ed cba"   :没办法,谁让我刷过牛客网的题,不会做的同学赶紧面壁去,答案不说了。 复杂度是o(n);

C++:

1.多态 概念和实现方式:  编译时多态和运行时多态,说出来就行了

2.STL容器 map的底层结构 红黑树  查找复杂度 lgn

3.多态中  父类析构函数可以设成虚函数,这是为了防止那种情况发生,可能造成什么后果:用父类指针 new一个子类对象,释放父类对象不会释放子类对象 有可能造成内存泄露

为什么构造函数不能设成虚函数:因为多态分编译时多态和运行时多态,父类设成虚构造函数,编译时无法确定父类的具体 类型,所以会报错

网络:

1.tcp 连接全过程,要求画图并标明两端状态和具体发送的字段 也就是三次握手  和四次挥手状态图

2.time_wait是什么,产生在 tcp连接那一端,为什么要有,如果没有的话 什么危害:答案估计大家都背的烂透了 我就不BB了

3.time_wait时间大概是多少:具体时间是4-6分钟,也就是2个报文最长生存时间

4.滑动窗口协议 的概念

5,阻塞控制中,阻塞窗口大小怎么动态变化的:具体的分两种情况说就行:一个是慢启动 一个是快重传,大家看下课本,这个要画图文字说不清

数据库和操作系统:

没有问,我也很郁闷,周围的人都有涉及,我这两方面都没问,但是这两个全都是重点

shell:

估计这位面试官shell懂得多,问了好多shell脚本问题,一个没答上来,就是算法题提到的那个

还有一个shell脚本,让我统计现在TCP连接 time_wait 状态的连接数:我说用netstat -nat 然后重定向到grep中 搜索time_wait就行了


面的腾讯后台C++,面试地点西安,事业群选的无意向。之后两面技术面的面试官都是QQ浏览器的面试官。前天一面面的很顺利,二面直接面跪了,今天早上通知下去的HR面。

之前内推的时候面的微信支付,直接面跪了,这次学乖了,简历上事业群选的无意向。
一面面的很短。
1.去了先介绍介绍项目,然后就让你对项目的架构让你进行阐述,这个说了很久
2.说说你常用的库
3.说说你常用的数据结构
大量的树会退化成什么?
红黑树的性质,旋转、插入、删除操作
哈希表解决冲突的方法及优缺点
如何设计好的散列函数
说说后缀树
4.linux
linux下如何查看cpu使用率
用过哪些API
5.网络
TCP下Socket程序设计框架
time_wait状态产生的原因,危害及避免
6.C++

空类默认生成哪些成员函数
什么是多态
动态绑定的实现
内存泄漏原因及如何避免
7.程序设计
手写程序:两个大量无序无重复数组,筛出其中相同元素
解法:(1)哈希,时间复杂度低 (2)直接排序,空间复杂度低
然后聊了聊还面试了哪些公司,其他公司的面试题……
还给我介绍了学习经验,让多关注关注数据挖掘和机器学习
当场直接给我说过了,让我准备二面


第二天下午,二面的电话就直接打来了,被狠狠打击了。
上来直接问项目经验。
自己认为做的最好的项目是什么?
我就给他讲了讲自己做的http web server
然后问如何处理多线程并发
如果发生crash怎么解决
如何查看错误日志
介绍下linux上的权限
top命令能显示什么
用过STL吗,知道里面的内部实现吗
看过linux内核源码吗? 我回答没有,然后噩梦开始了
linux文件读取经过哪些过程?在内核源码中怎么实现(问了很多关于内核和源码的东西直接懵逼了,记不起来了)
如何打印当前工作目录路径,知道这个命令存放在哪吗
后来安慰了我两句,问了问愿不愿意来深圳,让我多注重实践
我问他过没过,他说让我等消息,我心里就有点慌了


今天早上,微信查询显示HR面,下午就去了一面的那个酒店
我一进房间,一看是个挺年轻的男面试官,挺开朗的
然后就开始了
做个简单的自我介绍吧
知道你被分到哪个事业群了吗
知道以后实习的地点了吗
因为我在学校创建了一个社团,他就让我介绍介绍 这个说了很久
同学,朋友和老师对你的评价
你认为QQ浏览器有哪些特点呢
你认为BAT的发展方向有什么不同呢
说说你之前的实习或者面试经验
谈谈你的博客吧
有没有女朋友
如果让你做管理方面的事情,你愿意吗
你是如何看待深圳这个地方的
你是如何看待腾讯的企业文化的
如果7月份开始实习,你会不会有什么不方便
最后提问环节
问了问实习生伙食 他说有食堂
问了问腾讯需要的人才,除了技术,精神品质比较注重什么 他说是学习能力
问了问实习生住宿问题 他说等七月来了深圳,开头几天帮着找住房,公司有补贴,但具体多少不知道
问他当HR多久了 他说光干HR就6年了  我感到很惊讶,因为我觉得他很年轻   他后来告诉我说,头发白了,他给染黑了=-=
我这个人比较喜欢聊天,和他聊了整整一个多小时
最后他把我送到了房间门口,叫我等消息,我感觉他人挺不错

网络问题列表

1、http/https有什么区别?

2、tcp的三次握手和四次挥手?
3、tcp和udp的区别?

4、user-agent的作用?

算法基础问题列表

1、深度优先遍历和广度优先遍历的区别?

2、手写一个二叉搜索树?

3、手写一个堆排序?

4、手写一个快速排序?

5、手写一个归并排序?

6、手写一个选择排序?

7、手写一个插入排序?

8、手写一个冒泡排序?

9、各个排序的时间复杂度和空间复杂度以及稳定性?

设计模式问题列表

1、23种设计模式分别是什么?

2、MVC模式?

3、MVP和MVVM模式?

android基础问题
1、handler机制
2、activity、fragment、service的生命周期
3、android中事件分发传递机制
4、在android中跨进程通信有几种方式
5、四大组件
6、android各版本sdk差别
7、夜间模式怎么实现
8、app如何进行性能优化
9、android6.0的权限
10、activity的启动模式
11、自定义view的实现过程
12、RXjava的使用
13、解析json用Gson还是用fastjson
14、google推出的集合工具类guava
15、service和thread的区别
16、Android机型适配
17、activity和fragment的通信
18、自定义view的开发流程
19、热修复

java基础问题

1、饿汉式单例和懒汉式单例,懒汉式的单例有什么需要注意的地方?

2、String、StringBuffer、StringBuilder的区别?

3、手写一个生产者消费者模型?

4、多线程方面你都知道哪些类?

5、静态代码块、成员代码块、静态函数、构造函数、成员函数的执行顺序?

6、java中有哪些常用的集合框架,有什么区别?

7、强引用、软引用、弱引用、虚引用的区别?

8、Java内存泄漏的产生和避免?

9、java的垃圾回收机制原理?

10、虚拟机原理?


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u012067392/article/details/73456946

智能推荐

使用vue-pdf 给pdf加水印_vue pdf加水印-程序员宅基地

文章浏览阅读2.2k次。代码】使用vue-pdf 给pdf加水印。_vue pdf加水印

「 LaTex 」写论文,修改公式内行距的方法_\vspace设置段落行距-程序员宅基地

文章浏览阅读3.4k次。一.前言在官网给的LaTex模板里作业,有时会遇到带有分式或大括号的公式顶端重叠的问题,下面给出解决方法。二.技术实现使用临时修改行距指令\vspace{0.5ex}*{0.5ex}中的数字可以任意调整。三.实例展示修改前如图:修改后如图:*亲测有效..._\vspace设置段落行距

eclipse jsEclipse javascript编辑器-程序员宅基地

文章浏览阅读7.2k次,点赞17次,收藏15次。Eclipse JavaScript插件前言一、JsEclipse是什么?二、使用步骤1.下载2.安装插件总结前言免费下载jseclipse插件,看不惯那些赚积分的。关键字:eclipse、eclipse插件、eclipse js插件、eclipse js编辑器、eclipse jsEclipse、jseclipse、JavaScript编辑器、好用的JavaScript编辑器一、JsEclipse是什么?当然是*.js的编辑器了,代码提示,关键字高亮,重要是好湿,啊不,好使。二、使用步骤_jseclipse

02.Web安全基础、第二章常见Web漏洞解析、第二节CSRF-程序员宅基地

文章浏览阅读68次。目录: 01 CSRF是什么 02 CSRF原理分析 03 漏洞演示 view-source:网址 查看源代码 ..._web漏洞深度剖析第二章的javascript

Filter Concatenation理解_filter conca- tenation-程序员宅基地

文章浏览阅读9.6k次,点赞13次,收藏19次。学习深度学习,有几篇论文大多数人都会读到。其中一篇就是《Going deeper with convolutions》,google在这片论文中提到了一个inception模型(示意版,简单模式):对于我这种基础知识不牢靠,学习时间非常短的人来说,对深度神经网络的理解还没到位,经常看论文一知半解,很多概念搞不清楚。看到上面这个图,我就产生了一个疑问:上图中的Filter C_filter conca- tenation

MyBatis注解方式批量插入操作_mapper批量插入注解-程序员宅基地

文章浏览阅读1.7k次。转载自:https://blog.csdn.net/u011974797/article/details/81873384 @Insert({ "<script>", "insert into table_name(column1, column2, column3) values ", "<foreach collection='t..._mapper批量插入注解

随便推点

Linux系统编程_信号_linux开发板发送ctl+d信号当前终端-程序员宅基地

文章浏览阅读249次。1 信号的概念基本属性信号4要素2 产生信号5种方法kill函数alarm函数setitimer函数3 信号集操作函数信号屏蔽字未决信号集4 信号的捕捉注册信号捕捉函数_linux开发板发送ctl+d信号当前终端

ip层本机接受数据包处理_对于递交给本机的数据包-程序员宅基地

文章浏览阅读514次。当数据包的目的地址是本机是,Ip_rcv_finish函数就会将skb-&gt;dst-&gt;input函数指针初始化为ip_local_deliver,ip层本地发送数据包也分为两个阶段分配分别有两个处理函数:ip_local_deliver和ip_local_deliver_finish。本地转发数据包的首要任务是重组数据包,前送的数据包可以不要重组,前送可以转发每个分片数据包。一、本地..._对于递交给本机的数据包

打开cmd的四种方式和管理员运行以及常用Dos基本命令_资源管理器的地址栏前面加上cmd路径-程序员宅基地

文章浏览阅读2.3k次。1.打开cmd的方式1.开始--系统--命令提示符2.Win + R 键,输入cmd 打开控制台3.在电脑桌面任意的空白处,按住shift键 + 鼠标右键点击-->在此处打开Powershell命令行窗口4.资源管理器的地址栏前面加上cmd路径5.管理员身份运行:开始--系统--命令提示符--右键选择管理员身份运行2.常用的Dos命令#切换盘符 直接输入: D: 或 E: (英文:),即可跳转到D盘或E盘#查看当前目录..._资源管理器的地址栏前面加上cmd路径

002,Jquery对象和Js对象的区别与转换_jquery包装集对象和lavascript对象有什么不一样,它们二者怎么实现转换?-程序员宅基地

文章浏览阅读103次。Jquery对象和js对象的区别与转换V哥教育QQ群:673215016官网:http://www.vgxit.com1,什么是Jquery我们通过jquery的$方法获取到的对象,和我们原生的js代码获取到的对象,是有一些区别的。当然,他们之前也有一些联系,可以相互转换。<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <tit..._jquery包装集对象和lavascript对象有什么不一样,它们二者怎么实现转换?

SystemVerilog之时序块的采样与驱动_时钟块 提前采样延后驱动-程序员宅基地

文章浏览阅读793次。由于时钟偏移等因素的存在,用某个时钟clk驱动信号d1,在实际测试中总是会出现信号d1相对于clk总是会有一个无限小的延时(delta-cycle),为解决这一实际问题可采用本文的几种方法。_时钟块 提前采样延后驱动

16.【进阶】特征提升之特征筛选----feature_selection_corth-features-causal-feature-selection-via-orthog-程序员宅基地

文章浏览阅读1.3k次。#-*- coding:utf-8 -*-#特征筛选的目标:一句话来说就是去冗余特征;与PCA不同,不会修改特征值,而是寻找那些对模型性能提升较大的少量特征#使用Titanic数据集,通过特征筛选的方法一步步提升决策树的预测性能import pandas as pdtitanic = pd.read_csv('http://biostat.mc.vanderbilt.edu/wiki..._corth-features-causal-feature-selection-via-orthogonal-search