3

字节跳动头条6面技术面 + 1面 HR 面

 2 years ago
source link: https://ac.nowcoder.com/discuss/791133?type=2&channel=-1&source_id=discuss_tag_discuss_hot_nctrack
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

字节跳动头条6面技术面 + 1面 HR 面

奔跑的小野马 #字节跳动面试#

发布于 2021-10-29 16:15:00

APP内打开

内部员工参与评论 (共3人 查看全部 )

努力了十多年,进入了一所普普通通的学校。

名校带来的不仅是title,更是环境的熏陶。

最近想找重新找份好点的工作,而一些offer给出的条件是,至少211学校,有点无奈。

虽说名校背景并不能完全代表一个人的能力,但至少证明别人在高中及之前比你付出的多。

不得不承认,在某些情况下,双非学校会受歧视。

首先的话,介绍一下自己的情况吧。双非一本毕业一年的程序员,可以说学校不太好(和985,211相比)。家中条件不好,所以没打算考研,想出来就业早点孝敬父母。毕业实习完想再找个好点的工作,从年前开始正式学习,前段时间拿到头条的offer,还不到3个月,这3个月来各种焦虑,失眠,自我怀疑都经历了一遍,实属不易。

字节跳动是6面技术面 + 1面 HR 面,有趣的是三面都是视频面试,虽然应聘的部门就在上海,但不需要赶过去现场面。

而且整体流程非常专业:面试前会有专人打电话约时间、面试后会及时通知你面试结果并约下一面的时间、面试中是在牛客网上视频面试(网站上配置有白板可以写代码)。

再说面试内容,字节跳动或者说我们熟悉的“头条”的特点的确是面试过程中算法比重很高,但面试官绝不是无脑问算法题

比如一面问的算法题是线段树 —— 这个数据结构我的确不熟悉,但面试官在提问过程中不断引导和考察其他方面的东西,我能比较好得回答出来,最后虽然没有命中最优解“线段树”,但还是让我过了。

如何准备头条面试?

头条面试和其他大厂可能大同小异,但就是这个小异才是关键地方,能异于其他人的地方。可以从如下几个方面去做准备:

1.特意准备几个面试题源码。像我在回答一些中规中矩面试题的时候,都会从源码角度出发。比如常见的HashMap等集合类,多线程的各种锁以及大数据框架的部分源码

2.特意准备项目难点。面一些大厂的时候避免不了被问到项目难点,不可能用普通Bug含糊过去啊。这边可以从项目用到的技术栈出发,去寻找技术栈在项目中会存在的难点,然后套进自己的项目,找个自己能懂,最好能全懂的。

3.针对性去了解公司的技术栈使用情况。比如头条使用Go,众人皆知,那为什么我不突击学习一下呢?比如从业内人士得知头条最早使用的是Kylin框架,后面慢慢转为ClickHouse,那我必须了解一下两者的不同啊,而且可以结合头条的业务场景。

image.png
image.png

头条1面 - 基础面

  • 你们 Android 开发的时候,对于 UI 稿的 px 是如何适配的?
  • 两个值相等的 Integer 对象,== 比较,判断是否相等?
  • Activity A 跳转Activity B,Activity B再按back键回退,两个过程各自的生命周期
  • 子线程是否可以 context.startActivity() (如ApplicationContext), 会不会有什么问题?
  • Handler机制整体流程; Looper.loop()为什么不会阻塞主线程; IdHandler(闲时机制); postDelay()的具体实现; post()与sendMessage()区别; 使用Handler需要注意什么问题,怎么解决的?
  • Native、H5、RN页面混合跳转时,页面清栈的桥如何实现的?
  • 怎么计算一个View在屏幕可见部分的百分比?
  • ClassLoader 的双亲委派机制
  • 简单介绍下 Https 的原理
  • 什么情况会导致内存泄漏,如何修复?
  • 下载一张很大的图,如何保证不 oom?
  • 有没有做过UI方面的优化,做过哪些?
  • WebView 与 JS 交互方式,shouldOverrideUrlLoading、onJsPrompt使用有啥区别
  • Flutter、Kotlin接触使用过没有
  • 其他项目相关问题
  • 算法 - 二叉树输出第 k 层节点元素

头条2面 - 项目专项

  • Native、H5、RN页面混合跳转时,页面清栈的桥实现
  • 页面混编框架的设计与难点
  • RN 通用容器的设计
  • 用户行为监控方案设计
  • JS 错误治理方案
  • RN 页面对用户行为的监控与JS错误治理,在问题发现有什么收获、优化点
  • 美团 RN 相对于原生 RN 的有什么优势

