7月小记附面经

又到了每年一度的β->α世界线的时间。因为7月还没有写Blog,所以赶紧在8月到来之前补一下。

整个6月都是在职找工作的状态,然后7月初入职了新公司,直到目前还在熟悉代码+做一些很小的需求,所以还是先打算把工作上的一些前期的事情处理完,再来写Blog。

1. 找工作

先说下找工作的事情吧,我大概从4月初开始,利用下班后时间和周日来看面试题,主要从github+大神公众号+牛客,成千上百的问题解析,根本看不完的。所以在看了一段时间后,就索性不这样搞了。

开始写简历,写完之后,从面试官的角度来看自己的简历,然后整理出各种面试官会问的问题,再去寻找相关的答案,根据大神们如何回答这种问题,去优化自己的简历,形成一种feedback的循环,所以产出的简历我认为质量还OK。从6月1月开始精投简历,投递的公司10家不到,除了字节没有捞我其他都给我电话了,包括腾讯、糗百这些大公司,面了其中三家,最后是去了一家做金融互联网的公司,公司项目庞大,开发人员也很多,有许多大佬,一些制度也很完善,所以第一感觉就是自己的成长空间会很大。

当然了,这次找工作还是有一些遗憾的,这里列一下:

  1. 5月中时看到克拉克拉在急招,但是我顾虑准备的还不够充分所以放弃了这个机会。后来想想确实不该这样,还是该上的。所以错失了去以音视频为主的公司的机会。
  2. 鹅厂6月给了两次机会,纷纷倒在二面,给了机会我不中用呀,上周又捞了我一次,我因为这个月已经在忙入职,已经没有准备面试的东西了,所以很抱歉的拒了,不过面试官说我还行,之后继续加油~
  3. 因为疫情,所以不敢随意出来,有三家公司都要我来深圳现场面,所以我纠结了很多还是算了不去了,但主要是已经有offer在手了,如果还没有,我肯定要去的…

2. 面试总结

面试主要是分为技术部分和非技术部分。

2.1 技术部分

技术部分 80%来源于简历上的内容,剩下15%是从这些内容扩展出去,最后剩下5%是新技术、Android发展的展望,只能说是加分项,但是有些很基础的东西要搞清,比如Android每个版本的比较啊,一些著名的、框架是哪个公司开源的呀,最好都记一下。
有一次由于没有覆盖到这些问题,导致在被问到Android11的一些新特性时候,我哑口无言,翻车现场一度十分尴尬。

这里整理一些遇到的问题:

Java部分
除开基础概念,线程安全就是最重要的

  • 接口和抽象类的区别,一个类的能不能多继承,能不能实现多个接口?接口类的非方法能不能被修改?抽象类的变量可以被继承和修改么?
  • final关键字
  • GC如何标记要回收的内存?GC Roots有哪些?
  • 线程安全问题,sychronized、lock/unlock的区别使用,公平锁和非公平锁的概念。
    sychronized是如何体现公平锁和非公平锁的(CAS、锁自旋)?
  • HashMap原理,在什么时候扩容(当加入的元素大于阈值threshold后)。 以及线程安全的HashTable、ConcurrentHashMap的原理。
  • "abcde"字符串在内存中占多大,这些字节在JVM的编码格式
  • JVM堆和栈的作用,进程和线程的作用,堆栈和线程进程的对应关系
  • 线程同步问题,自增是原子操作吗?如果要做到线程安全的自增要做怎么做?

Android部分
主要是围绕着一些技术在项目中的使用,优化的方面是一定会提到的。

  • View的事件分发、触摸反馈
  • 布局优化怎么做的?内存优化怎么做的?内存抖动?
  • RxJava
  • 注解处理器
  • 热修复

网络/操作系统
网络部分占主要,操作系统都很简单

  • TCP、UDP、HTTP、WebSocket
  • TCP会检查包的顺序么,Tcp怎么控制包的发送(滑动窗口)。
  • 拥塞控制和流量控制的区别
  • HTTPS建立流程
  • 死锁怎么产生?如何去解决死锁,多个方案

智力/编程
编程题都是leetcode可以见的到的原题,智力题也在各种面经中出现,所以调出现最多的看就行。

  • 将一个分数转化成小数形式输出,因为分数只可能是有限小数或无限循环小数。如果小数是无限循环小数,则使用小括号括起。
  • 给一篮子鸡蛋,如何用最少的比对次数找到最大的和最小的鸡蛋
  • 排序二叉树的插入
  • 两桶油漆,A桶全是红色油漆,B桶全是蓝色油漆,将A桶中取一勺倒入B中,再从B桶中取一勺倒入A中,求A桶的蓝红比例和B桶的红蓝比例,是大于、小于还是等于?
  • 用一个数组实现一个循环队列
  • 给定一个只有“R”“G”“B”三个字母的字符串,用一次遍历基于原字符串将他们以“RGB”的顺序排序好
  • 52张扑克牌,取一张不放回,再取一张, 两张为相同颜色的概率是多少?
  • 给n和m,写一个环向走往里走的矩阵(n*m的二维数组)
  • 烧蜡烛(绳子)问题
  • 赛马问题
  • 快排是否稳定?冒泡是否稳定?

对于大厂来说,这些都是做为考核的重要标准,一般每一面都会有代码编程,甚至会整一场面试都是代码编程。
我是先想怎么做,想完了再把思路告诉面试官,一般来说,如果思路对了,这题就能拿走7 8成的成绩了,后面能把代码实现就更perfect了。
所以,就算代码实现不出来关系不是很大,最最重要的还是让面试官知道你有正确的解题思路就OK了。

2.2 非技术部分

一般技术面的时候会问一下,然后剩下都是在HR面中

  • 自我介绍
  • 为什么选择计算机这个专业,成绩绩点和专业排名
  • 在上一个公司学到了什么
  • 选择公司因素,按优先级排个序
  • 用三个关键词描述自己
  • 家庭情况,有没有女朋友?
  • 平时的爱好是什么
  • 学习的渠道、方式,有GitHub吗?看什么样的书?
  • 学习是基于公司项目学习,还是个人兴趣学习?
  • 预计到岗时间,期望薪资
  • 反问环节

都很常规,但是不能忽视,最好去看一遍面经中关于HR面的,然后整理一下回答思路,因为HR面也能看清你是否透彻、准备是否充足。
倒在HR面上完全是态度出问题,所以需要做好充分的准备,不要想当然以为:都走到HR了,Offer就到手了
HR也会评定职级的,你的待遇和薪资都和这些有关。

3. 反思

虽然最后的结果也满意,但这次还是暴露出自己很多的问题

  • 开发经验不足,对于一些API、框架的玩法不够深刻;
  • 现场编程能力还要提升;
  • 一些基础知识点还是不牢固;

接下来的目标,就还是坚持刷LeetCode刷书,并且全心全力的将所学知识输出到项目中。

猜你喜欢

转载自blog.csdn.net/rikkatheworld/article/details/107682404#comments_22490511
今日推荐