说在前面,面试时最好不要虚报工资。本来字节跳动是很想去的,几轮面试也通过了,最后没offer,自己只想到几个原因:
1、虚报工资,比实际高30%;
2、有更好的人选,这个可能性不大,我看还在招聘。我是面试Android开发的,3年经验,下面是面试流程:
一面
- 自我介绍
- 项目
- 实习
- 算法题:如何判断一棵树是否是平衡二叉树 我写的递归有点问题,算是写出来了50%吧
- 算法题:最长回文子串 只写了中心扩散法,面试官问我还有没有其他思路,我知道有动态规划,但是我当时对动态规划底气不足,直接说了不知道其他方法
- 如何实现一个操作系统
- sql注入是什么
- 分页和分段的区别
- http和https的区别
- cookie和session的区别
- 应用层哪些协议是基于udp,哪些基于tcp
- rip是什么
- 进程调度算法有哪些,在实际情况中如何选择这几种算法
- 最熟悉的数据结构有哪些
- 计算机组成原理讲了什么
- 反问
二面
- 自我介绍
- 项目
- 实习
- 发现了哪些漏洞
- 哪些是你手动发现的
- 讲一个安全工具的工作原理
- sql注入是什么
- xss注入是什么
- 操作系统
- 操作系统有哪些功能
- 说一下磁盘管理
- 熟悉哪些算法?
- 请问是排序这些吗?
- linux用过没有?
- 命令了解哪些
- 现在只能想起查ip的命令(完蛋,一个都不记得)
- 算法题 数组中数据两两交换 -先说一下思路
三面
- 自我介绍;
- 算法题:给定字符串s,输出第一个满足:在s中恰好出现3次的字母。保证存在这样的字母且字符串都是小写字母组成。
- 比较简单,扫一遍开个数组统计,再开个vector存一下就行了。手写代码。
- SQL:给一个id,科目;成绩的表,搜索不及格科目大于两门课的学生id。
- 数据库的事务是什么;
- 如何实现事务的隔离性;
- 你觉得后端包括那些东西;
- 听过web编程吗;
- Cookie是什么;
- 你在登录一个网站时,输入完账号密码点击确定的时候发生了什么;
四面
- 酷跑游戏如何使得用户感受到跑道无穷无尽
- 游戏引擎和体感传感器可以连起来的原理
- 发现了哪些漏洞,大概分为几类
- 12306买票系统,请设计一个查询方案,要查出了车次,车站名,车站名和地点名可能不相关
- 进程和线程的区别
- 进程间的通信方式
- 用共享存储方式通信会有什么问题,如何解决
- 计算机网络五层每一层说一下
- 知道什么是端口号吗?
- http的状态码301和302有什么区别
- linux命令会吗?
HR面
- 询问了除字节跳动以外,还在看其他工作机会么?分别是什么
- 字节、XXX公司、XXX公司,你的优先级是什么,为什么?
- 之前薪资待遇是多少?你期望的薪资是多少?
- 平时有什么爱好?
- 了解职位需求吗?
- 有没有想问的?
这是我在某论坛看到的故事,我知道我们很多程序员都有一个大厂梦,但如何针对大厂进行面试准备,如何和 HR 聊天,比如谈钱等等,很多程序员就显得手足无措了。本文就根据自己一些见解谈谈这些问题。
什么是合适的候选者
在介绍如何面试之前,这里先从公司的角度来分析:”到底什么样的候选者是公司所需要的技术人才?“就我在现在这家公司的一些面试官经验来说,一个具有如下特征的Android程序员是我们所需要的:
1.具有本科及以上学历(名校更好)
2.具有2年及以上的工作经验(名企更好)
3.技术扎实,有技术追求和工作激情
良好的沟通和协作
在上面的四条中,其中第3条是最为重要的,即技术,技术是决定能否通过面试的最重要最直接的原因。一般来说,越是大公司,其对技术的要求就越高,尽管部分岗位并不需要那么好的技术,但是为了对候选者做出区分,其面试过程仍然会面试一些稍微深入的话题,相信大家都有所体会。
除了技术以外,良好的沟通和协作能力也是比较重要的。也许很多人觉得这个比较抽象,心里会想:”你怎么知道我有没有良好的沟通和协作能力呢“?其实这个问题并不难,面试过程就是一次沟通过程,如果不能和面试官很好地沟通,这就说明候选者的沟通有问题。如何很好地和面试官沟通呢?给如下几点建议:
1.礼貌和尊重。
2.听懂面试官的问题并直接回答。
3.谦虚谨慎、态度友好。
下面对学历和工作经验做一些说明,学历并不是一个硬性要求,即使候选者学校不怎么好也是有可能通过面试的,这就要求候选者技术非常扎实。而工作经验,之所以是2年以上,这是因为社会招聘的对象一般都是有一定工作经验的,而1年工作经验略短了点,拿百度来说,社招的最低级别一般为T4,差不多刚好就是2年经验左右。
这里做下总结,理想的候选者应该是这样的:
1.扎实的技术功底,有技术追求(必须)
2.态度、沟通和为人都很好(必须)
3.2年左右工作经验(基本必须)
4.名校、名企、高学历(非必须,加分项)
基本来说,满足1和2就能通过面试,3和4都是次要条件,但是一般来说不满足3就很难满足1,不要说特例,木有参考意义。
由此可见,技术是面试结果的决定因素。那么到底技术掌握到什么程度才能比较轻松地通过面试呢?说了那么多,好像和软件测试没有一点关系,下面就开始以软件测试为例来分析下面试过程所需的技术,有需要的可以私信【软件测试】获取!
测试理论:
软件测试的目标
发现尽可能多的错误,测试是一个为了寻找错误而运行程序的过程。
一个好的测试案例是指很可能找到迄今为止尚未发现的错误的用例。
一个成功的测试是指揭示了迄今为止尚未发现的错误的测试。
软件都有多少种分类?
根据功能的不同,电脑软件可以粗略地分成四个层次:
- 最贴近电脑硬件的是一些小巧的软件。它们实现一些最基本的功能,通常“固化”在只读存储器芯片中,因此称为固件。
- 系统软件包括操作系统和编译器软件等。系统软件和硬件一起提供一个“平台”。它们管理和优化电脑硬件资源的使用。
- 支持软件。包括图形用户界面、软件开发工具、软件评测工具、数据库管理系统、中间件等。
- 应用软件种类最多,包括办公软件、电子商务软件、通信软件、行业软件,游戏软件等等。
Linux 基础
在 Linux 系统中,一个文件的访问权限是 755
755 表示该文件所有者对该文件具有读、写、执行权限,该文件所有者所在组用户及其他用户对该文件具有读和执行权限。
如何查看一个文件的末尾 50 行?
查看/etc/profile 的前 10 行内容,应该是: # head -n 10 /etc/profile
查看/etc/profile 的最后 50 行内容,应该是: # tail -n 50 /etc/profile
MySQL 基础
什么是数据库?
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库
什么是关系型数据库,主键,外键,索引分别是什么?
关系型数据库是由多张能互相联接的二维行列表格组成的数据库
主关键字(primary key)是表中的一个或多个字段,它的值用于唯一地标识表中的某一条记录
外键表示了两个关系之间的相关联系。以另一个关系的外键作主关键字的表被称为主表,具有此外键
的表被称为主表的从表。外键又称作外关键字
在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,
它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单
Web 测试
nginx,tomcat,apache 都是什么?
Nginx (engine x) 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 服务器。
Apache HTTP Server 是一个模块化的服务器,源于 NCSAhttpd 服务器
Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器,属于轻量级应用服务器,是开发和调试JSP 程序的首选。
接口测试
什么是接口
接口是指外部系统与系统之间以及内部各子系统之间的交互点。
包括外部接口、内部接口,内部接口又包括:上层服务与下层服务接口、同级接口。
如果模块请求 http 改为了 https ,测试方案应该如何制定,修改?
分别用 http 还有 https 登录试试。如果用 https 可以正常登录,地址栏显示一把锁头,那么这个网站是有部署 SSL 的。如果 http 和 https 都能够正常登录,进一步说明该网站没有设置强制 https 登录,或者说没有设置 http 链接自动跳转 https 链接;相反如果用 http 登录,结果跳转到 https 页面,说明网站部署了 SSL, 而且设置了 http 自动跳转 https。
App 测试
什么是 Android 四大组件?
Android 的四大组件包括:Activity、Service、BroadcasReceiver、ContentProvider
总结:
由于内容过多,就不在这里就不把所有的知识点内容列举出来,阿里大牛总共整理了有400多页的PDF文档,有需要的可以关注小编+转发文章+私信「软件测试」获取资料。除了阿里大牛整理的这一份软件测试的核心知识点之外,还有一些小编整理的备战金九银十的面试题,有需要的朋友同样私信「软件测试」获取。
如何获取免费架构学习资料?
资料获取方式:
关注+转发后,私信关键词 【软件测试】即可免费获取到!
重要的事情说三遍,转发、转发、转发后再发私信,才可以拿到!