35岁,滴滴司机想当程序员,烦透了,可父母力阻我辞职,怎么办?

前言

情况是这个样子的,我今年35岁,男,在滴滴做司机(之前是程序员),虽然工资收入都还可以尽管上了年纪但是我想跳槽去字节跳动试一下,再次干会老本行!

我是学java的后面转的Android,985本硕,这几年我在滴滴干的还可以,但是一成不变的生活和工作!我想改变一下!

我现在有房无贷款,有家庭。父母不需要我养老。

现在最大的阻力在父母,他们干教师一辈子极力阻止我辞职!

即使在这样的情况下我还是选择了辞职!因为哪怕年纪到了,压力更大了,我也想好好为自己努力一次!

新的开始(面试)

一面:1h

1. 单例模式知道不,写一个
2. 智能指针讲一下,shared_ptr循环引用怎么就会内存泄露呢?weak_ptr源码有看过吗?
3. 内存模型
4. 栈和堆的效率
5. 堆和找的区别
6. 数组和链表的区别
7. 算法leetcode3
反问

二面:1h

1. 讲讲你这项目你做的工作。
2. 又是一个项目,你是怎么想的,怎么设计的
3. 既然你提到了多线程,那讲讲进程和线程的区别
4. 进程间的通信
5. 多进程怎么就不安全了?
6. 数据库中也存在一些不安全的现象,怎么解决
7. 事务是怎么一回事
8. tcp的三次握手过程,为啥不是两次
9. udp怎样能够实现可靠传输
10. 为啥网络要分层设计
11. 了解快排吗?说一下
12. 算法:两个上升的数组a, b,一个target,找到ai+bj≦target的那两个数
反问

三面:1h50min

我感觉这场面试很多时候我都没正确get到面试官的问题,所以花了很长时间,不然还能从面试官那学到更多!!!面试的时候觉得面试官问的挺深的,但是复盘的时候觉得其实也都是些基础知识。

1. 说一下项目,假装我是一个啥都不懂的人
2. 让你来设计这个项目你会怎么设计,设计流程。
讨论了一下项目细节以及我做的那部分工作
3. 类中的几个基本函数有哪些
4. 什么情况下我们一定要有拷贝构造函数(我打了个比方,string类就一定要有)。你这说的是一种情况,那你总结一下,什么情况下一定要有拷贝构造函数。你怎么突然想到了呢?(我开始纠结了半天一直没想到什么情况) 拷贝构造函数的应用场景。(函数传参、返回值)
6. virtual方面的问题,主要考察动态绑定和静态绑定这一块
7. 内存模型说一下。随便写了个函数,分析一下他们都存放在哪些位置。
8. 栈和堆的区别
9. 栈和堆的效率谁高(一面问过,当时没回答对,又问了一次,然后回答的还是之前的那个答案) 面试官开始引导我找出正确答案 alloca也可以分配栈空间啊
10. 栈是怎么存储的?堆又是怎么存储的? 栈是怎么分配内存的?堆又是怎么分配内存的?堆的数据结构是啥?
11. 那你现在再看看为啥栈的效率高些,答案不是出来了么
12. 看看下面的代码,你觉得运行会咋样

class a{
char ch;
int b;

public:
virtual void func(){
cout << "func" << endl;
}
void func1() {
cout << "func1" << endl;
}
void func2(){
cout << "func2" << endl;
cout << b << endl;
}
};

a *p = nullptr;
p->func(); // 异常,没有构造对象也就没有办法获取到指向虚表的指针,那么就没有办法得到虚函数的地址
p->func1(); // 正常运行
p->func2(); // 异常,类的成员变量没有初始化

12、

a *p = new a;
sizeof(p);
sizeof(*p);

这两的输出结果是多少?如果把int改成long呢?

13. 要是没有sizeof能不能确定long的大小?如何求?(我最开始以为是通过上面的类中的long的大小,想了半天也没想出来,然后开始了面试官漫长的提示)
14、

struct A{
char ch:
int n;
};
A a;
A b;
A* ptr = new A;

他们的地址谁大谁小?a.ch和a.n谁大谁小?ptr->ch和ptr->n谁大谁小?a和ptr谁大谁小?
15 . 回到刚刚的long ,你再求,一句话的事。估计让你写sizeof也写不出来,这个就过了。
16. int a[][] 用new分配和释放一下内存
17. 说说数据结构有哪些。这些数据结构的应用场景是啥
18. 堆排序说一下
19. 算法: topK问题

尾声

你不踏出去一步,永远不知道自己潜力有多大,千万别被这个社会套在我们身上的枷锁给捆住了,30岁我不怕,35岁我一样不怕,去做自己想做的事,为自己拼一把吧!不试试怎么知道你不行呢?

改变人生,没有什么捷径可言,这条路需要自己亲自去走一走,只有深入思考,不断反思总结,保持学习的热情,一步一步构建自己完整的知识体系,才是最终的制胜之道,也是程序员应该承担的使命。

附上:我们之前因为秋招收集的二十套一二线互联网公司Android面试真题(含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)

