好家伙,

线上面试,总时长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开发实习生-飞书的更多相关文章

  1. 字节跳动后端开发实习生面试(Python)

    一面: 1.自我介绍. 2.介绍“工大小美”项目相关. 3.Python中的GIL(全局解释器锁),以及哪种情况下使用python的多线程性能有较大的提升. 4.项目中用到了SQLite数据库,如果有 ...

  2. 字节跳动 iOS Heimdallr 卡死卡顿监控方案与优化之路

    点这里申请 本文主要介绍Heimdallr对卡死.卡顿异常的监控原理,并结合长时间的业务沉淀发现的问题进行不断迭代和优化,逐步实现全面.稳定.可靠的历程. 作者:字节跳动终端技术--白昆仑 前言 卡死 ...

  3. [知乎] 刚开始学习 iOS 开发有什么书推荐呢?

    http://www.zhihu.com/question/19649679 我来说说我学习的过程:(无耻的使用一个回答 回答了很多问题.^^) 第一步,精读 Stephen G. Kochan 的& ...

  4. iOS开发讯飞语音的集成

    1.进入官网注册账号,登陆,注册,应用. 2,下载sdk  导入系统库. 3,关闭bitcode 4,初始化讯飞语音. NSString * initString = [[NSString alloc ...

  5. iOS 开发中的争议(二)

    这是该系列的第二篇.在本文中,我想讨论的是:对于 UI 界面的编写工作,到底应该用 xib/storyboard 完成,还是用手写代码来完成? 本着 “使用过才有发言权” 原则,我介绍一下我的经历: ...

  6. 想进大厂?字节跳动等独角兽公司都在招募Python工程师!(Python就是第一语言)

    在本文章中,作者通过自身经历,力求客观的谈谈个人选择学习Python的动机,以及独角兽公司对Python工程师的要求及薪资. 从目前各种迹象(企业招聘,语言排名等)看来Python相对Java应该是暂 ...

  7. 2020年Android开发最新整理阿里巴巴、字节跳动、小米面经,你不看看吗?

    前言 2020年是转折的一年,上半年疫情原因,很多学android开发的小伙伴失业了,虽找到了一份工作,但高不成低不就,下半年金九银十有想法更换一份工作,很多需要大厂面试经验和大厂面试真题的小伙伴,想 ...

  8. 刷到血赚!字节跳动内部出品:722页Android开发《360°全方面性能调优》学习手册首次外放,附项目实战!

    前言 我们平时在使用软件的过程中是不是遇到过这样的情况:"这个 app 怎么还没下载完!"."太卡了吧!"."图片怎么还没加载出来!".&q ...

  9. iOS开发|从小公司到进大厂,我的进阶学习之旅!

    iOS高级进发 OC源码下载地址 苹果开发文档 如何阅读苹果开发文档 GNUstep是GNU计划的项目之一,它将Cocoa的OC库重新开源实现了一遍 源码地址:http://www.gnustep.o ...

  10. 一周内被程序员疯转3.2W次,最终被大厂封杀的《字节跳动Android面试手册》!

    一眨眼又到金三银四了,不知道各位有没有做好跳槽涨薪的准备了呢? 今天的话大家分享一份最新的<字节跳动Android面试手册>,内容包含Android基础+进阶,Java基础+进阶,数据结构 ...

随机推荐

  1. docker构建镜像——Dockerfile

    from RUN CMD EXPOSE LABEL ENV COPY 格式 COPY [--chown=<用户>:<组>]<源>...<目的> COPY ...

  2. Java中的空指针异常 java.lang.NullPointerException

    空指针异常 属于运行错误,java.lang.NullPointerException 原因:当引用名称的值为null时,就不能方法某个对象中的属性或方法,如果非要访问则就出现空指针异常 解决办法:在 ...

  3. promise async 和 await

           // promise 是专门用于解决回调地狱的         //         专门用于执行异步程序时使用promise语法         // 语法形式:         // ...

  4. OOP第二阶段题集总结

    一.前言 知识点:考察继承和多态为多,其中还涉及迭代器的使用,在每个题集中都有一个综合性题目设计多方面知识点考试,有List类和HashMap的使用以及正则表达式的运用,并且注重考查设计,理解类与类之 ...

  5. ABC319题解

    直接从 D 开始了. D 可可爱爱的二分捏. check 就按照题目里写的就行了. 然后 \(l\) 的初值要注意一下,就是 \(\max^{i \le n}_{i=1}a_i\). 代码: #inc ...

  6. windows 开发者注册后写代码,这个给钱吗?

  7. SRE 排障利器,接口请求超时试试 httpstat

    夜莺资深用户群有人推荐的一个工具,看了一下真挺好的,也推荐给大家. 需求场景 A 服务调用 B 服务的 HTTP 接口,发现 B 服务返回超时,不确定是网络的问题还是 B 服务的问题,需要排查. 工具 ...

  8. 阿里云OSS图片上传和显示注意点

    1. java.lang.IllegalArgumentException: The object key "/image-业务名称/20230818/20230818-订单号参数-acci ...

  9. redisTemplate缓存方法template code

    import com.alibaba.fastjson.JSONObject; @Autowired private RedisTemplate redisTemplate; String PREFI ...

  10. python post or get请求demo

    # python post or get请求demo import requests; import json; headers={ "Content-Type":"ap ...