Son of former athletes, father was once an Asian record holder in the pole vault, mother a high jumper, Zhang began to compete on the national track and field circuit as a teenager in 2004, setting bests of 10.80 seconds for the 100 metres and 21.53 seconds for the 200 metres. In 2005 he ran bests of 10.53 and 21.10 seconds in the sprints in his first international meeting in Tula, Russia. He placed in the top three in both events at the Chinese High School Games and came fifth over 200 m at the 2005 Chinese National Games. Zhang trained in the United States in early 2006 and later that year he won the Chinese junior title in the 200 m and was a semi-finalist in the event at the 2006 World Junior Championships in Athletics held in Beijing. In his final year of junior competition in 2007 he established himself both nationally and internationally. He won his first national title in August, winning the 100 m at the Chinese Athletics Championships. Two medals came at the 2007 Summer Universiade, where he won the silver medal in the 100 m behind Britain's Simeon Williamson and also took the bronze medal in the 4×100 metres relay. He ran a 100 m personal best of 10.27 seconds at the Shanghai Golden Grand Prix and closed the year with a win at the China City Games. In 2008 he improved his 100 m best to 10.23 at the Good Luck Beijing Olympic test event. He shared in a Chinese record with the 4×100 m relay team in June, clocking a time of 38.81 seconds. Zhang represented China at the 2008 Summer Olympics in Beijing, racing in the heats of the 200 m. He also competed in the 4 × 100 m relay together with Hu Kai, Wen Yongyi and Lu Bin. Their time of 39.13 seconds in their qualification heat was enough to reach the final, but there they were disqualified and placed last. At the national championships in October he failed to defend his 100 m title, coming runner-up to Liang Jiahong.
Asian title
At the 11th Chinese National Games in 2009 he was runner-up in the 100 m behind Lu Bin and won the relay bronze medal for Beijing alongside Xing Yanan. Despite being beaten nationally, he saved his best 100 m run of the season for the 2009 Asian Athletics Championships – Lu was not selected for the event and he outperformed Japan's Naoki Tsukahara to win the regional title with a run of 10.28 seconds. A team of Guo Fan, Liang Jiahong, Su Bingtian and Zhang narrowly finished second to Japan in the relay. Zhang's 2010 season was relatively low-profile: he placed fifth in the 60 metres at the 2010 Asian Indoor Athletics Championships but was out of the top three of the 100 and 200 m at the national championships. He rebounded in 2011, running a personal best of 10.21 seconds as 100 m runner-up at the national championships and taking his first Chinese 200 m title in best of 20.64 seconds. In 2012 he was the 100 m runner-up at the Chinese championships again, but had three wins on the Asian Athletics Grand Prix circuit and came fourth in the 60 m at the 2012 Asian Indoor Athletics Championships. He had much success with the Chinese relay team that year, setting national records of 38.71 seconds then 38.65 seconds in May. In his second Olympic appearance he helped the relay team to record another Chinese record of 38.38 seconds in the qualifiers. He began 2013 with two personal bests on the Chinese Indoor Grand Prix circuit, recording 6.58 seconds for the 60 metres and 20.75 seconds for the 200 m – the latter was a Chinese indoor record time.
Moscow World Championships
On August 10, 2013 Zhang won his preliminary heat in an equal personal best time of 10.04 matching the Chinese National Record. Then, on August 11, 2013 Zhang just missed out on qualifying for the final, while clocking a new Chinese National Record of 10.00. Zhang officially retired from athletics after the 2017 National Games of China.