到目前为止在小红书Android实习两个月的感触

我已经在小红书Android开发岗位实习了两个月了,这两个月值得我总结一下。

进入正题,作为一个开发者,最重要的是成为一名软件工程师,而不是普通程序员。很多情况,你进入无论大厂中厂还是小厂实习,有极大概率会让你干普通程序员的活,也就是脏活累活。我也在牛客上看到无数人吐槽,我好不容易进了字节、腾讯,天天让我crud,除了有个大厂光环还有什么用?大厂光环在现在确实有用,但是如果有机会提前深入、甚至手写基础架构,而不是天天搞普通需求打螺丝,不但能让自己的编程能力进步,还能让自己的工程思维更上一层楼。

为什么我认为实习找中厂其实反而也是不二之选?因为这种公司有很大情况基础架构不完善,比如小红书,各种问题急需他人解决,也需要各种基础框架来满足业务需求。恰好,我实习入职的时候就遇到了一个正在开发的内部框架,我ld直接把任务交给了我。我至今一直开发、维护着该框架。虽然对于平常实习生来说搞这框架确实是个挑战,但我开发经验比较充足,所以说不是太大问题。而且你们不久就能在小红书用上使用我框架绘制出来的UI,对我来说不但成就感满满,而且学到了很多工程思维上的东西。

今天我ld跟我谈话了解一下我对组里的看法,我就说了一段话:

像这种基架并不完善的公司(相比字节、腾讯等等)来说,各种框架、基础能力构建潜力很大。

如果去了那种大公司,基架极其完善,实习的话大概率不会给你分配像你给我分配的这种相对高价值的东西来写,基本只是当个打杂的“切图仔”。而且普通需求到哪个公司都是必需,并没有太大竞争力,写普通需求对培养工程师思维感觉帮助不是特别大。需求会随时有,但框架不一定,有也很难说去交给一个来了没多久的人去做,但咱们组一上来就给我安排框架开发工作,所以我个人认为这次实习的含金量是很高的。

其实说这么多,大前提还得是有一个好组+好ld,我所在的组是主业务客户端研发组,相比隔壁视频组就没那么容易喽,我学长就在那个组的,天天干脏活。

很喜欢我ld的一句话:“我前司字节都废了rxjava用协程好多年了,小红书还守着它rxjava呢。”哈哈,别尬黑,小红书现在还在用kotlin-android-extensions这种彻底被官方废弃的东西呢,导致kt版本根本升不到1.8以上,笑嘻了。

#小红书##你觉得实习只能是打杂吗?##正在实习的碎碎念##实习#
全部评论

相关推荐