需要相关知识点可以查看我的【GitHub】,对于已经掌握的可以忽略以节省时间。
如果不方便查看,我已经整理成了一份PDF包含Android入门,基础—高级的全部系列知识点,还有新技术学习笔记。

  • 架构师筑基语言基础

目前Android APP开发主流语言就是Java语言,Java语言最大的特性就是提高了软件的交互可能性,可以说安卓手机几乎所有应用程序都是利用Java语言来进行编写的。

知识要点:
1、深入理解Java泛型
2、注解深入浅出
3、并发编程
4、数据传输与序列化
5、Java虚拟机原理
6、高效IO

  • 设计思想解读开源框架

随着互联网企业的不断发展,产品项目中的模块越来越多,用户体验要求也越来越高,想实现小步快跑、快速迭代的目的越来越难,插件化技术应用而生。如果没有插件化技术,美团、淘宝这些集成了大量“app”的应用,可能会有几个g那么大。

所以,当今的Android移动开发,不会热修复、插件化、组件化,80%以上的面试都过不了。

知识要点:
1、热修复设计
2、插件化框架设计
3、组件化框架设计
4、图片加载框架
5、网络访问框架设计
6、RXJava响应式编程框架设计

  • 360°全方位性能调优

在不同层次的开发工程师手里,因为技术水平的参差不齐,即使很多手机在跑分软件性能非常高,打开应用依然存在卡顿现象。

另外,随着产品内容迭代,功能越来越复杂,UI页面也越来越丰富,也成为流畅运行的一种阻碍。综上所述,对APP进行性能优化已成为开发者该有的一种综合素质,也是开发者能够完成高质量应用程序作品的保证。

知识要点:
1、设计思想与代码质量优化
2、程序性能优化

  • 启动速度与执行效率优化
  • 布局检测与优化
  • 内存优化
  • 耗电优化
  • 网络传输与数据储存优化
  • APK大小优化
    3、开发效率优化
  • 分布式版本控制系统Git
  • 自动化构建系统Gradle
    4、项目实战
  • 启动速度
  • 流畅度
  • 抖音在APK包大小资源优化的实践
  • 优酷响应式布局技术全解析
  • 网络优化
  • 手机淘宝双十一性能优化项目揭秘
  • 高德APP全链路源码依赖分析
  • 彻底干掉OOM的实战经验分享
  • 微信Android终端内存优化实践
  • Android框架体系架构

Android框架体系架构(高级UI+FrameWork源码) 这块知识是现今使用者最多的,我们称之Android2013~2016年的技术。

Android开发者也往往因为网上Copy代码习惯了而导致对这块经常“使用”的代码熟悉而又陌生:熟悉的是几乎天天在和它们打交道, 天天在复制这些代码 ;陌生的是虽然天天和这些代码打交道,但是并没有深入研究过这些代码的原理,代码深处的内涵。

知识要点:
1、高级UI晋升
2、Android内核组件
3、大型项目必备IPC
4、数据持久与序列化
5、Framework内核解析**

  • NDK模块开发(音视频开发系列)
    NDK(Native Development Kit缩写)一种基于原生程序接口的软件开发工具包,可以让您在 Android 应用中利用 C 和 C++ 代码的工具。通过此工具开发的程序直接在本地运行,而不是虚拟机。

在Android中,NDkeK是一系列工具的集合,主要用于扩展Android SDK。NDK提供了一系列的工具可以帮助开发者快速的开发C或C++的动态库,并能自动将so和Java应用一起打包成apk。

知识要点:
1、NDK开发之C/C++入门
2、JNI模块开发
3、Linux编程
4、底层图片处理
5、音视频开发
6、机器学习

  • Flutter学习进阶
    2020 年无疑是 Flutter 技术如火如荼发展的一年。现在这门技术也依然非常有价值。

每一个移动开发者都在为 Flutter 带来的“快速开发、富有表现力和灵活的 UI、原生性能”的特色和理念而痴狂,从超级 App 到独立应用,从纯 Flutter 到混合栈,开发者们在不同的场景下乐此不疲的探索和应用着 Flutter 技术,也在面临着各种各样不同的挑战。

知识要点:
1、Flutter跨平台开发概述
2、Windows中Flutter开发环境搭建
3、编写你的第一个Flutter APP
4、Flutter Dart语言系统入门**
……

  • 微信小程序开发
    微信小程序作为现在比较火的编程开发应用场景之一,深受市场的青睐,这让不少开发者眼馋不已。但是对于初学者来说,就完全摸不着头脑了,不知道微信小程序开发制作需要学习那些知识,有需要的朋友可以参考本篇。

本篇知识要点:
1、小程序概述及入门
2、小程序UI开发
3、API操作
4、购物商场项目实战

需要相关知识点可以查看我的【GitHub】,对于已经掌握的可以忽略以节省时间。
如果不方便查看,我已经整理成了一份PDF包含Android入门,基础—高级的全部系列知识点,还有新技术学习笔记。

需要全套系列笔记可以直接【点击获取】找群主大大免费获取!
  • 40
    点赞
  • 77
    收藏
    觉得还不错? 一键收藏
  • 80
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 80
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值