头条3面 - 基础加深

  • 你们公司 Picasso 有使用过没,介绍下
  • Picasso 单引擎,在多 Bundle 的情况下怎么保证数据隔离的?
  • 美团 RN 与 Picasso 的区别
  • RN 的页面追踪埋点如何实现的
  • 美团首页是否是 RN 页面,MTFlexBox 原理
  • synchronized 修饰 static 方法、普通方法、类、方法块区别
  • synchronized 底层实现原理
  • volatile 的作用和原理
  • 一个 int 变量用 volatile 修饰,多线程去操作 i++,是否线程安全? 如何保证 i++ 线程安全? AtomicInteger 的底层实现原理?
  • 说下对线程池的理解,以及创建线程池的几个关键参数
  • Handler 机制又问了一遍
  • 介绍下 Binder 机制,与内存共享机制有什么区别?
  • Java 集合,介绍下ArrayList 和 HashMap 的使用场景,底层实现原理
  • ArrayList 与 LinkedList 的区别
  • 算法 - 两个有序的链表的合并
  • 算法 - 输入一个字符串(不含和.)、正则(字母、和.任意组合),判断字符串是否合法
  • 简单介绍下,项目中遇到的一些技术难点

头条4面 - 交叉面

  • 下面的代码, str 值最终为多少? 换成 Integer 值又为多少,是否会被改变?
  • APK 为什么要签名? 是否了解过具体的签名机制?
  • 为什么要分 dex ? SDK 21 不分 dex,直接全部加载会不会有什么问题?
  • 常见的设计模式有哪些? 你提供的 JS 错误治理方案,用了哪些设计模式?
  • 算法 - 二叉树层序遍历,奇数层逆序遍历节点,偶数层正序遍历
  • 未来 3~5 年的规划是什么?
  • 你觉得你的优点是什么? 缺点是什么?
  • 现在的职级,近期的绩效如何

头条5面 - 部门 TL

  • 商业化部门相关的业务介绍 (核心大概是商业化部门壁垒高,培养一个人成本高,比做其他业务更有含金量,可以积累很多业务策略知识),然后让问他问题
  • 未来几年的规划? 生活上有什么规划?
  • 你觉得你的优点是什么? 缺点是什么?
  • 现在的职级,近期的绩效如何
  • 为什么给你这么好的绩效?
  • 有没有看其他机会? 阿里面试的情况

头条6面 - 大 Boss

  • 算法 - 数组插入,考虑扩容
  • 项目的遇到的比较有挑战的事是什么?
  • 你在之前公司负责的业务有哪些?
  • 未来几年的规划是什么?
  • 你觉得你的优点是什么? 缺点是什么?
  • 现在的职级,近期的绩效如何

头条HR 面

  • 本科和研究生专业都是偏硬件的,是否有相关的软件经历?
  • 去上家公司之前有没有 Android 开发经历?
  • 当时为什么要选择去上家公司? 为什么要选择来这里?
  • 为什么要换工作? 期望以后的工作是怎样的?
  • 几次晋升中,业绩亮点是什么?
  • 家是哪里的,有回家那边发展的打算没有?
  • 有打算再去看看快手之类的工作机会没有?
  • 问一些阿里现在的面试进展和情况
  • 期望的薪资
27208383-6e5ec1031335ab91.png

如何成功拿到offer?你需要一份这样的生活习惯

八月过完就到了金九银十,是程序员扎堆求职的高峰时段;

你做好去面试的准备了么? 你知道该如何做准备? 还毫无头绪?

那么,接下来的内容你需要看看。

面试的准备时间一般别低于2天,如果可以,再延长些,但别太长。比如是去现场面试,可以找的借口就比较多,比如项目忙,会多,时间间隔别超过5个工作日。比如周二收到通知,就尽量约到周五,如果是是周三周四,那么别超过下周二。

了解公司的相关情况。面试前应到公司的网站上或别的渠道,提前了解公司的企业背景、业务模式、主营产品等, 面试的时候就可以做到有的放矢。当面试官问道这些问题的时候,你一无所知,这就不是尴尬能形容的了。因此,不妨先研究下想要应聘的机构,深入了解其工作规范以调整回答问题时的方向和重点。

一份顺眼的简历

如果你想增加入选的机会,那还得花点心思在简历上。网上有很多资源,可以多下几个模板比较一下,选一个适合自己职业的风格。程序员最好简单一些,能凸显重要部分就可以了,但是,要记住表格形式的简历是大忌。

简历控制在一张A4纸以内,最好不要超过两张。原因很简单,因为HR和面试官平时都挺忙的,没有那么多时间看简历,很多面试官会要求你自我介绍,其实就是他们没看简历。

技能只写最重要的,写点和职位相关,直接能让面试官重视的技能,比如面试运维开发时,就写自己实现过CMDB,上线,工单系统,Django,Flask用的很熟练等,直接命中面试官的用人需求!

干货储备(核心技能)

