京东
1 自我介绍
2 学过操作系统不?
大学学过,现在不是很熟悉,就没问我操作系统的知识了
3 C++基础:
(1)说一下i++,++i的区别
(2)说一下引用和指针的区别
(3)虚指针的实现机制
4 学过数据结构没:
不能再说学过而不熟悉了,所以回答学过
那好,你写一些链表的增删,但他意思应该只要我写删除,最开始就写的删除,写了好一会,不确定正确性,但我给面试官讲了思路了,可能手写代码还是不太扎实,但是自己听见他说写增删,所以我把插入的也写了,尾插和头插,这两个写的还是可以的
5 接下来问一些题目:
(1)8瓶药水,有一瓶毒药,用小白鼠进行实验,每只只能实验一次,问怎样可以用最少的方法把是毒药的那一瓶给试出来?
说真的,它在讲题的时候,还没讲完,我就想到折半,但是他讲完题目,我觉得折半后也没有条件判断毒药在那一边啊,想着那也只能暴力吧,但自己没主动说,觉得面试时这些想法可以说明一下,但我就说的我没有思路u~
后面他提醒,也是用二分思想(折半嘛),我这时候才表明自己也想了,说二分完之后,没毒的和有毒的也没联系,没办法判读毒药在哪一边。
他说完答案之后,我觉得这有点脑经急转弯了,他说二分是将8瓶分嘛,然后左边4瓶混合,另外4瓶混合,让小白鼠试~~~
我说了,还能混合~,我都没想到
(2)还有一个题就是,给一个数组a[n],做循环移位,例如a[5] = {1,2,3,4,5};循环移k=2位,得到{4,5,1,2,3};怎么做
首先我就给出的最常规最简单的方法,用额外数组存后k位,在将前n-k位后移k位,在将额外数组存的k个数存到数组的前面;
然而面试官想要的结果是,不用额外空间存,怎么实现,
所以又想,我就问,那能不能不用数组存,用其他的STL容器存,他说可以,可以用vector这种,我当时想,vector没有头插函数,所以我就说用队列,想到STL中的队列可以从头尾进行处理,其实队列具体怎么处理,用的函数是不是insert,自己有点不清楚,就知道队列有这性质及相关函数,就先说了
然鹅还不是他想要的思路
又想,就说,先将前k位和后k位交换,举例,1,2,3,4,5--- >4,5,3,1,2;然后再将中间剩的像冒泡一样给冒到最后去;
这个和他想要的很接近了,后面我还觉得我这个比他说的还简单些,只是他想的可能就是单单调用翻转函数而已
他想要的是,将数组进行一次翻转1,2,3,4,5--- > 5,4,3,2,1;然后将前k位和后n-k位分别进行翻转即,5,4翻转;3,2,1翻转
6 最后就是有什么要问的,
觉得自己答的都还行,就问了面试官所在部门做什么的---与广告相关,是在用C++做
问了进去后的发展---不是我想要的,他就回了,说有导师教啊什么的,大概半年可以自己做东西,云云~
最后就问了,后续面试结果通知
面完出来还问了签到处的小姐姐,面试结果,说是通过了晚上有通知,没通过就没有了,二面是在后天,我从长沙跑武汉,如果第二天二面我就住武汉了,所以也不知道结果,二面还得等结果,所以我就回长沙了,高铁太贵,学生票次数又用完了,所以买的火车,还是无座,晚点一小时,路上继续晚点,只不过找到位置坐了,作为那人升级卧铺了,我一路坐回长沙的,到长沙11点多,下完火车,就被告诉,我京东挂了,原来没有短信通知,状态更新挺快,面试未通过!!