2024-12-29 21:17
已编辑
门头沟学院 Java
上岸了,回馈社会更新中一面(约1h)拷打项目你的登录怎么做的(WebView回调检测登录成功,html提取用户信息)经过实习你有没有学到别的方法(F12抓包,走一遍登录流程看发了什么请求,返回了什么数据,里面可能有token)之前贴吧中有人发一个链接,用户点击后会自动发一个逆天评论,怎么解决这个问题(请求中带token)token怎么来(登录时服务端返回,保存用户信息,过期时间等信息,可以用token+refresh的双token模式)拷打实习介绍一下实习为什么用到Native Hook(监听登录)Native Hook方式?(PLT hook, inline hook)inline hook原理?(改指令,跳转到代理函数)PLT Hook的原理?(修改GOT表)改什么?(目标函数的绝对地址)PLT Hook使用条件(目标函数为外部引用)怎么保证一定能Hook到?也就是你要在实际执行前hook。(Hook dlopen,加载目标so的时候自动hook)Hook时机?(attachBaseContext)讲讲Java层Hook?(反射修改ClassLoader,优先加载自己的dex)场景题native层怎么监控数组越界(写一个数组工具类)那已有的代码呢(hook malloc)hook了怎么改(不知道,提示了mprotect后说把分配内存后面的区域设为不可访问,这样越界会有异常,能被捕获)设置多大的范围?(不知道)八股安卓中内存泄漏了解吗(Service,ThreadLocal,长生命周期持有短生命周期引用)算法题解决memcpy覆盖的问题二面(约1h30min)拷打实习讲讲替换ClassLoader实习hook的细节PLT Hook的原理有哪些先决条件(外部引用)为什么同一个so里的Hook不到(调用不走PLT和GOT表)还有哪些Hook方式(Inline Hook)什么原理(插跳转指令)还有什么方法(不知道)外部引用地址是怎么填到GOT表中的(加载so的时候会记录已加载函数的地址)so函数地址是怎么来的(支支吾吾)ELF加载过程(dlopen把so加载进内存解析,具体啥结构不记得了)改符号导出表可以吗(哦哦可以,dlsym应该就是通过这个获取函数地址的)编译打包优化展开讲讲AB实验了解吗(没有了解)AB实验原理是什么(对照实验)对照实验原理是什么(控制变量观察结果)观察到B比A点击率高0.1%,可以认为B比A好吗(不能,有偶然性)那要百分之多少才没有偶然性(不知道)拷打项目有啥难点吗(没啥难点)为什么用的人这么多(口口相传)八股请求到服务器到返回结果,经历了哪些事情DNS解析是谁做的(操作系统)场景用过微信网页传输助手吗,怎么做一个消息收发的功能(可以用WebSocket)服务端你会怎么设计(保存最近几十条消息,带id)客户端呢(长轮询,服务端收到消息后如果对方在轮询中就返回消息,客户端上线主动同步消息,告诉服务器本地最新消息id,然后服务器推送后续消息)你是怎么想到的,了解过吗(没了解过,yy出来的)闲聊为什么没转正准备读研吗,为什么不读算法题第k大数位和再数位和三面(约1h 45min)看你简历很优秀,奖项排满了,学习成绩怎么样(一般)为什么不转正在腾讯实习才系统学安卓?(是的)你做了笔记?看看(内部维基上)学了安卓有什么收获?(学到很多,也更了解kotlin了)你提到了kotlin,那说说kotlin协程和线程的区别(语言级线程,有3个调度器决定协程)用Main调度器会创建线程吗(不会)对比普通线程处理上下文,协程是怎么处理的?(也有上下文,但比线程少点)你有没有研究过kotlin协程的底层原理(io操作或suspend函数时通过挂起让出cpu)会挂起线程吗(不会)怎么挂起的(也是保存上下文吧)讲讲怎么实习优化编译打包速度的你觉得实习做的最有挑战的事是什么(native hook)展开讲讲你用PLT Hook的时候也顺便把inline hook也了解了吗(是的,安卓的Hook方式都了解了)有写文章吗(有)(投屏展示)有遇到困难吗(cpp编译成elf时函数名字改写)再讲讲替换ClassLoader的Hook方式?知道Apk包含哪些内容吗(classes.dex,lib,res,assets,resource.arsc索引)有没有用打印log去看过arsc索引文件有哪些东西(有,用mt看过,包含各种id和路径,以及color和string)从你的角度为什么要用这种方式去组织资源(便于访问,图片方便快速定位,color和string这种用的多的每次都从文件里读就慢了)他不会一次性读出来吧,你知道他怎么读的吗(不知道)场景题微信14亿用户信息,不用数据库,设计一个用纯文件去保存的方案(目录+数据)如果要修改信息呢(可以用链表存kv对)你得分页吧,基于这种分页结构,你还会怎么去完善它(同一个用户的信息尽量在同一页)这样每页都会有碎片,你不能每次都开一个新页吧,太浪费了,怎么找空页(用一个链表按顺序记录有碎片的页)这是一个好的设计。那并发读写效率差怎么解决(分表)怎么分(每一百万个用户一个文件)你对flutter的掌握程度怎么样(偏使用)有遇到卡顿的情况吗(有,ListView滑动卡)有没有去优化(没有)你项目中图片上传怎么处理的(压缩)只考虑size吗(是)微信图片考虑的就多了继续挖了点细节。闲聊讲讲竞赛经历玩什么游戏除了竞赛,还有什么能证明你的能力(逆向破解暴力薅某个软件的羊毛)智力题8个球有1个重量不一样要称几次能找出来(2次)如果是n个呢(log3(n))很多公司给你发offer,你会怎么考虑(优先微信)我估计微信给你发offer问题不大。面委(待更新)
查看149道真题和解析
点赞 评论 收藏
分享
评论
2
4
分享

创作者周榜

更多
牛客网
牛客企业服务