INTERVIEW #2
吐槽下ZZ的面试安排:面试时间12:30不说了,周围没有饭店,中午就没吃饭。。。不像其他公司给每个人安排不同的面试时间,这样可以节约大家的时间,SPDB是把一大批人都安排在了12:30,而且面试是5个面试官对一个人,生生地把可以并行的工作给整废了,大部分时间都浪费在了无意义的等待上。
一、机试
50min三道题,考察地很基础,基本之前都练过。利用的是华科的OJ:http://hustoj.com/oj/,IDE有Dev-C++、Eclipse、PyCharm,Dev-C++没太用过,所以调试得很慢很慢。。。
1、十进制转二进制(http://acm.hdu.edu.cn/showproblem.php?pid=2051)
“除基取余,逆序排列”。每次将要转换的数除以基数Q,将余数作为低位存储直到商为0,将所有位由高到低输出即可。
#define _CRT_SECURE_NO_WARNINGS #include <cstdio> int main()
{
int n;
while (scanf("%d", &n) != EOF)
{
int len = , num[];
do {
num[len++] = n % ;
n /= ;
} while (n);
for (int i = len - ; i >= ; i--)
printf("%d", num[i]);
printf("\n");
} return ;
}
之所以用do...while循环,是因为如果输入为0,用while会直接跳出循环,结果出错。
2、求出200以内所有3的倍数的数字和
没啥好说的。
#define _CRT_SECURE_NO_WARNINGS #include <cstdio> int main()
{
int sum = ;
for (int i = ; i < ; i++)
{
if (!(i % ))
{
sum += i;
}
} printf("%d\n", sum); return ;
}
3、质因子分解(https://pintia.cn/problem-sets/994805342720868352/problems/994805415005503488)
这题寒假练过,不过机考时候忘了,素数表打的好像有问题。。。幸亏测试数据弱,就手工写了一个数组存了前面20个素数,结果AC了。。。
- 如果一个正整数n是一个合数,那么它的因子必然是在$\sqrt n$左右两侧成对出现;
- 推广到质因子,如果n存在[2,n]内的质因子,那么这些质因子要么全部小于等于$\sqrt n$,要么只有一个大于$\sqrt n$,其余都小于等于$\sqrt n$。
所以算法是:
1)枚举1~$\sqrt n$内的所有质因子,判断其是否是n的因子;
2)如果1)结束后$n>1$,那么其必然有且仅有一个大于$\sqrt n$的质因子,记录该因子;
3)输入是1要特判。
#define _CRT_SECURE_NO_WARNINGS #include <cstdio>
#include <cmath> const int maxn = + ; //如果是int范围,数组开10足够了,
//因为2*3*5*7*11*13*17*19*23*29就超过int了,所以我手工写一个数组也足够了。。。
struct fac {
int x;
int cnt; //质因子x的个数
}fac[]; bool isPrime(int a)
{
if ( == a)
return false; int sqr = sqrt(1.0*a);
for (int i = ; i <= sqr; i++)
{
if (!(a % i))
return false;
}
return true;
} int prime[maxn], num = ;
//打素数表
void primeTable()
{
for (int i = ; i < maxn; i++)
{
if (isPrime(i))
{
prime[num++] = i;
}
}
} int main()
{
primeTable(); //记得写,我好像没写这句。。。 long long n;
int diffFacNum = ; //n的不同质因子个数
scanf("%lld", &n);
printf("%lld=", n); if ( == n) //特判1
printf(""); else
{
int sqr = sqrt(1.0*n); //枚举2~sqrt(n)的质因子
for (int i = ; prime[i] <= sqr; i++)
{
if (n % prime[i] == ) //如果该质因子是n的因子
{
fac[diffFacNum].x = prime[i];
fac[diffFacNum].cnt = ;
//计算该质因子的个数
while (n % prime[i] == )
{
fac[diffFacNum].cnt++;
n /= prime[i];
}
diffFacNum++;
} if ( == n)
break;
} //必有一个大于sqrt(n)的质因子
if (n != )
{
fac[diffFacNum].x = n;
fac[diffFacNum++].cnt = ;
} for (int i = ; i < diffFacNum; i++)
{
if (i > )
printf("*"); printf("%d", fac[i].x);
if (fac[i].cnt > )
{
printf("^%d", fac[i].cnt);
}
} } return ;
}
二、面试
面试期间也被问到了一道题:
大致意思就是有一个正整数n,找出一个比n大且每位数字之和=n的每位数字之和的最小数,比如输入050,那么输出104。
我开始的思路是从n开始向上枚举,直到找到满足要求的数;
其实更优的解法是:对于在050~099之间的数根本不用考虑,因为必然不满足每位数字之和=n的每位数字之和,这样可以提高效率。
三、其它
1、语言:Java多态、C的数据类型;
2、数据结构:链表是否有环(烂大街了);
3、操作系统:进程状态及转换、进程线程区别。
INTERVIEW #2的更多相关文章
- Pramp mock interview (4th practice): Matrix Spiral Print
March 16, 2016 Problem statement:Given a 2D array (matrix) named M, print all items of M in a spiral ...
- WCF学习系列二---【WCF Interview Questions – Part 2 翻译系列】
http://www.topwcftutorials.net/2012/09/wcf-faqs-part2.html WCF Interview Questions – Part 2 This WCF ...
- WCF学习系列一【WCF Interview Questions-Part 1 翻译系列】
http://www.topwcftutorials.net/2012/08/wcf-faqs-part1.html WCF Interview Questions – Part 1 This WCF ...
- Amazon Interview | Set 27
Amazon Interview | Set 27 Hi, I was recently interviewed for SDE1 position for Amazon and got select ...
- Java Swing interview
http://www.careerride.com/Swing-AWT-Interview-Questions.aspx Swing interview questions and answers ...
- Pramp - mock interview experience
Pramp - mock interview experience February 23, 2016 Read the article today from hackerRank blog on ...
- 【Codeforces 738A】Interview with Oleg
http://codeforces.com/contest/738/problem/A Polycarp has interviewed Oleg and has written the interv ...
- [译]Node.js Interview Questions and Answers (2017 Edition)
原文 Node.js Interview Questions for 2017 什么是error-first callback? 如何避免无止境的callback? 什么是Promises? 用什么工 ...
- WCF学习系列三--【WCF Interview Questions – Part 3 翻译系列】
http://www.topwcftutorials.net/2012/10/wcf-faqs-part3.html WCF Interview Questions – Part 3 This WCF ...
- WCF学习系列四--【WCF Interview Questions – Part 4 翻译系列】
WCF Interview Questions – Part 4 This WCF service tutorial is part-4 in series of WCF Interview Qu ...
随机推荐
- php--phpstudy更新数据库版本后,无法一键启动
只需输入以下命令即可: sc delete mysql
- javascript 入门 之 bootstrap/bootstrap-table 安装方法
也和select2一样,可以有三种方法 1.远程调用CDN 2.用bower安装 3.下载 时间原因,暂时先讲第二种,其余两种,以后完善 1.进入根目录,执行bower install bootstr ...
- Linux 压缩备份篇(一 压缩与解压缩)
.Z compress程序压缩的档案 .bz2 bzip2程序压缩的档案 .gz gzip程序压缩的档案 .t ...
- template_homepage
homepage用到的方法 使用 {% for ... in ...%} 加 {% endfor %} 实现循环结构 举例: {% for post in posts %} <p style ...
- 对称加密算法在C#中的踩坑日常
前言 有幸接触了一下传说中的对称加密算法3DES 感觉这些加密算法与我的工作是想去甚远的,一般没什么机会接触这些东西 今次了解了一下3DES这个对称算法 原理算不上明白,算是踩了C#中的一些坑吧 C# ...
- leetcode Perform String Shifts
Perform String Shifts You are given a string s containing lowercase English letters, and a matrix sh ...
- tf.nn.depthwise_conv2d 卷积
tf.nn.depthwise_conv2d( input, filter, strides, padding, rate=None, name=None, data_format=None ) 参数 ...
- classpath和环境变量设置(转)
classpath和环境变量设置(转) 在没有设置环境变量之前,我们可以通过直接在应用程序中加带相关信息来运行我们 的程序.比如,我们可以这样开始运行一个java程序: C:\jdk1.3.1\bin ...
- Continue 和 Break
1.什么是continue和break continue:继续的.持续的 break:冲断的.折断的 作用:用于终止循环体,主要用于switch条件语句和循环体条件语句(for.while.do-wh ...
- JavaScript中的作用域和作用域链(边学边写)[看着别人的博客纯手敲]
作用域是JavaScript最重要的概念之一,想要学好JavaScript就需要理解JavaScript作用域和作用域的工作原理.今天这篇文章对JavaScript作用域和作用域链简单的介绍,希望能帮 ...