2018年腾讯校招和小米校招本人所做笔试题——前端Web开发工程师方向
本人愚笨,刚开始对笔试题并不是很了解。仅以此两家为学习的地方,待日后希望更好。现在就把这两家的我记录下来的笔试题整理起来。小米的内容在后,有详细的解答!
腾讯:感觉上腾讯的题目是偏难一点的,不亏是鹅厂。
选择题都是不定选项,且选择题的内容和前端无关,基本上都是计算机最基础的知识。
1、操作系统的置换算法
2、电梯调度SACAN算法
3、jvm性能调优工具有哪些
4、B树和B+数
5、C++多态的理解
6、快速排序算法
7、哈夫曼算法
8、MapReduce描述
9、std::vector初始化
大题是三道题:
1、求(n+1,n+2,...m)最小公倍数和(1, 2, 3, ...m)最小公倍数相等的时候。
说明:n是任意整数1-10的6次方,找出m.
2、
3、
小米的面试题:小米的选择题有单选和多选两种,且内容上也分基础计算机知识和对应的申请职位的知识,比如我的就是前端的知识。
1、网络传输7层模型
https://blog.****.net/yaopeng_2005/article/details/7064869
常会被被提及的是应用层与传输层
2、document的方法包括那些
3、图形验证码实现原理
图形验证码基本上有两种,一是前端caves、二是后端实现。
4、闭包及其特点(两个很有学习必要的网址)
https://www.cnblogs.com/wangfupeng1988/p/3991995.html
https://www.cnblogs.com/wangfupeng1988/p/3994065.html
//1、闭包返回函数的实验
/* function fn(){
var max= 10;
return function bar(x){
if(x > max){
alert(x);
}
}
}
var f1 = fn();
max = 100;
f1(15);*/
//2、闭包传递函数的实验
var max = 10;
fn = function(x){
if(x > max){
alert("YouXiu" + x); //这儿x的值是15,max是10
}
};
(function(f){
var max = 100;
f(15);
})(fn);
//3、----作用域实验-----
var aa = 2;
var ab = 3;
function fn(x){
aa = 20;
bb = 30;
function bar(x){
var aa = 200; //这样就是局部变量
aa = 200; //这儿修改的是全局变量
bb = 300;
}
bar(110);
alert("H" + x); //这的x是11而不是110 ,110在上一步执行完就被销毁了
bar(120);
}
fn(11);
//alert("S" + x); 错误代码不回被执行,x的值在fn结束就被销毁了
alert("L" + aa);
5、冒泡排序
步骤一、从起始位置开始以此比较各个位置与其后一位置的大小,大的话就相互交换
步骤二、第一轮结束最大的已经在数组的最后面了
步骤三、在执行一次循环到倒数第二个数
步骤四、直到最后一个数,排序完毕
6、h1-h6标签
7、内容(content)、填充(padding)、边框(border)、边界(margin):CSS中盒子模型
https://www.cnblogs.com/HDK2016/p/6127856.html
8、相对位置等
这是一个非常到位的解释
https://www.cnblogs.com/HDK2016/p/6127856.html
编程题小米就两道:
第一道是:先是找(1 2 3 3 4 4 4 5 5 5 5 5...)中的规律;每类数是一个分层,如1是第一层,5是第五层,然后求第n个数所在分层之前的所有层的包含数字的个数。如输出6,输出4。大概就是这么个描述,代码说明的更准确。
写好的源码c#版本,提交后是成功通过的。
class Program
{
static int an;
static void Main(string[] args)
{string line = System.Console.ReadLine();
int n =System.Convert.ToInt32(line);int sum = 0;
int i;
for (i = 1; ; i++) {
sum = sum + XiaoMi(i);
if (sum > n) {
break;
}
}
System.Console.WriteLine(sum - XiaoMi(i));
System.Console.ReadLine();
}public static int XiaoMi(int n)
{
if (n > 2)
{
an = XiaoMi(n - 1) + XiaoMi(n - 2);
}
else if (n == 1)
{
an = 1;
}
else if (n == 2) {
an = 1;
}
return an;
}
2、题目是
这道题在作答的时候,给定的编译环境只有c/c++, java和javascript
以下是这道题的java源码:
public class XiaoMiTest
{
public static void main(String args[])
{
int numbers[] = {0,1,0,2,1,0,1,3,2,1,2,1};
int L = numbers.length;
/*小米测试题*/
int i;
int m = 0;
int j;
int sum = 0;
for (i = 0; i < L-1; i = m){
m++;
if(numbers[i] > numbers[i+1]){
for (j = i + 1; j < L; j++ ){
m++;
if(j < (L - 1) && numbers[j-1] < numbers[j] && numbers[j+1] < numbers[j]){
for(int q = i + 1; q < j; q++){
if (numbers[i] < numbers[j]){
sum = sum + (numbers[i] -numbers[q]);
}
else {
sum = sum + (numbers[j] -numbers[q]);
}
}
m = m-1;
break;
}
if(j == (L - 1) && numbers[j-1] < numbers[j]){
for(int q = i + 1; q < j; q++){
if (numbers[i] < numbers[j]){
sum = sum + (numbers[i] -numbers[q]);
}
else {
sum = sum + (numbers[j] -numbers[q]);
}
}
m = m-1;
break;
}
}
}
}
System.out.println(sum);
}
转载请注明出处,谢谢!