字节跳动 抖音 IOS端研发面经(求你让我帮忙内推吧

抖音(已拿offer

#抖音秋招提前批开始了#

求求大家让我帮你们内推吧。

啥子岗位都有,客户端/后端/算法/测试都可以的。

客户端岗位不要求之前有经验。

填内推码我全程帮你问进度( *`ω´)

内推码: UTTGJRM

投递链接: https://job.toutiao.com/s/irNM9Tke

------------------------------------------------------分割线------------------------------------------------------------

0.个人背景:

985大三科班,主要用C++,编程能力拉跨,理论基础还行,刷了1.5遍《剑指offer》,刷了leetcode上的初级中级,项目无IOS端经验,2个都是NLP项目(害,但没啥关系

1.靠回忆复盘,这几轮大概涉及到的基础知识:

1.1 C++基础:

New和malloc的区别

Static关键字的作用

C++多态的实现

虚函数的作用

虚函数表

有虚函数的类的内存存储情况

构造函数和析构函数能不能是虚函数,原因

智能指针(各个智能指针是怎样实现的+引用次数啥时候改变+循环引用解决方法)

C++类型转换(cast)

内存对齐

C++内存管理有哪些区,各区作用

堆区和栈区的区别

内存泄漏的可能原因

Const的作用

STL的map是基于什么实现的

STL底层vector的实现原理(我前一晚才看,面试时就忘了….

1.2 数据结构

口述快排的实现方法

TOP K问题:十亿整数中前K最大的数,给出多个解决方案,并且比较各个的时间复杂度。

红黑树和二叉平衡树的区别,及其特点

1.3 计网

TCP/UDP的区别

TCP的三次握手与四次挥手

TCP的重发机制和nagle算法

拥塞控制的过程

流量控制与拥塞控制的区别

IPV4和IPV6的区别

1.4 http

http状态码

http与https的区别

https加密传输如何实现

对称加密和非对称加密的区别

浏览器中输入一个URL发生什么,整个流程和用到的协议

http/https 1.0、1.1、2.0的特点和区别

1.5 安全相关

中间人攻击

https会遭受到怎样的不安全问题

1.6 数据库

事务的ACID

隔离级别

脏读、重复度、幻像读

我一个项目里面用到了数据库,问了我具体是怎样设计数据库的。

1.7 操作系统

进程与线程区别?

线程比进程具有哪些优势?

LINUX中进程和线程使用的几个函数?

线程同步的方法

互斥的解决方法

操作系统有哪些锁

进程通讯方法

虚拟内存

进程调度

死锁必要条件

共享内存的原理

1.8 设计模式

单例模式

Stl中还用到了哪些模式

2.现在通过回忆还能分清在哪轮面试的问题:

2.1.初面

算法题:两个栈实现一个队列

2.2.二面:

算法题忘了,应该是很简单,不然我应该有印象。

2.3.三面:

问项目。

由项目中的NLP引申出NLP自动写代码对程序员写代码的影响。(NLP关注比较多,所以我扯了一大堆

算法题:把所有0放左边,非0放右边,时间复杂度O(n)

2.4.四面:

问项目,但因为我做的是NLP,跟这个岗位也没啥太大关系。

所以主要在项目感受体会方面来问:

l 遇到啥困难,咋解决的?

l 为啥用这个算法模型,不用别的

l 如果再做一次,你觉得可以从哪些方面改进?

l 上一点我说的是我觉得当时的用的软件开发模式很有问题,应该先快速原型,再用迭***。然后问我还知道啥其他的软件开发模式吗。(我完全记不得,干嘛非得把自己往坑里引。

https会遭受到怎样的不安全问题

STL的vector底层实现原理

操作系统是怎样处理复制和粘贴的?(引出进程/中断的相关话题

关注了科技圈最近的啥新项目,你觉得这个新项目会带来怎样的影响?

3.一些小建议:

3.1 关于答基础知识:面试官问一个点,你晓得好多就扯好多,不要几个字就回答完了。这样的话可以在有限时间内尽量展现自己的优点。当然你是全能王另说。同时不要扯到自己不熟悉的点上,人生不易,何必给自己挖坑呢兄弟。

3.2 关于答项目:自己首先要做好准备,练习一遍你的项目要怎样说别人才能听得懂。同时还要展现你的学习能力、困难解决能力,看看你的项目里有哪些点是值得别人去问的,在讲的时候就故意抛出来。

#字节跳动##iOS工程师##面经#
全部评论
大三真的能懂这么多吗😭
1 回复 分享
发布于 2021-05-05 00:37
leader面算法吗
点赞 回复 分享
发布于 2021-09-10 17:03
你好请问四面不是HR面吗还要面技术吗
点赞 回复 分享
发布于 2020-06-21 13:24
力扣初级中级。。得做了8.900道题了吧。。
点赞 回复 分享
发布于 2020-05-25 13:34
同学的业务线是?
点赞 回复 分享
发布于 2020-05-25 02:52
哇哦,楼主好棒呀,太谦虚了
点赞 回复 分享
发布于 2020-05-24 23:13

相关推荐

点赞 评论 收藏
分享
从输入URL到页面加载发生了什么:总体来说分为以下几个过程: 1.DNS解析 2.TCP连接 3.发送HTTP请求 4.服务器处理请求并返回HTTP报文 5.浏览器解析渲染页面 6.连接结束。简述了一下各个过程的输入输出作用:以下是对从输入 URL 到页面加载各过程的输入、输出或作用的一句话描述:DNS 解析: 输入:用户在浏览器地址栏输入的域名(如 www.example.com)。输出:对应的 IP 地址(如 192.168.1.1)。作用:将易于记忆的域名转换为计算机能够识别和用于网络通信的 IP 地址,以便浏览器与目标服务器建立连接。TCP 连接: 输入:浏览器获得的服务器...
明天不下雨了:参考一下我的说法: 关键要讲出输入网址后涉及的每一个网络协议的工作原理和作用: 涉及到的网络协议: HTTP/HTTPS协议->DNS协议->TCP协议->IP协议->ARP协议 面试参考回答: 第一次访问(本地没有缓存时): 一般我们在浏览器地址栏输入的是一个域名。 浏览器会先解析 URL、解析出域名、资源路径、端口等信息、然后构造 HTTP 请求报文。浏览器新开一个网络线程发起HTTP请求(应用层) 接着进行域名解析、将域名解析为 IP 地址 浏览器会先检查本地缓存(包括浏览器 DNS 缓存、操作系统缓存等)是否已解析过该域名 如果没有、则向本地 DNS 服务器请求解析; 本地服务器查不到会向更上层的 DNS 服务器(根域名服务器->顶级域名服务器->权威域名服务器询问)递归查询 最终返回该域名对应的 IP 地址。(应用层DNS协议)DNS 协议的作用: 将域名转换为 IP 地址。 由于 HTTP 是基于 TCP 传输的、所以在发送 HTTP 请求前、需要进行三次握手、在客户端发送第一次握手的时候、( 浏览器向服务器发送一个SYN(同步)报文、其中包含客户端的初始序列号。TCP头部设置SYN标志位、并指定客户端端口 同时填上目标端口和源端口的信息。源端口是浏览器随机生成的、目标端口要看是 HTTP 还是 HTTPS、如果是 HTTP 默认目标端口是 80、如果是 HTTPS 默认是 443。(传输层) 然后到网络层:涉及到(IP协议) 会将TCP报文封装成IP数据包、添加IP头部,包含源IP地址(浏览器)和目标IP地址(服务器)。IP 协议的作用: 提供无连接的、不可靠的数据包传输服务。 然后到数据链路层、会通过 ARP 协议、获取目标的路由器的 MAC 地址、然后会加上 MAC 头、填上目标 MAC 地址和源 MAC 地址。 然后到物理层之后、直接把数据包、转发给路由器、路由器再通过下一跳、最终找到目标服务器、然后目标服务器收到客户的 SYN 报文后,会响应第二次握手。 当双方都完成三次握手后、如果是 HTTP 协议、客户端就会将 HTTP 请求就会发送给目标服务器。如果是 HTTPS 协议、客户端还要和服务端进行 TLS 四次握手之后、客户端才会将 HTTP 报文发送给目标服务器。 目标服务器收到 HTTP 请求消息后、就返回 HTTP 响应消息、浏览器会对响应消息进行解析渲染、呈现给用户
点赞 评论 收藏
分享
评论
11
102
分享

创作者周榜

更多
牛客网
牛客企业服务