【Shopee】客户端岗-秋招的第一场面试

无自我介绍,面试官读了半天简历,然后问了个简历上的实习经历是做啥的

场景题:
User(user_id, order_id), Product(product_id, price, category), Order(order_id, product_id, count) 三个数据库表,假设class已经建好了
sdk提供形如 get xxx by xxx的api,比如getOrdersByUserId就会返回一个Order对象的list,sdk通过请求服务端直接返回数据
需求:写一个函数,给定user_id,返回这个人购买的所有商品中哪个category花的钱最多

简单循环遍历,维护一个map累计每个category的花费,最后找最大值。不知道还能咋写。。

然后面试官问,请求api时需要请求服务端,如果有大量用户同时请求的话就可能承受不了,如何优化?
本地缓存+定期跟服务端校验数据完整性,下新订单时更新本地缓存。但个人感觉在本地缓存里面放这种东西给人感觉有点奇怪。。不过也想不出更好的办法了

算法题:
nesting depth加括号,312 -> (((3))1(2)), 221 -> ((22)1), 021 -> 0((2)1) 以前似乎shopee考过,也没啥算法,维护括号个数遍历就行了

操统:
虚拟内存作用,如果物理内存足够大能不能不用虚拟内存,如何保护内存不被恶意破坏
进程&线程,线程共享的资源,线程是不是越多越好
进程内存布局

系统设计:
假设你是Apple早期开发者,如何实现推送系统。
答APNS相关 -> APNS如何实现给指定设备推送 -> 确定设备唯一device id之后怎么推送 (不懂,查了下是长链接)
光知道有这么个东西大致是干啥的,早知道就复习一下APNS的细节了,亏得之前还是接触过的。。。凉凉

iOS相关:
UIView frames和bounds的区别(光知道区别,忘了哪个是哪个了,我说用的时候现查就行了。。)
OC如何实现内存管理 -> ARC -> 引用计数 -> 如何不用引用计数实现自动内存管理(不知道,gg)

反问:
介绍下Shopee的部门情况?确实新加坡是偏基架的,业务少,都用RN了

总结
秋招第一场面试,之前一直all in iOS看了一堆OC高级特性,甚至App crash&稳定性之类的东西,结果都没问。。(显然)
基础知识也没复习完,算法题也没怎么刷,答得也不咋地,感觉凉凉,希望不会被挂吧。。

update:7.17技术终面,竟然没挂