字节跳动客户端实习二三面

二面(80min)

1.首先自我介绍没什么好说的

2.简历上写的语言是C/C++/Python,先讲一下这三种语言的区别吧

其实就是面向过程、面向对象和解释性语言的区别,由于一面问过面向过程和面向对象的区别以及各自的应用场景,因此后来专门查了一下,信誓旦旦地讲完了,结果面试官来了句你讲的这不是根本上的区别,最根本的区别是什么?我懵逼表示没有深入地思考过,面试官说C语言底层是采用goto语句实现程序的跳转,而C++可以用类的接口实现跳转。接着追问那他们跟Python的区别是什么呢,我说Python是解释性语言,balabala扯了几句,面试官还是说这不是根本区别,然后简单跟我讲了下。

后来自己查了下:编译性语言和解释性语言最大的区别就是,编译性语言是整个程序编译完之后才能运行,只须编译一次就可以把源代码编译成机器语言,后面的执行无须重新编译,直接使用之前的编译结果就可以,程序执行效率比较高,但比较依赖编译器,因此跨平台性差一些;而解释性语言,源代码不能直接翻译成机器语言,而是先翻译成中间代码,再由解释器对中间代码进行解释运行,程序不需要编译,程序在运行时才翻译成机器语言,每执行一次都要翻译一次,运行效率一般相对比较低,依赖解释器,但跨平台性好。

3.类和结构体的区别是什么

我傻傻地问是C++中类和结构体的区别么,面试官说其实我问的是类和结构体这两种结构的区别,你可以用某种语言里的举例,然后我把C++中类和结构体的区别讲了下(默认继承的方式和类能用作模板类参数),面试官表示否认三连,说我说的还是表面的东西,类是引用类型,结构体是值类型,他们的区别是什么?然后才终于明白问题是什么(o(╥﹏╥)o),接着回答两者区别。

4.多进程的通信方式

管道(无名管道和有名管道)、系统IPC(消息队列、信号量、共享内存、信号等)、套接字socket(不同主机间进程的通信)。

知道管道的实现机制吗?不知道。那举个应用的例子吧,比如手机上两个app是两个进程对吧,那当发送消息通知的时候这两个进程是怎么实现通信的呢?还是很懵逼,弱弱地说可能是信号量+共享内存吧,信号量实现进程间的同步,共享内存使多个进程可以共享同一块内存空间。然后面试官又问那你知道管道和系统IPC的区别吗,什么时候用管道,什么时候用系统IPC?还是表示不清楚。。。

5.堆和栈有什么不同

堆是动态分配内存,栈有静态和动态分配;堆是不连续的内存空间,用一个空闲链表存储,栈是一块连续的内存空间,由系统预先设定好;堆的生命周期长,栈的生命周期短;new/delete分配和释放的内存是堆上的,栈主要用于函数栈;堆地址是向上增长的,栈是向下增长的。

对线程了解的多么?不多。那应该大概有个概念吧,线程可以共享内存,那两个线程可以共享栈内存吗?然后看我有点懵逼,面试官举了个例子,分析了下为什么两个线程可以共享堆内存,然后让我分析下可不可以共享栈内存,于是按照面试官的分析方式分析了下线程不可以共享栈内存。

6.问TCP和UDP的区别,并举几个应用的例子

从是否面向连接、服务对象、可靠性、头部长度、拥塞控制和流量控制、长度的动态变化、应用场景几个方面都讲了一下。

例子,UDP举了下DNS服务器和面试时的视频连接,TCP举了下微信聊天的文字、HTTP、FTP。

然后面试官纠正说HTTP不能完全说是TCP连接,因为HTTP3.0已经提出了QUIC机制,相当于是一种UDP连接。好吧,其实学校里开会的时候貌似听老板提到过,确实是这样没错。

7.对比HTTP下载、FTP下载以及P2P的下载,在本质上有什么差别

并不知道,就瞎扯了一点C/S跟P2P的区别,面试官说这是中心化和去中心化的区别,就算把这个当做FTP和P2P的区别,那HTTP下载和FTP下载的区别呢?这个是真不清楚。。。然后面试官让我平时一定要多留意多思考身边存在的问题。。。

8.操作系统中的各种锁,比如互斥锁、条件锁、读写锁、递归锁等,它们各自的应用场景是什么

9.说一下死锁形成的条件

10.有没有自己实践过多线程

没有,后面自己应该多去学习一下,动手实现一下

11.参加过物联网比赛,那了解汇编吗

本科的时候学过,忘得差不多了。。。

12.学校里学了什么课程,哪些是自学的

13.贴一段实际工作中用到的代码给面试官看下代码风格

14.算法题:

1).输入一个整数将它转化为16进制输出

2).股市问题,给一个数组,比如[5, 10, 1, 9, 8, 6],输出在哪天买入和哪天卖出可以获得最大利益

三面(40min)

1.专业本科和硕士都是自动化,有什么计算机相关的课程吗,对ios了解多少

2.挑简历上的一个项目讲一讲

3.TCP三次握手建立连接的过程

4.为什么TCP建立连接是3次握手,而断开连接是4次挥手

5.说一下TCP的慢启动

6.线程和进程的区别

7.讲讲C++的三个特性

8.多态分为重载和重写,说说它们的区别

9.在浏览器网址输入百度,接下来是怎么一个流程

10.HTTP建立连接时如何找到Web服务器的位置,如果服务器距离很远的话ARP协议还要广播寻找MAC地址吗

11.知道广播风暴吗

12.了解路由算法吗

总的来说,感觉二面问的还是挺深入的,比较区别的时候,会刨根问底,有的时候也会让你举几个应用的例子,不过面试官人还是很好的,不明白的会循循善诱;三面面试官电脑出了问题,就电话面的,题目问的都比较基础,也没出算法题,比较幸运。

二面面试官说得对,自己周围还有很多值得学习的东西,自己还是太菜了,学无止境啊。。。

发布了5 篇原创文章 · 获赞 7 · 访问量 334

猜你喜欢

转载自blog.csdn.net/AnDiXL/article/details/104847022