作者有话说

  这是关于程序员面试的一篇文章, 希望对你有帮助. 干了快3年了. 可以简单参考, 对比总结.虽然本人很水.

很喜欢当前做的手游项目.做的很认真.后端每个人技术都很好.但是结果都不如意.在死亡线上挣扎.

目前基本上老大都找小弟们谈谈走的事. 但是我的老大还有老大的老大希望我继续留下来. 哎, 但想出去看看.

简单的自扯一点. 我是2013年退学出来干IT. 当时做window后端相关开发. 后面从事Linux后端开发. 用过

较多语言,技术很一般.

  干了那么久有点明白了, 产品比技术重要......

那开始说正题吧, 最近1-2周面过的那些名门.帮同事面的就不写了,也比较多.都很相似.

面 一个最好的团购部门

  我的同事跳槽进去了,内推我进去. 主要是做高性能Web相关开发.这方面没有项目经验,但面试我的人很热心.

耐心的同我讲解Web框架,流程等. 其中问我一个问题是

/*
* 1. 怎么判断一个字符串是个合法的ip串.
*/

需要手写.再扯一点, 面的东西太多了就找一个有代表性的面试题吧.

主要思路是 以 ip4 为例 *.*.*.* => *.*.*.*\0 以 '.'和\0 分割成4部分处理. 比较基础主要看代码

// 是ip返回 true, 否则返回false
bool
isipv4(const char* ips) {
//记录当前计数范围[1, 3], 总的计数范围[7, 15], n记录当前量, 点的个数
int ncut = , scut = , n = , dcut = ;
char c; // 临时量记录*ips结果
// 简单判断字符串
if(!ips || !*ips) return false; do {
c = *ips;
// 非法字符直接返回false
if((c<'' || c>'') && c!='.') return false;
if(c>='' && c<='') {
n = *n + c - '';
// 排除>=256 和 00,09的情况
if((n>) || (ncut>&&n<))
return false;
}
if(c=='.' || !ips[]){ // *.*.*.*\0 以'.' 和 \0分割
n = ;
ncut = -;
++dcut;
}
} while((*++ips) && (dcut<) && (++ncut<=) && (++scut<=)); return dcut== && !*ips && ncut<= && scut<=;
}

当天面试官说语言不限. 我就用C写了个. 当时是下午状态不好.面试的很不好. 数据结构,算法,缓存,linux基本都过了.

关于数据库mysql 方面不行, 被问倒了. 主要问事务,慢查询, 索引优化. explain和mysqldumpslow 等等...

这里三面中聊的最多的是设计. 对当前公司模块的设计, 对未知模块的设计. 例如他问,我们这是个电商, 你怎么设计电商系统等等..

面的都比较实在, 手写的算法题也简单.

最后结果是, 那边经理说,有几个人都差不多再看看.

总结: 状态不好,不情愿千万别去面. 要去面一定要全力以赴.

技术方面:数据结构要可以, 对自己当前公司的架构要深刻了解. 基础知识要牢固. 数据库要好.

完整演示demo, 运行结果也在下面

#include <stdio.h>
#include <stdbool.h> // 是ip返回 true, 否则返回false
bool isipv4(const char* ips); /*
* 1. 怎么判断一个字符串是个合法的ip串.
*/
int main(int argc, char* argv[]) {
const char* ips; ips = "192.168.1.34";
printf("%s => %d\n", ips, isipv4(ips));
ips = "192.168.1.34.45";
printf("%s => %d\n", ips, isipv4(ips));
ips = "192.0.01.34";
printf("%s => %d\n", ips, isipv4(ips));
ips = "192.168.1.341";
printf("%s => %d\n", ips, isipv4(ips));
ips = "0.77.1.a4";
printf("%s => %d\n", ips, isipv4(ips)); return ;
} // 是ip返回 true, 否则返回false
bool
isipv4(const char* ips) {
//记录当前计数范围[1, 3], 总的计数范围[7, 15], n记录当前量, 点的个数
int ncut = , scut = , n = , dcut = ;
char c; // 临时量记录*ips结果
// 简单判断字符串
if(!ips || !*ips) return false; do {
c = *ips;
// 非法字符直接返回false
if((c<'' || c>'') && c!='.') return false;
if(c>='' && c<='') {
n = *n + c - '';
// 排除>=256 和 00,09的情况
if((n>) || (ncut>&&n<))
return false;
}
if(c=='.' || !ips[]){ // *.*.*.*\0 以'.' 和 \0分割
n = ;
ncut = -;
++dcut;
}
} while((*++ips) && (dcut<) && (++ncut<=) && (++scut<=)); return dcut== && !*ips && ncut<= && scut<=;
}