想我平常都比较喜欢研究源码、性能优化、算法这方面的东西,所以自己也会有收纳整理,就比如以下这些:
源码
1.Retrofit 2.0源码解析
2.Okhttp3源码解析
3.ButterKnife源码解析
4.MPAndroidChart 源码解析
5.Glide源码解析
6.Leakcanary 源码解析
7.Universal-lmage-Loader源码解析
8.EventBus 3.0源码解析
9.zxing源码分析
10.Picasso源码解析
11.LottieAndroid使用详解及源码解析
12.Fresco 源码分析——图片加载流程
13.rxandroid 源码解析
14.SlidingMenu源码解析
15.PhotoView源码解析
16.MaterialDialogs源码解析
17.Android-async-http 源码解析
18.AndroidAnnotations源码解析
19.fastJson源码解析
20.Material-Animations-masteri源码解析
21.Tinker源码解析
22.ViewPagerindicator源码解析
23.Android-CleanArchitecture实战
24.Android之PullToRefresh控件源码解析
25.Android-FlexboxLayout源码解析
26.SwipeLayout源码解析
27.Android Realm数据库完美解析
28.GreenDAO源码整体流程梳理
29.Stetho 源码解析
30.BaseRecyclerViewAdapterHelperi源码解析
31.AndroidViewAnimations开源框架实现
32.MaterialDrawer使用指南
33.Android ScrollView源码解析
34.CirclelmageView源码解析
35.Logger源码解析
36.Agera源码解析
37.BottomBar源码解析
39.Android字体库Calligraphy源码解析
40.AppIntro源码解析
41.RecyclerView源码解析
42.Dagger 源码解析
43.Android-Bootstarp源码解析
44.RxBinding源码解析
45.ListViewAnimations源码解析
46.UltimateRecyclerView详解
47.uCrop框架用法和源码解析
48.RxJava-Android-Samples解析
49.AndroidAutoLayout源码解析
50.Effective Android UI解析
51.Luban源码解析
52.DroidPlugin解析
53.otto解析
54.u2020解析
55.buck解析
56.PermissionsDispatcher解析
57.Android-gif-drawable解析
58.Apktool解析
59.Dynamic-Load-Apk解析
60.Atlas解析
61.volley解析
62.Androidmvp解析
63.SwipeBackLayout解析
64.FlycoTabLayout解析
65.Android-testing解析
66.FileDownloader解析
67.JieCaovideoPlayer解析
68.Glide-transformations解析
69.Android-gpuimage解析
70.RxPermissions解析
71.Freeline解析
72.RxLifecycle解析
73.Classyshark解析
74.Acra解析
75.DiskLruCache解析
76.Dexposed解析
77.Litho解析
78.mosby
79.AndResGuard解析
80.StatusBarUtil
81.robolectric
82.Fragmentation解析
83.Small解析
84.JsBridge解析
85.richeditor-android
86.Transitions-Everywhere
87.Android-viewbadger解析
88.AndroidwiFiADB解析
89.Emojicon解析
90.packer-ng-plugin解析
91.Android-priority-jobqueue解析
92.Android-Debug-Database解析
93.Conceal解析
94.ARouter解析
95.MagicaSakura解析
96.CustomActivityOnCrash解析
97.XhsEmoticonsKeyboard解析

偶尔研究下其他公司出现的性能优化问题,查漏补缺,以下是自己整理的目录,方便大家阅读。

27208383-9a5e0bd89b3b5a51.png

算法这方面自认为还算可以,喜欢刷一些经典案例,尤其是字节对算法上有一定要求,下面呢是我自用的算法学习资料,一般是不外传的。

image.png
image.png

项目经验

项目的研发背景、整体业务流程、开发周期、负责的模块、技术实现细节、技术亮点等。你自己做过的每个项目都要搞清楚。

了解热门前沿技术

比如你面试的是 Android 开发岗位,除了 组件化 你还能聊聊最新的 Jetpack Compose;比如现在微信小程序开发又火起来了,你也在关注和学习,甚至能解决面试官的一些问题。了解这些热门的前沿技术绝对会成为你面试时的加分亮点。

关于面试,你必须要知道的事情:

做好个人职业规划是前提!

面试时,几乎所有人都会被问到一个问题—你的个人职业发展规划是什么?

其实职业规划是会反映出你和公司今后发展方向的匹配度,也会侧面反映你的个人能力。

针对性地“准备”好你的职业规划,让企业看到你并不是胡乱海投,同时也是为自己厘清方向。

参加面试的小伙伴一定要根据自己的情况做好职业规划,明确发展方向,不仅可以提高面试成功的概率,更是对自己未来负责。

同时技能储备要存好,别到面试掉链子。我自己也有一个学习交流群917137200有兴趣的可以加进来一起讨论学习交流,包括我自己的学习资料心得都会共享在其中,热爱Andorid,热爱编程。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK