大厂面经: 字节跳动 iOS开发实习生-飞书
好家伙,
线上面试,总时长1h30mins左右
整体流程:
0.自我介绍(0-2mins)
1.做的比较难的事情(15min)
我讲我之前写的一个低开平台,写了一个撤销回退功能,提了个pr,用了节流,用了命令模式
1.1.节流怎么用的?用在哪?为什么用?
1.2.节流把前面的触发直接clean了还是怎么处理?会不会清除掉一些关键变化?
1.3会不会导致某些变化无法触发?如何更好的优化?
2.前端知识+计算机四大件拷打(25min)
2.1.用户态和内核态的区别?
(忘了,直接跳)
2.2. https或者http连接过程发生了什么?
讲了tcp, dns代理返回ip
接着问2.2.1.TCP三次握手过程?
2.2.2.握手过程中唯一标识符作用?
2.2.3.DNS解析过程,如何解析?
2.3. TCP/IP协议多少层?每层作用?
2.3.1.为什么要分层?
2.4. 有没有用过Rust?(每太听清楚问的什么,好像是这个)
没有,直接跳
2.5. 用过什么设计模式,展开说?
我讲了订阅发布模式,命令模式
2.5.1.命令模式解决了什么问题?
2.5.2.发布订阅模式怎么用的?解决了什么问题?
2.6.用过什么数据结构?为什么用?怎么用的?
2.7. 异步有了解过吗?讲讲异步
3.算法(35min)
3.1.算法一(20min)
三数之和
题目描述
给你一个数组,有N个数,怎么判断三个数之和等于某个数,每个数只能使用一次
let number = [10, 21, 3, 14, 5...]
input: 9
output: true
input:2
output: false
要求代码实现
会写
3.2.算法二(10min)
数据源:a->一,b->二 ,c->三,d->四
输入: a 返回 [一、三], ab返回[三],b返回[二、四],bc返回[四]
要求给出思路,
面试官给了提示,说是类似拼音输入法,用树去实现
我妹答出来
4.最后反问(10min)
5.算法答案补充
5.1.第一题:
function threeSum(nums, target) {
nums.sort((a, b) => a - b);
for (let i = 0; i < nums.length - 2; i++) {
let left = i + 1;
let right = nums.length - 1; while (left < right) {
const sum = nums[i] + nums[left] + nums[right]; if (sum === target) {
return true;
} else if (sum < target) {
left++;
} else {
right--;
}
}
}
return false;
}
Array.sort的复杂度为O(nlogn)
外层循环为n-2,内层循环为n-1,算O(n^2)
平均复杂度为O(n^2)
5.2.第二题:
使用前缀树实现
一组单词,adv,age,ant,ate,inn,int
用前缀树去储存大概长这样:
class TrieNode {
constructor() {
this.children = {};
this.outputs = [];
}
} class Trie {
constructor() {
this.root = new TrieNode();
} insert(key, output) {
let node = this.root;
for (const char of key) {
if (!node.children[char]) {
node.children[char] = new TrieNode();
}
node = node.children[char];
}
node.outputs.push(...output);
} search(key) {
let node = this.root;
for (const char of key) {
if (node.children[char]) {
node = node.children[char];
} else {
return [];
}
}
return node.outputs;
}
} // 初始化Trie树
const trie = new Trie();
trie.insert('a', ['一', '三']);
trie.insert('ab', ['三']);
trie.insert('b', ['二', '四']);
trie.insert('bc', ['四']); // 查询
console.log(trie.search('a')); // 输出: ['一', '三']
console.log(trie.search('ab')); // 输出: ['三']
console.log(trie.search('b')); // 输出: ['二', '四']
console.log(trie.search('bc')); // 输出: ['四']
6.总结与反思
从整个整体的面试过程来看,大厂还是更加注重基础,四大件和算法,狠狠的补
大厂面经: 字节跳动 iOS开发实习生-飞书的更多相关文章
- 字节跳动后端开发实习生面试(Python)
一面: 1.自我介绍. 2.介绍“工大小美”项目相关. 3.Python中的GIL(全局解释器锁),以及哪种情况下使用python的多线程性能有较大的提升. 4.项目中用到了SQLite数据库,如果有 ...
- 字节跳动 iOS Heimdallr 卡死卡顿监控方案与优化之路
点这里申请 本文主要介绍Heimdallr对卡死.卡顿异常的监控原理,并结合长时间的业务沉淀发现的问题进行不断迭代和优化,逐步实现全面.稳定.可靠的历程. 作者:字节跳动终端技术--白昆仑 前言 卡死 ...
- [知乎] 刚开始学习 iOS 开发有什么书推荐呢?
http://www.zhihu.com/question/19649679 我来说说我学习的过程:(无耻的使用一个回答 回答了很多问题.^^) 第一步,精读 Stephen G. Kochan 的& ...
- iOS开发讯飞语音的集成
1.进入官网注册账号,登陆,注册,应用. 2,下载sdk 导入系统库. 3,关闭bitcode 4,初始化讯飞语音. NSString * initString = [[NSString alloc ...
- iOS 开发中的争议(二)
这是该系列的第二篇.在本文中,我想讨论的是:对于 UI 界面的编写工作,到底应该用 xib/storyboard 完成,还是用手写代码来完成? 本着 “使用过才有发言权” 原则,我介绍一下我的经历: ...
- 想进大厂?字节跳动等独角兽公司都在招募Python工程师!(Python就是第一语言)
在本文章中,作者通过自身经历,力求客观的谈谈个人选择学习Python的动机,以及独角兽公司对Python工程师的要求及薪资. 从目前各种迹象(企业招聘,语言排名等)看来Python相对Java应该是暂 ...
- 2020年Android开发最新整理阿里巴巴、字节跳动、小米面经,你不看看吗?
前言 2020年是转折的一年,上半年疫情原因,很多学android开发的小伙伴失业了,虽找到了一份工作,但高不成低不就,下半年金九银十有想法更换一份工作,很多需要大厂面试经验和大厂面试真题的小伙伴,想 ...
- 刷到血赚!字节跳动内部出品:722页Android开发《360°全方面性能调优》学习手册首次外放,附项目实战!
前言 我们平时在使用软件的过程中是不是遇到过这样的情况:"这个 app 怎么还没下载完!"."太卡了吧!"."图片怎么还没加载出来!".&q ...
- iOS开发|从小公司到进大厂,我的进阶学习之旅!
iOS高级进发 OC源码下载地址 苹果开发文档 如何阅读苹果开发文档 GNUstep是GNU计划的项目之一,它将Cocoa的OC库重新开源实现了一遍 源码地址:http://www.gnustep.o ...
- 一周内被程序员疯转3.2W次,最终被大厂封杀的《字节跳动Android面试手册》!
一眨眼又到金三银四了,不知道各位有没有做好跳槽涨薪的准备了呢? 今天的话大家分享一份最新的<字节跳动Android面试手册>,内容包含Android基础+进阶,Java基础+进阶,数据结构 ...
随机推荐
- 7.26考试总结(NOIP模拟24)[matrix·block·graph]
你那无聊的幻想,就由我来打破! 前言 补坑中.. 我都不知道自己这场模拟赛怎么打的了. 非常玄学,前三个小时一直在想正解,然后最后 20min 感觉 T1 不太稳,就又加上了一个暴力. 后来一看只有最 ...
- python-去掉写入csv文件的多余的一行空白行
如执行下面的代码: 1 import csv 2 3 if __name__ == "__main__": 4 5 content1 = ['hello'] 6 content2 ...
- 红白机基本原理(二) CPU
CPU 首发公号:Rand_cs NES 使用的 CPU 为 6502,但与标准的 6502 有些许不同,最大的不同在于 NES 使用的芯片拥有一个 pAPU(pseudo-Audio Process ...
- Linux扩展篇-shell编程(五)-流程控制(一)-if语句
基本语法: (1)单分支 if [ condition ];then statement(s) fi 或 if [ condition ] then statement(s) fi (2)多分支 if ...
- .NET5 .NET CORE 使用Apollo
Apollo默认有一个"SampleApp"应用,"DEV"环境 和 "timeout" KEY. nuget 中下载 "Com. ...
- koishi常用插件推荐
今天给大家做一个常用插件的推荐 以下将插件归为几个大类,按类型推荐 1. 日常相关 点歌 插件名:koishi-plugin-music-downloadvoice-api 功能介绍: 语音点歌 - ...
- winform遍历控件的Controls.OfType<>方法
页面TextBox控件较多时,可以使用类似的名字,方便遍历时整体的修改,可以使用Controls.OfType<TextBox>()获取所有文本框: 需要引用命名空间System.Linq ...
- nginx访问日志
访客日志 处理日志模块的官网教程 https://nginx.org/en/docs/http/ngx_http_log_module.html 创建nginx访问日志 日志对于程序员很重要,可用于问 ...
- 什么是spring框架?
spring是一个开放源代码的设计层面框架,它解决的是业务逻辑层和其他各层的松耦合问题,是一个分层的javaEE一站式轻量级开源框架
- [DP] DP优化总结
写在前面 $ DP $,是每个信息学竞赛选手所必会的算法,而 $ DP $ 中状态的转移又显得尤为关键.本文主要从状态的设计和转移入手,利用各种方法对朴素 $ DP $ 的时间复杂度和空间复杂度进行优 ...