面 一个最好的手游工作室

  这个面试基本上刷新了我的面试记录. 都5面过了. 对我说你可以的恭喜. 这边还需要总部的一个总监面试一下. 但是等了很久,

联系了第一面那位. 那位让我再等等,估计总监忙.豪门社招真心 让你等到麻木.(但是面的很值, 都是前辈高手)

中间最关键的是二面,他们的技术总监过来了. 问的很随意,先让我手写一个完整的可运行的程序. 求加数和

/*
* 写一个完整的程序.
* 输入一个数c,输出所有 c = a+b的结果
* 例如 3 = 1 + 2, 不用输出 3 = 2 + 1 和 3 = 1 + 1 + 1
*/

再扯一点,这家公司一面很难. 中途总结: 计算机网络, 数据结构, 实战经验, 操作系统知识不好, 行业经验不足基本上 过不去.

这方面也很赞同, 基础知识决定程序员的地基打的牢不牢固. 不细说了, 还是说这个题吧

#include <stdio.h>
#include <assert.h> // 打印所有结果
void printsum(int s); /*
* 写一个完整的程序.
* 输入一个数c,输出所有 c = a+b的结果
* 例如 3 = 1 + 2, 不用输出 3 = 2 + 1 和 3 = 1 + 1 + 1
*/
int main(int argc, char* argv[]) {
int s; // 输入阶段
printf("Please input sum(need gt one):");
if(scanf("%d", &s)!= || s<=){
fprintf(stderr, "Input s:%d is error!\n", s);
return -;
} //输出阶段
printsum(s); return ;
} // 打印所有结果
void
printsum(int s) {
int i, len;
// 习惯决定素质, 谦虚就是最好的习惯和最大的装逼
assert(s>); for(i=, len = s/; i<=len; ++i)
printf("%d = %d + %d\n", s, i, s-i);
}

演示结果如下

还有

他看完后. 基本上就过了. 后面就继续聊设计了了. 模块设计, 代码调试了等 后面项目经理面, 技术专家面等. 都好难很深入. 真心觉得,

经验不足,能力不够, 外在不注意那就pass.

总结: 大公司核心部门 讲究的是运气了. 如果不是极其优秀的话. 关键优秀也是靠时间的. 姜还是老的辣.

感悟:像我这样的菜鸟还是需要多向前辈们多学习学习,争取少趟坑.

能和那些干的很久的同行交流,是一件很愉快的事. 朋友们多找机会.

这家公司很注意外在谈吐, 内在基础和聪明程度.

脸黑或实力不是撒亚人超表 我看悬...

面 一个低调的端游公司

  这家是北京为数不多的端游公司, 很低调.个人面试的很愉快. 如果实在脸黑. 已经准备加入到这家公司维护和开发更出色游戏项目.

它需要先做笔试题. 快速的花了30min做完了. 就找前台聊了. 聊得最多的是基础和调试还有就是设计. 最后应该是组长给我

定位说你技术可以,就是设计差....... 其中一个面试题如下

/*
* 写一个函数 "将整数字符串转成整数"
*/

这家公司 主要问计算机网络 和 pthread线程开发 还有C++基础聊得很多. 要求最高的就是C++基础. 上面题做出来容易. 做好不容易看下面.

/*
* 将整数字符串转成整数.通过pnum返回
* istr : 源字符串
* pnum : 返回的整数
* : 返回0表示成功, -1表示参数错误, -2表示溢出
*/
int
convert(const char* istr, int* pnum){
int num = , tmp;
char c, f = ; // f == 1表示负数 // 先检查参数错误
if(!istr || !*istr || !pnum) return -;
// 处理正负号
if((c=*istr)=='-' || c=='+'){
f = c == '-';
++istr;
} // 处理正数部分, !!是为了消除Pelles c的警告
while(!!(c=*istr++)) {
// 非法字符直接返回
if(c<'' || c>'') return -;
tmp = *num + c-'';
// 数值越界直接返回结果
if(num>tmp) return -;
num = tmp;
} *pnum = f ? -num : num;
return ;
}

