一面(2020.9.3,45分钟)
- 操作系统:进程线程,进程间通信,线程间的同步方式
- 计算机网络:TCP/IP协议,三次握手,四次挥手,GET/POST区别,输入URL发生了什么,Cookie和Session
- 数据库:MySQL索引,存储引擎,事务
- Python,Java都问了一点
- 做了一道二叉树左视图右视图的题
- 感觉一面问的都是基础,还是比较简单的
二面(2020.9.12,50分钟)
- 计算机网络:三次握手,状态,第三次ACK服务端没有收到怎么办(服务端会发生什么情况,客户端会发生什么情况),为什么不能采用两次握手
- 数据库:MySQL,Redis,有什么区别,数据存储、应用场景等等。对于用户相互关注的场景,如何用MySQL和Redis存储,写出MySQL建表语句,然而SQL语句没记清(下面SQL有语法错误)。。。
create table User user_id int primary, user_name varchar(10) not null, user_age int not null create table UserFollow id int primary, user_id int not null, follow_user_id int not null create table UserFollowed id int primary, user_id int not null, followed_user_id int not null
- 算法题。从起点开始接下来有N个方块,相邻方块间的距离都为1,每个方块上有增加体力的食用蘑菇或减少体力的毒蘑菇,蘑菇带来的体力改变是已知的。一个人初始体力为m,每次可以往前跳任意个方块,体力耗尽就会死掉。每跳一次消耗的体力与跳的距离成正比,比例为1。问这个人能否跳到终点,如果能,求可能剩余的最大体力。看起来挺简单的,但是临时想就很头疼,硬着头皮写完了,也不知道对不对,虽然两个测试用例都过了。写的时间太长,面试官说一道题一般就20分钟,感觉他不太满意,估计凉了。。
def jump(nums, health): N = len(nums) i = 0 while i < N and health > 0: if nums[i] >= 0: health += nums[i] i += 1 health -= 1 else: i += 1 health -= 1 if health <= 0: return -1 if i == N: return health return -1 if __name__ == "__main__": nums = [1,1,1] m = 3 res = jump(nums, m) # 3 print(res) nums = [1, -2, -2] m = 1 res = jump(nums, m) # -1 print(res)
三面(2020.9.21,50分钟)
- 自我介绍,为什么转开发,算法和开发有什么区别
- 项目,说了一下论文
- Java,equals和hashCode,类加载器,双亲委派模式,垃圾回收
- 算法题:rand3()生成rand5(),成功率5/9,如何优化?中文数字转int,五千四百零三万一千二百转为54031200
期待一个HR面。。
没有HR面,9.28收到意向书!!!
全部评论
(13) 回帖