标签:编程规范 除了 经历 垃圾回收器 时间 mic 判断 jdk8 ioc
个人简介本人坐标南京,16年毕业,在某一传统行业从事JavaWeb后端开发,三年工作经验。出于技术焦虑、能力成长陷入瓶颈、对体制内的文化和氛围无法适应等原因,决心换个环境和工作,进入互联网行业,继续自己的技术追求之路。19年8月应聘字节跳动公司的后端研发工程师岗位,现对经历的4轮技术面和1轮HR面做个总结。
每轮技术面时长40min~1h不等,可能一次一轮面试,也可能两轮连续进行。每轮先以简单的自我介绍开场,然后面试官根据个人的工作经历和技术能力进行提问,最后预留20min~30min时间对一道算法题进行Coding。根据草稿和回忆,整理出不完全的四轮技术面题目如下。
HR面持续30min左右,主要询问了更换工作的原因和想法、目前的薪资状况等问题。
字节跳动的技术面试使用牛客网在线面试平台(面试链接示例:https://people.toutiaocloud.com/recruitment/interview/interviewee/27d0d9c0-aeb5-11e9-a933-98039ba25b3e) ,通过视频与面试官面对面交流,代码在面试平台的开发环境中编写,向面试官实时共享编辑的内容。
经历四轮技术技术面试,感觉字节跳动对候选人的技术要求是比较高的,候选人首先需要熟练掌握与工作经历相关的编程语言、Web框架等个人技术栈,其次对算法、数据结构、操作系统、网络原理等专业知识要有个扎实的基础,尤其是要保持对算法题动手Coding的能力。
首先聊聊手写代码。已有几年工作经验的程序员而言往往对算法与数据结构相关基础知识日渐生疏,更何况平时工作内容大都与业务相关,如果不经过刻意的训练很难在20min左右时间快速解答和实现面试中的算法题。另外面试中的算法题以LeetCode上中等难度的算法题为基础和标准,领扣网上有字节跳动算法题库 ,当前335道题目中,111道简单级题目,中等难度的题目170道,困难题目54道。
本人利用一个月左右的工作之余时间,采用在领扣网上刷题(60道左右中等难度题目)和学习《数据结构与算法经典问题解析》(Java语言描述)一书相结合的方式,重新捡起数据结构和算法的知识,训练针对面试算法题的Coding能力并熟悉此过程。个人感觉刷题仅在于熟悉考试时的状态和节奏,关键还是在于扎实掌握数据结构与算法的知识,当然前提条件是平时工作中经常写代码、对手写代码不生疏,否则就需要更多的练习,可以做完领扣网上170道左右中等难度的算法题。
关于基础知识的学习和积累,如果为了准备面试,进行功利性学习,那么对于JavaWeb后端开发技术栈的应聘者,至少要学习和掌握以下书籍中的内容,包括Java语言基础进阶和标准库、Java8新特性、并发多线程编程、Spring框架、Redis缓存组件、Java虚拟机GC相关等知识点。
关于知识和技能的积累,还是应该进行长期学习,最好养成终生学习的习惯。以上书籍,本人是无法做到在短短几个月的时间里利用工作之外的时间全部学习和掌握的;得益于三年前从工作开始之初持续不断的学习和点滴积累,以上书籍基本至少读过两遍,还有照片上未能列举的书目。
除了刻意学习和编码练习,个人平时习惯于结合工作内容进行技术学习,不断尝试将学到的新工具、新技术引入到工作项目中去,比如引入Lambda表达式和流处理、追求编写整洁优雅的代码、制定Java编程规范、持续进行代码重构和软件迭代、采用Redis组件等等。只有学习致用,才能积累实践经验,至少在面试时能够从容应答,有理论知识有实践经验。存在的缺陷便是,由于与工作内容无关,当面试官问到是否了解大数据相关知识时,只能尴尬地回答完全不了解,所幸字节跳动对此还是相当包容的。
字节跳动的面试前后持续了3周左右,期间还经历了阿里巴巴飞猪旅行业务部门的两轮电话技术面。
第一轮面试历时40min,遇到的问题有:
第二轮电话面试历时30min,问题包括消息队列;以秒杀为背景结合实际的线上问题进行提问,包括百万级的并发量、缓存服务扩容等;Linux服务器上,给定一个10G的访问日志文件,统计出访问量最大的10个IP。由于平时工作中不涉及高并发等场景,采用Windows Server部署服务,面试官最后给我的总结是由于身处传统行业与互联网一线实战脱节比较严重,故第二轮面试顺利地挂掉了。
标签:编程规范 除了 经历 垃圾回收器 时间 mic 判断 jdk8 ioc
原文地址:https://blog.51cto.com/xjhznick/2437819