tp-link南京 软件工程师 一、二面面经
一面 6.30,半小时左右
1. 自我介绍,还问了一点成绩、保研和奖学金的事情
2. 介绍了一个简历项目,然后提问
3. Java类加载机制
4. Java双亲委派机制
5. Java实现线程安全有什么途径?
6. 紧接着5的问题,AtomicInteger的内部实现有没有了解过
6. LRU是什么以及实现方案,有什么缺陷
7. Java的GC是否了解,如何判定对象是否应该回收
二面
1. 自我介绍
2. 简单过了一下简历,没怎么细问
智力题
1. 100个人,100盏灯,全部熄灭,第一人过去按所有灯的开关,第二个人会每隔一盏灯按开关,第三个人每隔2盏灯按开关,以此类推, 第100人隔99盏灯按开关。
问:100个人都走完,剩多少盏灯亮着?
问:100个人都走完,剩多少盏灯亮着?
2. 现在桌子上面放了26枚硬币,其中有10枚硬币是正面朝上。
如果别人蒙住你的眼睛,而且你的手也摸不出硬币的反正面。你用什么方法能将硬币分成两堆,而且这两堆硬币正面朝上的个数相同(可以对硬币翻面)?
如果别人蒙住你的眼睛,而且你的手也摸不出硬币的反正面。你用什么方法能将硬币分成两堆,而且这两堆硬币正面朝上的个数相同(可以对硬币翻面)?
除了方案之外还问了是怎么得到思路的。
算法
给定一个数组nums,nums每个元素范围在[-1000,1000]内,找到一个索引i,使得索引左边所有元素的和nums[0]+nums[1]+...+nums[i-1]和索引右边所有元素的和nums[i+1] + nums[i+2] + ... + nums[len-1]相等。
如果存在多个i,返回最左侧的i;如果不存在返回-1.
先说了下思路然后开ide共享屏幕写代码