网易CC研发工程师 笔试题2016-04-15

题目:

1.判断一个数是否是3的幂。  
2.判断一个数是否是3的幂,不用循环或递归。  
3.正则表达式用来匹配电话号码。  
例:(020) 12345678  
020-12345678  
还有一题正则表达式判断是否可以匹配到cc.163.com。  
4.浏览器输入一个url然后都发生了什么?  
5.输入年月日时分秒,给出下一秒的时间,如2004年12月31日23时59分59秒,输出2005年1月1日0时0分0秒。  
void nextSecond(int *nYear,int *nMonth,int *nDate,int *nHour,int *nMinute,int *nSecond);  
6.数据库中有表Person,保存ID和Email两列信息,用select语句找出重复的Email。  
7.将0~3999之间的十进制数字转换成罗马数字表示。(I,V,X,D,L,C,M)  
8.输入一个整数,判断从0到该整数的二进制数分别有多少个1.返回一个数组。  
9.编程题:实现String类的构造函数,拷贝构造函数,析构函数和赋值(等号重载)函数。  
10.编程题:每一行输入三个字符串,判断第三个字符串中字符出现的顺序是否符合第一第二个字符串。如: abc def abdefc  
11.填空题:int (*ptr)()中ptr是?  
12.填空题:32位计算机中int a[3][4],问sizeof(a)=?  
13.给出11个数:1,2,12,8,9,10,4,5,6,7,11,求平衡二叉树是?  
14.填空题:栈和队列有什么区别?  
15.判断一个float类型变量x是不是为0的表达式?

 

粗略的看了下,15个题,差不多能做一般,算法题,难度一般,正则表达式匹配的没接触我,没有思绪。数据库的题很基础,可是也不记得了。0.0

题解:

2.这是leetcode 326. Power of Three的一道题,不用循环和递归。

ceil(x)返回不小于x的最小整数值(然后转换为double型)。

floor(x)返回不大于x的最大整数值。

round(x)返回x的四舍五入整数值。

#include "iostream"
#include "math.h"
using namespace std;

int main()
{
    while (true)
    {
        int n;
        cin >> n;
        double ans = log(n) / log(3);
        if (floor(ans) == ceil(ans))
            cout << "YES"<<endl;
        else
            cout << "NO"<<endl;
        //abs(ans - round(ans)) < 1e-10    也可
    }    
}

如果是判断2,4,可用移位操作,右移>>1.

或者,2的n次方,2进制中必然只有一个1,且不在最右位,n&(n-1) ==0

 

 

4.以下是一个大概流程:

  1. 浏览器向DNS服务器查找输入URL对应的IP地址。
  2. DNS服务器返回网站的IP地址。
  3. 浏览器根据IP地址与目标web服务器在80端口上建立TCP连接
  4. 浏览器获取请求页面的html代码。
  5. 浏览器在显示窗口内渲染HTML。
  6. 窗口关闭时,浏览器终止与服务器的连接。

这其中最有趣的是第1步和第2步(域名解析)。我们输入的网址(域名)是IP地址的一个别名, 在一个DNS内,一个域名对应一个IP地址。域名系统(DNS) 的工作就是将域名与它的IP地址对应起来。DNS是分布式的,同时也是具有层级关系的。

一个域名服务器虽然只记录一个小的子网内的主机名和IP地址, 但所有的域名服务器联合起来工作,就能将全网内的域名与它们的IP地址对应起来。 这也就意味着,如果一个域名服务器无法找到某个请求域名所对应的IP地址, 它就会向其它的域名服务器发出请求进行寻找。

posted @ 2016-07-04 13:51  SeeKHit  阅读(596)  评论(0编辑  收藏  举报