很多场景,很多代码.你没躺过坑你是不会晓得行业潜规则的.没有努力和勤奋或者坚持和聪明再或者没有傻劲

你真的做不好. 真的顶不住 , 更别说抗住了. 个人也只是装逼, 也在学习成长....

演示测试代码如下

#include <stdio.h>
#include <stdlib.h> /*
* 将整数字符串转成整数.通过pnum返回
* istr : 源字符串
* pnum : 返回的整数
* : 返回0表示成功, -1表示参数错误, -2表示溢出
*/
int convert(const char* istr, int* pnum); /*
* 写一个函数 "将整数字符串转成整数"
*/
int main(int argc, char* argv[]) { const char* str = "+123456";
int num;
int flag = convert(str, &num); //输出测试结果
if(flag)
fprintf(stderr, "%s is error %d\n", str, flag);
else
printf("str:%s => %d\n", str, num); return ;
} /*
* 将整数字符串转成整数.通过pnum返回
* istr : 源字符串
* pnum : 返回的整数
* : 返回0表示成功, -1表示参数错误, -2表示溢出
*/
int
convert(const char* istr, int* pnum){
int num = , tmp;
char c, f = ; // f == 1表示负数 // 先检查参数错误
if(!istr || !*istr || !pnum) return -;
// 处理政府号
if((c=*istr)=='-' || c=='+'){
f = c == -;
++istr;
} // 处理正数部分, !!是为了消除Pelles c的警告
while(!!(c=*istr++)) {
// 非法字符直接返回
if(c<'' || c>'') return -;
tmp = *num + c-'';
// 数值越界直接返回结果
if(num>tmp) return -;
num = tmp;
} *pnum = f ? -num : num;
return ;
}

测试截图

到这里 关于三个面试基本都简单说了. 也许不是干货. 但是是最近亲身经历. 最想表达的是.
做程序员, 多重视基础. 务实沉淀是根本. 不管在那都要认真工作, 踏实处理事情.

后记 

  到最后了.很希望最后是最有意义的. 心灵鸡汤能帮到你. 让你觉得最值.

1. 程序员对工资的看法, 假如你8K, 和你相似的是18k. 在北京一年下来比你多10万, 10年也就是100万. 在北京100万能干什么呢?

  我所想表达的是 (以Dota举例) 程序员不是后期, 需要疯狂打钱, 他是中单带节奏的. 一定要找到自己的节奏, 带起节奏

2.  程序员如何提升技术,  务实谦虚, 好学好问善于交流, 认真有担当, 关键时刻要顶住.

(纯属个人扯淡, 欢迎交流打脸, 错误是难免的,指出就会改正)

以上是我最近面试几次的感悟, 希望能帮助到大家, 互相思索,共同提高.拜~~~ , 欢迎交流推荐.

