首页 > 其他分享 >大厂面经: 字节跳动 iOS开发实习生-飞书

大厂面经: 字节跳动 iOS开发实习生-飞书

时间:2024-07-31 23:06:06浏览次数:12  
标签:node nums trie 面经 iOS char let children 飞书

好家伙,

线上面试,总时长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.总结与反思

从整个整体的面试过程来看,大厂还是更加注重基础,四大件和算法,狠狠的补

标签:node,nums,trie,面经,iOS,char,let,children,飞书
From: https://www.cnblogs.com/FatTiger4399/p/18335712

相关文章

  • ios CCUIView.m
    ////CCUIView.h//CCFC////#import<Foundation/Foundation.h>#import"CCUIButton.h"//创建UI控件的宏#defineUI_ALLOC_CREATE(UIctlName,x,y,width,height)[[UIctlNamealloc]initWithFrame:CGRectMake((x),(y),(width),(height))]#defi......
  • ios CCNSURL.m
    ////CCNSURL.h//CCFC////#import<Foundation/Foundation.h>@interfaceNSURL(cc)+(NSString*)telephonePrefix;+(NSString*)smsPrefix;+(NSString*)mailPrefix;+(NSString*)googleMapPrefix;@end////CCNSURL.m//CCFC////......
  • ios CCUIToolBar.m
    ////CCUIToolbar.h//CCFC////#import<Foundation/Foundation.h>#import<UIKit/UIToolbar.h>@interfaceUIToolbar(cc)//createacommontoolbar+(UIToolbar*)createCommonToolbar:(CGRect)rectitems:(NSArray*)buttonItemArr;@end /......
  • 建议所有iPhone升级!苹果iOS 17.6正式版发布:重要错误修复
    苹果发布iOS17.6正式版升级,本次更新距离iOS17.5发布已有两个月时间。升级日志显示,iOS17.6提供重要的错误修复和安全性更新,苹果建议所有用户安装。不出意外的话,iOS17.6将是iOS17最后几次更新之一,后续将仅提供必须的安全更新和Bug修复,苹果的开发重心会转移到iOS18上。根据......
  • vue基础知识总结(2)--- axios的使用
    一.下载Vue3:选择自己想要下载的项目文件夹,cmd回车打开命令栏,执行:cnpminitvue@latest然后等待一会就可以创建一个项目,并更改项目名:√请输入项目名称:...vue-project之后按照提示输入对应的语句:cdvue-projectcnpminstall我们等待几秒Vue3项目就成功创建出来了......
  • 如何让 flet 在 iOS 上打开照片而不是文件?
    我正在尝试使用Flet构建一个Python移动应用程序,我需要它做的事情之一就是接受用户的照片或视频。使用flet文档,我尝试了以下代码:ft.ElevatedButton("Choosefiles...",on_click=lambda_:file_picker.pick_files(allow_multiple=True))在iOS上打开文件选择器......
  • 【iOS】——KVC和KVO
    KVCKVC定义KVC(Key-valuecoding)键值编码,允许开发者通过Key名直接访问对象的属性,或者给对象的属性赋值。而不需要调用明确的存取方法。这样就可以在运行时动态地访问和修改对象的属性。而不是在编译时确定。也就是说它提供一种机制来间接访问对象的属性,而不是通过调用Sett......
  • BUG 太多?苹果罕见“重新推送”ios18 beta 4测试版
    在刚刚过去的周末,苹果公司面向开发者,重新发布了iOS/ iPadOS18Beta4更新,内部版本号从22A5316j 变为 22A5316k,目前尚不清楚两个Beta4版本更新之间的区别。此次更新包大小仅为251M左右,是更新。对于已经注册的开发者可以打开“设置”应用程序,进入“软件更新”部......
  • 使用带有 pythonKit XCODE 的嵌入式 Python,在 iOS 应用程序中与 OpenCV-python 签名不
    我根据Beewares使用指南在XCODE中将Python嵌入到我的iOS项目中https://github.com/beeware/Python-Apple-support/blob/main/USAGE.md运行时,我得到pythonKit找不到由ultralytics导入的cv2错误。当我将OpenCV-python添加到我的app_packages文件夹时......
  • Vue axios 请求方式汇总
    1.发送form-data形式letformData=newFormData();formData.append('username',data.username);//添加键值对formData.append('password',data.password);//添加键值对axios.post('http:/xxx/cms-admin/user/login',formData).then(response=&......