感觉简历做的太水了。。。然后就是自己还是蛮水的。。。面试官是做后端的,不过前端水平应该也比我高。(我不该去搞前端的)
Q:行内元素和块状元素的区别?
A :我说的是块状元素单独占满一行,行内元素一行可以有许多个。。
Q:说几个块状元素和行内元素。
A:我答的是:行内: span,input,b,i 块状:div,table,h,p,ul。 事实上我还是知道更多的,,不过那时候太紧张了一时半会脑袋短路,就随口说了几个。。
Q:知道原型链吗?
A:我说知道,,然后说了下是用来共享方法和实例的,,,被面试官纠正后,,我又说是用来共享方法的。。不知道为什么没把属性说进去。。。。
Q:打开一个页面,如何提高加载速度?
A:确实没什么经验,我就把我想的说了。1:可以把js文件放到body的底部,可以先加载页面,在加载js文件。2:可以压缩代码(不知道对不对啊?) 3:利用cdn加速。。
Q:用过jquery吗?
A:用过,但只是入门了一下。
Q:html里面的doctype是用来干嘛的?
A:对这个了解的不多,以前看到过好像是什么模式之类的。我就随口说了一句好像是什么模式。。(正解:它是指示 web 浏览器关于页面使用哪个 HTML 版本进行编写的指令。)
然后就差不多了。。随便聊了几句。。面试就结束了。
问了下小伙伴,,,有一道笔试题还是不错的。。给一个数组 问a+b+c=0有多少对。。同样的组合只能算一对吧。。不算一对的话把下面代码的去重操作去掉就行了。
这道题我以前做过。。
然后就贴下代码讲下思路吧。
这题是two sums的改编版本,three sums。
首先,从小到大排序,然后去找b+c=-a。
然后注意重复的数就不计算了。
对于每个a,都有确定的b和c和它遥相呼应。我们都固定b和c的两个位置,一前一后。因为是有序的。所以b+c<-a的话就b就加一位,大于的话就c减一位。等于的话两个同时执行(顺便去重)。
简单的说就是两个指针移一下。
很显然复杂度是O(n^2),空间O(n)。如果你不会什么sort函数的话,也可以直接选择排序或者冒泡排序。。因为复杂度是不会变的。
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
int t;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
int a[1005];
for(int i=1; i<=n; i++)
scanf("%d",&a[i]);
sort(a+1,a+1+n);
int ans=0;
for(int i=1; i<=n-2; i++)
{
if(i==1 || i>1 &&a[i]!=a[i-1])
{
int sum=-a[i];
int le=i+1;
int ri=n;
while(le<ri)
{
if(a[le]+a[ri]==sum)
{
ans++;
while(a[le]==a[le+1] &&le<ri) le++;
while(a[ri]==a[ri-1] &&le<ri)ri--;
le++;
ri--;
}
else if(a[le]+a[ri]<sum)
le++;
else
ri--;
}
}
}
printf("%d\n",ans);
}
return 0;
}