C基础 北京大公司面试简单总结的更多相关文章

  1. 大公司面试经典数据结构与算法题C#/Java解答

    几个大公司(IBM.MicroSoft and so on)面试经典数据结构与算法题C#解答 1.链表反转 我想到了两种比较简单的方法 第一种是需要开一个新的链表,将原链表的元素从后到前的插入到新链表 ...

  2. JAVA集合类(大公司面试喜欢问的)

     分类: 核心JAVA(11)  版权声明:本文为博主原创文章,未经博主允许不得转载. 看了一些所谓大公司的Java面试问题,发现对于JAVA集合类的使用都比较看重似的,而自己在这方面还真的是所真甚少 ...

  3. 北京大公司:你是熟悉Map集合吗?

    <对线面试官>系列目前已经连载30篇啦,这是一个讲人话面试系列 [对线面试官]Java注解 [对线面试官]Java泛型 [对线面试官] Java NIO [对线面试官]Java反射 &am ...

  4. 北京大公司二面:了解Redis持久化机制吗?

    今日总结 Redis持久化机制:RDB和AOF RDB持久化:定时任务,BGSAVE命令 fork一个子进程生成RDB文件(二进制) AOF持久化:根据配置将写命令存储至日志文件中,顺序写&& ...

  5. FPGA大公司面试笔试数电部分,看看你会多少

    1:什么是同步逻辑和异步逻辑?(汉王) 同步逻辑是时钟之间有固定的因果关系.异步逻辑是各时钟之间没有固定的因果关系. 答案应该与上面问题一致 [补充]:同步时序逻辑电路的特点:各触发器的时钟端全部连接 ...

  6. 反省在北京某S2B2C电商小型公司面试时掉链子的问题

    昨天,参与北京一家公司面试时,不知道为什么,错了很多题,这些题在该家公司之前已经被问很多次了,当天精神恍惚的没答上来或答错,被问到数据库优化和乐观锁的问题,首先我谈到了存储引擎底层的数据结构 B树/B ...

  7. [转载] JAVA面试题和项目面试核心要点精华总结(想进大公司必看)

    JAVA面试题和项目面试核心要点精华总结(想进大公司必看) JAVA面试题和项目面试核心要点精华总结(想进大公司必看)

  8. 北京某大公司:SpringBean生命周期

    <对线面试官>系列目前已经连载25篇啦!有深度风趣的系列! [对线面试官]Java注解 [对线面试官]Java泛型 [对线面试官] Java NIO [对线面试官]Java反射 & ...

  9. 2015年校园招聘12家IT公司面试体验

    背景 2015年注定是一个不平凡的年头,作为一个应届毕业生,我也算是经历了工作上的大起大落.下面我先简单讲述一下自己的遭遇,然后根据自己亲身的面试经历,从一个学生的角度去谈谈自己对面试过的公司的一些看 ...

随机推荐

  1. Android 定时器TimerTask 简单使用

    Android平台中需要反复按周期执行方法可以使用Java上自带的TimerTask类,TimerTask相对于Thread来说对于资源 消耗的更低,除了使用Android自带的AlarmManage ...

  2. VS2015+win10+opencv3.0整个安装过程

    LZ最近换了台新台式电脑,开始下载新VS软件,话说软件平台越新越好用,一看网上已经有VS2015版本,果断就去官网下载. 1.安装VS操作 官方网的链接如下:https://www.visualstu ...

  3. 支撑5亿用户、1.5亿活跃用户的Twitter最新架构详解及相关实现

    如果你对项目管理.系统架构有兴趣,请加微信订阅号"softjg",加入这个PM.架构师的大家庭 摘要:Twitter出道之初只是个奋斗在RoR上的小站点,而如今已拥有1.5亿的活跃 ...

  4. NFS服务器

    NFS是网络文件系统(Network File System)的简称,可实现在多种网络上共享和装配远程文件系统.最大的功能是通过网络,让不同操作系统的计算机共享数据,所以它可以看成一个文件服务器. 1 ...

  5. Jquery 对象与 DOM对象的相互转换

    在做 web 开发时,经常会用到 jquery 和 dom 对象, 有时候需要在这两个对象间进行切换. Jquery 对象 就是通过jQuery包装DOM对象后产生的对象.jQuery对象是jQuer ...

  6. nginx 配置.json文件直接访问

    不要弹出下载 配置nginx.conf http { include mime.types; default_type application/json;

  7. No.003 Longest Substring Without Repeating Characters

    Longest Substring Without Repeating Characters Total Accepted: 167158 Total Submissions: 735821 Diff ...

  8. 《App研发录》知识点汇总

    原文链接:http://www.jianshu.com/p/fc8c4638937e <App研发录>这部书是包建强写的,说来也巧,在读这边书之前在看池建强的<Mac 人生元编程&g ...

  9. 把jqmobi 變成jQuery 的插件 從此使用jQuery

    因為項目的要求,需要用到jQuery 的一些插件 ,而我又是用jqmobi的....o(╯□╰)o 看看文檔.....把jqmobi  變成jQuery的插件  問題就解決了 O(∩_∩)O哈哈~ 官 ...

  10. WF4 持久化 <第四篇>

    一.基础示例 WF4 默认支持SQLServer的持续化,首先要执行目录C:\Windows\Microsoft.NET\Framework\v4.0.30319\SQL\en下的脚本: SqlPer ...