京东Java工程师面经
#### 程序题: 一百个任务需要被10个人(A,B,C,D,F…J) 执行
1. 不考虑人在线的情况,sout语句表示任务被执行”1任务被A执行“,来执行一百个任务
难点:任务分配的随机化,以及数字转字符的操作。
2. 每个人都有在线和非在线的状态,每个任务都只能被在线的员工所执行。
给定员工boolean的初始状态,然后任务如果被非在线的员工分配,则顺序给下一个员工。
后知后觉:应该把所有在线的员工给定另一个集合存储起来。
3. 如果员工状态每5s更新一次,任务执行过程中,每10个任务打包成一组进行分配,同时每组任务每隔3s进行分配
两个线程:一个线程用来持续更新员工状态,sleep(5s)。另一个线程用于while(将任务存储到集合中,每次挑选10个任务组成小组,维护一个指针,用于指向任务分配的组,每sleep3s,进行分配)。
4. 如果要使得每个人分配的活动尽量平均,怎么实现
维护一个小根堆,用于记录每个人所执行的任务数量,接任务++,执行完任务—1。任务组分配给最小任务持有员工。
### 项目:
1. 客户关系管理项目:工作职责 + 分析技术。
2. 多个服务器的session问题:每登录一台服务器都需要建立一个session,无法复用。
3. springCache 和 redis 的合作如何实现,在信息变更时 redis 的具体底层操作。
4. MySQL主从复制的实现原理——binlog 的生成机制和使用场景
5. 单个数据库发生故障时不会导致数据丢失:redolog的数据持久化特性。
6. 在遇到技术难题时,如何解决:网络搜索相关问题 或 查看技术文档。
7. 化解生活压力的方式。
8. 反问:京东在西安的业务范围以及如何看待今年的互联网形势。
#京东面经#